diff options
author | jamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-20 19:25:48 +0000 |
---|---|---|
committer | jamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-20 19:25:48 +0000 |
commit | 1ce1597337ec9459598cc84a6bc3831c2ea3dfac (patch) | |
tree | 348d72c015790f799959ab9e958d8254c705af5a /extensions/browser/extension_web_contents_observer.h | |
parent | 998e64060cece98794221895e561970be9a248d0 (diff) | |
download | chromium_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.h | 61 |
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_ |