| Index: extensions/browser/guest_view/extension_options/extension_options_guest.cc
|
| diff --git a/chrome/browser/guest_view/extension_options/extension_options_guest.cc b/extensions/browser/guest_view/extension_options/extension_options_guest.cc
|
| similarity index 81%
|
| rename from chrome/browser/guest_view/extension_options/extension_options_guest.cc
|
| rename to extensions/browser/guest_view/extension_options/extension_options_guest.cc
|
| index 4df1bcc4d534ba907d6a6824f203a0730c20c84a..a9fc706dd1765c17dd38c20c6622bf959eaec202 100644
|
| --- a/chrome/browser/guest_view/extension_options/extension_options_guest.cc
|
| +++ b/extensions/browser/guest_view/extension_options/extension_options_guest.cc
|
| @@ -2,27 +2,21 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "chrome/browser/guest_view/extension_options/extension_options_guest.h"
|
| +#include "extensions/browser/guest_view/extension_options/extension_options_guest.h"
|
|
|
| #include "base/values.h"
|
| -#include "chrome/browser/extensions/chrome_extension_web_contents_observer.h"
|
| -#include "chrome/browser/extensions/extension_tab_util.h"
|
| -#include "chrome/browser/guest_view/extension_options/extension_options_constants.h"
|
| -#include "chrome/browser/profiles/profile.h"
|
| -#include "chrome/browser/renderer_context_menu/render_view_context_menu.h"
|
| -#include "chrome/browser/ui/browser.h"
|
| -#include "chrome/browser/ui/browser_finder.h"
|
| -#include "chrome/browser/ui/browser_window.h"
|
| -#include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| -#include "chrome/common/extensions/api/extension_options_internal.h"
|
| #include "components/crx_file/id_util.h"
|
| -#include "components/renderer_context_menu/context_menu_delegate.h"
|
| #include "content/public/browser/render_process_host.h"
|
| #include "content/public/browser/site_instance.h"
|
| #include "content/public/browser/web_contents.h"
|
| +#include "extensions/browser/api/extensions_api_client.h"
|
| #include "extensions/browser/extension_function_dispatcher.h"
|
| #include "extensions/browser/extension_registry.h"
|
| +#include "extensions/browser/extension_web_contents_observer.h"
|
| +#include "extensions/browser/guest_view/extension_options/extension_options_constants.h"
|
| +#include "extensions/browser/guest_view/extension_options/extension_options_guest_delegate.h"
|
| #include "extensions/browser/guest_view/guest_view_manager.h"
|
| +#include "extensions/common/api/extension_options_internal.h"
|
| #include "extensions/common/constants.h"
|
| #include "extensions/common/extension.h"
|
| #include "extensions/common/extension_messages.h"
|
| @@ -33,7 +27,7 @@
|
| #include "ipc/ipc_message_macros.h"
|
|
|
| using content::WebContents;
|
| -using namespace extensions::api;
|
| +using namespace extensions::core_api;
|
|
|
| // static
|
| const char ExtensionOptionsGuest::Type[] = "extensionoptions";
|
| @@ -41,7 +35,10 @@ const char ExtensionOptionsGuest::Type[] = "extensionoptions";
|
| ExtensionOptionsGuest::ExtensionOptionsGuest(
|
| content::BrowserContext* browser_context,
|
| int guest_instance_id)
|
| - : GuestView<ExtensionOptionsGuest>(browser_context, guest_instance_id) {
|
| + : GuestView<ExtensionOptionsGuest>(browser_context, guest_instance_id),
|
| + extension_options_guest_delegate_(
|
| + extensions::ExtensionsAPIClient::Get()
|
| + ->CreateExtensionOptionsGuestDelegate()) {
|
| }
|
|
|
| ExtensionOptionsGuest::~ExtensionOptionsGuest() {
|
| @@ -117,15 +114,16 @@ void ExtensionOptionsGuest::DidAttachToEmbedder() {
|
| void ExtensionOptionsGuest::DidInitialize() {
|
| extension_function_dispatcher_.reset(
|
| new extensions::ExtensionFunctionDispatcher(browser_context(), this));
|
| - extensions::ChromeExtensionWebContentsObserver::CreateForWebContents(
|
| - web_contents());
|
| + if (extension_options_guest_delegate_) {
|
| + extension_options_guest_delegate_->CreateChromeExtensionWebContentsObserver(
|
| + web_contents());
|
| + }
|
| }
|
|
|
| void ExtensionOptionsGuest::DidStopLoading() {
|
| scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue());
|
| DispatchEventToEmbedder(new extensions::GuestViewBase::Event(
|
| - extensions::api::extension_options_internal::OnLoad::kEventName,
|
| - args.Pass()));
|
| + extension_options_internal::OnLoad::kEventName, args.Pass()));
|
| }
|
|
|
| const char* ExtensionOptionsGuest::GetAPINamespace() const {
|
| @@ -159,15 +157,16 @@ content::WebContents* ExtensionOptionsGuest::GetAssociatedWebContents() const {
|
| content::WebContents* ExtensionOptionsGuest::OpenURLFromTab(
|
| content::WebContents* source,
|
| const content::OpenURLParams& params) {
|
| - Browser* browser =
|
| - chrome::FindBrowserWithWebContents(embedder_web_contents());
|
| + if (!extension_options_guest_delegate_)
|
| + return NULL;
|
|
|
| // Don't allow external URLs with the CURRENT_TAB disposition be opened in
|
| // this guest view, change the disposition to NEW_FOREGROUND_TAB.
|
| if ((!params.url.SchemeIs(extensions::kExtensionScheme) ||
|
| params.url.host() != options_page_.host()) &&
|
| params.disposition == CURRENT_TAB) {
|
| - return browser->OpenURL(
|
| + return extension_options_guest_delegate_->OpenURLInNewTab(
|
| + embedder_web_contents(),
|
| content::OpenURLParams(params.url,
|
| params.referrer,
|
| params.frame_tree_node_id,
|
| @@ -175,7 +174,8 @@ content::WebContents* ExtensionOptionsGuest::OpenURLFromTab(
|
| params.transition,
|
| params.is_renderer_initiated));
|
| }
|
| - return browser->OpenURL(params);
|
| + return extension_options_guest_delegate_->OpenURLInNewTab(
|
| + embedder_web_contents(), params);
|
| }
|
|
|
| void ExtensionOptionsGuest::CloseContents(content::WebContents* source) {
|
| @@ -186,14 +186,11 @@ void ExtensionOptionsGuest::CloseContents(content::WebContents* source) {
|
|
|
| bool ExtensionOptionsGuest::HandleContextMenu(
|
| const content::ContextMenuParams& params) {
|
| - ContextMenuDelegate* menu_delegate =
|
| - ContextMenuDelegate::FromWebContents(web_contents());
|
| - DCHECK(menu_delegate);
|
| + if (!extension_options_guest_delegate_)
|
| + return false;
|
|
|
| - scoped_ptr<RenderViewContextMenu> menu =
|
| - menu_delegate->BuildMenu(web_contents(), params);
|
| - menu_delegate->ShowMenu(menu.Pass());
|
| - return true;
|
| + return extension_options_guest_delegate_->HandleContextMenu(web_contents(),
|
| + params);
|
| }
|
|
|
| bool ExtensionOptionsGuest::ShouldCreateWebContents(
|
| @@ -209,16 +206,17 @@ bool ExtensionOptionsGuest::ShouldCreateWebContents(
|
| // external links to be opened in a new tab, not in a new guest view.
|
| // Therefore we just open the URL in a new tab, and since we aren't handling
|
| // the new web contents, we return false.
|
| - Browser* browser =
|
| - chrome::FindBrowserWithWebContents(embedder_web_contents());
|
| - content::OpenURLParams params(target_url,
|
| - content::Referrer(),
|
| - NEW_FOREGROUND_TAB,
|
| - content::PAGE_TRANSITION_LINK,
|
| - false);
|
| - browser->OpenURL(params);
|
| // TODO(ericzeng): Open the tab in the background if the click was a
|
| // ctrl-click or middle mouse button click
|
| + if (extension_options_guest_delegate_) {
|
| + extension_options_guest_delegate_->OpenURLInNewTab(
|
| + embedder_web_contents(),
|
| + content::OpenURLParams(target_url,
|
| + content::Referrer(),
|
| + NEW_FOREGROUND_TAB,
|
| + content::PAGE_TRANSITION_LINK,
|
| + false));
|
| + }
|
| return false;
|
| }
|
|
|
| @@ -233,8 +231,8 @@ bool ExtensionOptionsGuest::OnMessageReceived(const IPC::Message& message) {
|
|
|
| void ExtensionOptionsGuest::OnRequest(
|
| const ExtensionHostMsg_Request_Params& params) {
|
| - extension_function_dispatcher_->Dispatch(
|
| - params, web_contents()->GetRenderViewHost());
|
| + extension_function_dispatcher_->Dispatch(params,
|
| + web_contents()->GetRenderViewHost());
|
| }
|
|
|
| void ExtensionOptionsGuest::SetUpAutoSize() {
|
|
|