[Sync] Add support for enabling/disabling an extension before it's installed

Make Enable/DisableExtension handle non-installed extensions gracefully.

Make DisableExtension handle terminated extensions.

Make ProcessSyncData enable/disable an extension regardless of whether
it's already installed.

BUG=72659
TEST=


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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@83571 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index 1e67410..55f1f47 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -3598,16 +3598,18 @@
   ExtensionSyncData extension_sync_data;
   extension_sync_data.id = good_crx;
   extension_sync_data.update_url = GURL("http://www.google.com");
-  extension_sync_data.enabled = true;
+  extension_sync_data.enabled = false;
   extension_sync_data.incognito_enabled = true;
   {
     scoped_ptr<Version> version(Version::GetVersionFromString("1.2.3.4"));
     extension_sync_data.version = *version;
   }
 
+  EXPECT_TRUE(service_->IsExtensionEnabled(good_crx));
   EXPECT_FALSE(service_->IsIncognitoEnabled(good_crx));
   service_->ProcessSyncData(extension_sync_data, &AllExtensions);
   EXPECT_TRUE(service_->updater()->WillCheckSoon());
+  EXPECT_FALSE(service_->IsExtensionEnabled(good_crx));
   EXPECT_TRUE(service_->IsIncognitoEnabled(good_crx));
 
   PendingExtensionInfo info;