/// <summary>
 /// Called to check if a process is a valid pepper plugin to attach to.
 /// </summary>
 /// <param name="proc">Contains information about the process in question.</param>
 /// <param name="mainChromeFlags">Flags on the main Chrome process.</param>
 /// <returns>True if we should attach to the process.</returns>
 protected override bool IsPluginProcess(ProcessInfo proc, string mainChromeFlags)
 {
   StringComparison ignoreCase = StringComparison.InvariantCultureIgnoreCase;
   string identifierFlagTarget =
           string.Format(Strings.PepperProcessPluginFlagFormat, pluginAssembly_);
   return proc.Name.Equals(Strings.ChromeProcessName, ignoreCase) &&
          proc.CommandLine.Contains(Strings.ChromeRendererFlag, ignoreCase) &&
          proc.CommandLine.Contains(identifierFlagTarget, ignoreCase);
 }
    public void IsNaClPluginProcessTest()
    {
      PluginDebuggerGDB_Accessor target = new PluginDebuggerGDB_Accessor(dte_, properties_);

      ProcessInfo badProc = new ProcessInfo(
          1, 1, string.Empty, Strings.ChromeRendererFlag, Strings.NaClProcessName);
      ProcessInfo goodProc = new ProcessInfo(
          1, 1, string.Empty, Strings.NaClLoaderFlag, Strings.NaClProcessName);

      string goodMainChromeFlags = Strings.NaClDebugFlag;
      string badMainChromeFlags = string.Format(
          Strings.PepperProcessPluginFlagFormat, target.targetNexe_);

      Assert.IsTrue(target.IsPluginProcess(goodProc, goodMainChromeFlags));
      Assert.IsFalse(target.IsPluginProcess(goodProc, badMainChromeFlags));
      Assert.IsFalse(target.IsPluginProcess(badProc, goodMainChromeFlags));
    }
 /// <summary>
 /// Called to check if a process is a valid plugin to attach to.
 /// </summary>
 /// <param name="proc">Contains information about the process in question.</param>
 /// <param name="mainChromeFlags">Flags on the main Chrome process.</param>
 /// <returns>True if we should attach to the process.</returns>
 protected virtual bool IsPluginProcess(ProcessInfo proc, string mainChromeFlags)
 {
   throw new InvalidOperationException();
 }
    public void IsPepperPluginProcessTest()
    {
      PluginDebuggerVS_Accessor target = new PluginDebuggerVS_Accessor(dte_, properties_);

      string identifierFlagTarget =
          string.Format(Strings.PepperProcessPluginFlagFormat, target.pluginAssembly_);
      string goodFlags = string.Concat(Strings.ChromeRendererFlag, ' ', identifierFlagTarget);

      ProcessInfo badProc1 = new ProcessInfo(
          1, 1, string.Empty, goodFlags, Strings.NaClProcessName);
      ProcessInfo badProc2 = new ProcessInfo(
          1, 1, string.Empty, Strings.NaClLoaderFlag, Strings.ChromeProcessName);
      ProcessInfo badProc3 = new ProcessInfo(
          1, 1, string.Empty, Strings.ChromeRendererFlag, Strings.ChromeProcessName);
      ProcessInfo badProc4 = new ProcessInfo(
          1, 1, string.Empty, identifierFlagTarget, Strings.ChromeProcessName);
      ProcessInfo goodProc = new ProcessInfo(
          1, 1, string.Empty, goodFlags, Strings.ChromeProcessName);

      Assert.IsTrue(target.IsPluginProcess(goodProc, string.Empty));
      Assert.IsFalse(target.IsPluginProcess(badProc1, string.Empty));
      Assert.IsFalse(target.IsPluginProcess(badProc2, string.Empty));
      Assert.IsFalse(target.IsPluginProcess(badProc3, string.Empty));
      Assert.IsFalse(target.IsPluginProcess(badProc4, string.Empty));
    }