Add support for a "split" incognito behavior for extensions.
- On by default for apps, off by default for extensions.
- Split mode means "run incognito extensions in a separate process if the user
says OK, and the two processes can only see their own profile."
- Spanning mode is what we have now, and means "run a single extension process,
but allow it to access both profiles if the user says OK."

BUG=49232
BUG=49114
TEST=extensions still work in incognito when you check "Allow in Incognito".

Review URL: http://codereview.chromium.org/3210007

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@58033 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/common/extensions/extension.h b/chrome/common/extensions/extension.h
index 66e12f2..bb4d4d5e 100644
--- a/chrome/common/extensions/extension.h
+++ b/chrome/common/extensions/extension.h
@@ -366,6 +366,7 @@
   LaunchContainer launch_container() const { return launch_container_; }
   int launch_width() const { return launch_width_; }
   int launch_height() const { return launch_height_; }
+  bool incognito_split_mode() const { return incognito_split_mode_; }
 
   // Gets the fully resolved absolute launch URL.
   GURL GetFullLaunchURL() const;
@@ -582,6 +583,10 @@
   // The omnibox keyword for this extension, or empty if there is none.
   std::string omnibox_keyword_;
 
+  // If true, a separate process will be used for the extension in incognito
+  // mode.
+  bool incognito_split_mode_;
+
   // Runtime data:
 
   // True if the background page is ready.