Re-land 42631: The problem was that notifications aren't implemented on linux/views yet.

[email protected]

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42671 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/extensions/extension_function_dispatcher.h b/chrome/browser/extensions/extension_function_dispatcher.h
index 18cce3b..86342cc0 100644
--- a/chrome/browser/extensions/extension_function_dispatcher.h
+++ b/chrome/browser/extensions/extension_function_dispatcher.h
@@ -77,12 +77,15 @@
   // Resets all functions to their initial implementation.
   static void ResetFunctions();
 
+  // Creates an instance for the specified RenderViewHost and URL. If the URL
+  // does not contain a valid extension, returns NULL.
+  static ExtensionFunctionDispatcher* Create(RenderViewHost* render_view_host,
+                                             Delegate* delegate,
+                                             const GURL& url);
+
   // Retrieves a vector of all EFD instances.
   static std::set<ExtensionFunctionDispatcher*>* all_instances();
 
-  ExtensionFunctionDispatcher(RenderViewHost* render_view_host,
-                              Delegate* delegate,
-                              const GURL& url);
   ~ExtensionFunctionDispatcher();
 
   Delegate* delegate() { return delegate_; }
@@ -123,6 +126,11 @@
   RenderViewHost* render_view_host() { return render_view_host_; }
 
  private:
+  ExtensionFunctionDispatcher(RenderViewHost* render_view_host,
+                              Delegate* delegate,
+                              Extension* extension,
+                              const GURL& url);
+
   // We need to keep a pointer to the profile because we use it in the dtor
   // in sending EXTENSION_FUNCTION_DISPATCHER_DESTROYED, but by that point
   // the render_view_host_ has been deleted.