summaryrefslogtreecommitdiffstats
path: root/extensions/browser/extension_web_contents_observer.h
diff options
context:
space:
mode:
authorjamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-20 19:25:48 +0000
committerjamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-20 19:25:48 +0000
commit1ce1597337ec9459598cc84a6bc3831c2ea3dfac (patch)
tree348d72c015790f799959ab9e958d8254c705af5a /extensions/browser/extension_web_contents_observer.h
parent998e64060cece98794221895e561970be9a248d0 (diff)
downloadchromium_src-1ce1597337ec9459598cc84a6bc3831c2ea3dfac.zip
chromium_src-1ce1597337ec9459598cc84a6bc3831c2ea3dfac.tar.gz
chromium_src-1ce1597337ec9459598cc84a6bc3831c2ea3dfac.tar.bz2
Split ExtensionWebContentsObserver into base and Chrome implementations
This allows app_shell to use a simplified ExtensionWebContentsObserver while Chrome maintains its more complex version. * Move ExtensionWebContentsObserver to src/extensions * Introduce ChromeExtensionWebContentsObserver * Delegate out observer creation from ExtensionHost Removing this dependency on Chrome will allow ExtensionHost to move into src/extensions and break another app_shell -> Chrome dependency. BUG=321341 TEST=browser_tests ErrorConsole* and Extension* TBR=stevenjb@chromium.org for mechanical changes to chrome/browser/chromeos TBR=msw@chromium.org for mechanical changes to chrome/browser/ui Review URL: https://codereview.chromium.org/205243004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@258372 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'extensions/browser/extension_web_contents_observer.h')
-rw-r--r--extensions/browser/extension_web_contents_observer.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/extensions/browser/extension_web_contents_observer.h b/extensions/browser/extension_web_contents_observer.h
new file mode 100644
index 0000000..a366e43
--- /dev/null
+++ b/extensions/browser/extension_web_contents_observer.h
@@ -0,0 +1,61 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef EXTENSIONS_BROWSER_EXTENSION_WEB_CONTENTS_OBSERVER_H_
+#define EXTENSIONS_BROWSER_EXTENSION_WEB_CONTENTS_OBSERVER_H_
+
+#include <string>
+
+#include "base/compiler_specific.h"
+#include "base/macros.h"
+#include "content/public/browser/web_contents_observer.h"
+
+namespace content {
+class BrowserContext;
+class RenderViewHost;
+class WebContents;
+}
+
+namespace extensions {
+class Extension;
+
+// A web contents observer used for renderer and extension processes. Grants the
+// renderer access to certain URL scheme patterns for extensions and notifies
+// the renderer that the extension was loaded.
+//
+// Extension system embedders must create an instance for every extension
+// WebContents. It must be a subclass so that creating an instance via
+// content::WebContentsUserData::CreateForWebContents() provides an object of
+// the correct type. For an example, see ChromeExtensionWebContentsObserver.
+class ExtensionWebContentsObserver : public content::WebContentsObserver {
+ protected:
+ explicit ExtensionWebContentsObserver(content::WebContents* web_contents);
+ virtual ~ExtensionWebContentsObserver();
+
+ content::BrowserContext* browser_context() { return browser_context_; }
+
+ // content::WebContentsObserver overrides.
+
+ // A subclass should invoke this method to finish extension process setup.
+ virtual void RenderViewCreated(content::RenderViewHost* render_view_host)
+ OVERRIDE;
+
+ // Returns the extension or app associated with a render view host. Returns
+ // NULL if the render view host is not for a valid extension.
+ const Extension* GetExtension(content::RenderViewHost* render_view_host);
+
+ // Returns the extension or app ID associated with a render view host. Returns
+ // the empty string if the render view host is not for a valid extension.
+ static std::string GetExtensionId(content::RenderViewHost* render_view_host);
+
+ private:
+ // The BrowserContext associated with the WebContents being observed.
+ content::BrowserContext* browser_context_;
+
+ DISALLOW_COPY_AND_ASSIGN(ExtensionWebContentsObserver);
+};
+
+} // namespace extensions
+
+#endif // EXTENSIONS_BROWSER_EXTENSION_WEB_CONTENTS_OBSERVER_H_