Implement extension:// protocol.

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@7462 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extensions_service.cc b/chrome/browser/extensions/extensions_service.cc
index 0245ce6..cd0397c 100644
--- a/chrome/browser/extensions/extensions_service.cc
+++ b/chrome/browser/extensions/extensions_service.cc
@@ -10,6 +10,7 @@
 #include "base/thread.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/common/json_value_serializer.h"
+#include "chrome/common/notification_service.h"
 
 // ExtensionsService
 
@@ -51,9 +52,12 @@
     ExtensionList* new_extensions) {
   extensions_.insert(extensions_.end(), new_extensions->begin(),
                      new_extensions->end());
-  delete new_extensions;
 
-  // TODO(aa): Notify extensions are loaded.
+  NotificationService::current()->Notify(NOTIFY_EXTENSIONS_LOADED,
+      NotificationService::AllSources(),
+      Details<ExtensionList>(new_extensions));
+
+  delete new_extensions;
 }
 
 void ExtensionsService::OnExtensionLoadError(const std::string& error) {
@@ -99,7 +103,7 @@
       continue;
     }
 
-    scoped_ptr<Extension> extension(new Extension());
+    scoped_ptr<Extension> extension(new Extension(child_path));
     if (!extension->InitFromValue(*static_cast<DictionaryValue*>(root),
                                   &error)) {
       ReportExtensionLoadError(frontend.get(), child_path.ToWStringHack(),