Refactor code to make it more testable.

There's an extant problem with external extension providers reporting
that they're ready without actually setting their ready state. This change
allows the implementer of OnExternalProviderReady() to assert that the
caller's ready state is true.

TEST=added


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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@106627 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index b23dc47..c7a2830 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -149,7 +149,7 @@
       visitor_->OnExternalExtensionFileFound(
           i->first, version.get(), i->second.second, location_);
     }
-    visitor_->OnExternalProviderReady();
+    visitor_->OnExternalProviderReady(this);
   }
 
   virtual bool HasExtension(const std::string& id) const {
@@ -172,7 +172,7 @@
     return true;
   }
 
-  virtual bool IsReady() {
+  virtual bool IsReady() const {
     return true;
   }
 
@@ -306,8 +306,10 @@
     }
   }
 
-  virtual void OnExternalProviderReady() {
-    EXPECT_TRUE(provider_->IsReady());
+  virtual void OnExternalProviderReady(
+      const ExternalExtensionProviderInterface* provider) {
+    EXPECT_EQ(provider, provider_.get());
+    EXPECT_TRUE(provider->IsReady());
   }
 
  private:
@@ -1269,7 +1271,8 @@
   // If we don't check whether the extension is loaded before we uninstall it
   // in CheckExternalUninstall, a crash will happen here because we will get or
   // dereference a NULL pointer (extension) inside UninstallExtension.
-  service_->OnExternalProviderReady();
+  MockExtensionProvider provider(NULL, Extension::EXTERNAL_REGISTRY);
+  service_->OnExternalProviderReady(&provider);
 }
 
 // Test that external extensions with incorrect IDs are not installed.
@@ -3098,7 +3101,7 @@
     provider->RemoveExtension(good_crx);
 
     loaded_.clear();
-    service_->OnExternalProviderReady();
+    service_->OnExternalProviderReady(provider);
     loop_.RunAllPending();
     ASSERT_EQ(0u, loaded_.size());
     ValidatePrefKeyCount(0);