summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authoroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-29 09:43:12 +0000
committeroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-29 09:43:12 +0000
commit0a83f14ac8f941c07617a011beba6bd8f3b63f58 (patch)
tree1fb5d1245160eb7aa140ade7c55456a774352c40 /chrome
parent108d19ac9a88192dff52a3b7a471d893d6943d24 (diff)
downloadchromium_src-0a83f14ac8f941c07617a011beba6bd8f3b63f58.zip
chromium_src-0a83f14ac8f941c07617a011beba6bd8f3b63f58.tar.gz
chromium_src-0a83f14ac8f941c07617a011beba6bd8f3b63f58.tar.bz2
1st step to C14N RendererContextMenu
* Move context_menu_delegate/renderer_view_context_menu_observer * RenderViewContextMenuProxy has been extracted from render_view_context_menu.h and moved to component directory. * Inline empty observer methods. * Reduce the use of Profile and replaced them with content::BrowserContext BUG=397320 TBR=sky@chromium.org Review URL: https://codereview.chromium.org/425493002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@286149 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/DEPS1
-rw-r--r--chrome/browser/guest_view/app_view/app_view_guest.cc2
-rw-r--r--chrome/browser/guest_view/web_view/web_view_guest.cc2
-rw-r--r--chrome/browser/printing/print_preview_context_menu_observer.h2
-rw-r--r--chrome/browser/renderer_context_menu/context_menu_delegate.cc42
-rw-r--r--chrome/browser/renderer_context_menu/context_menu_delegate.h39
-rw-r--r--chrome/browser/renderer_context_menu/render_view_context_menu.cc102
-rw-r--r--chrome/browser/renderer_context_menu/render_view_context_menu.h88
-rw-r--r--chrome/browser/renderer_context_menu/render_view_context_menu_observer.cc27
-rw-r--r--chrome/browser/renderer_context_menu/render_view_context_menu_observer.h107
-rw-r--r--chrome/browser/renderer_context_menu/spellchecker_submenu_observer.h2
-rw-r--r--chrome/browser/renderer_context_menu/spellchecker_submenu_observer_browsertest.cc4
-rw-r--r--chrome/browser/renderer_context_menu/spellchecker_submenu_observer_hunspell.cc12
-rw-r--r--chrome/browser/renderer_context_menu/spellchecker_submenu_observer_mac.cc23
-rw-r--r--chrome/browser/renderer_context_menu/spelling_menu_observer.cc66
-rw-r--r--chrome/browser/renderer_context_menu/spelling_menu_observer.h2
-rw-r--r--chrome/browser/renderer_context_menu/spelling_menu_observer_browsertest.cc22
-rw-r--r--chrome/browser/ui/cocoa/tab_contents/chrome_web_contents_view_delegate_mac.h2
-rw-r--r--chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views.h2
-rw-r--r--chrome/chrome_browser.gypi5
20 files changed, 143 insertions, 409 deletions
diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS
index 21f190f..eb351ab 100644
--- a/chrome/browser/DEPS
+++ b/chrome/browser/DEPS
@@ -47,6 +47,7 @@ include_rules = [
"+components/pref_registry",
"+components/query_parser",
"+components/rappor",
+ "+components/renderer_context_menu",
"+components/search",
"+components/search_engines",
"+components/search_provider_logos",
diff --git a/chrome/browser/guest_view/app_view/app_view_guest.cc b/chrome/browser/guest_view/app_view/app_view_guest.cc
index bd77a66..85e9d52d 100644
--- a/chrome/browser/guest_view/app_view/app_view_guest.cc
+++ b/chrome/browser/guest_view/app_view/app_view_guest.cc
@@ -9,9 +9,9 @@
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/guest_view/app_view/app_view_constants.h"
#include "chrome/browser/guest_view/guest_view_manager.h"
-#include "chrome/browser/renderer_context_menu/context_menu_delegate.h"
#include "chrome/browser/renderer_context_menu/render_view_context_menu.h"
#include "chrome/common/chrome_switches.h"
+#include "components/renderer_context_menu/context_menu_delegate.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/common/renderer_preferences.h"
#include "extensions/browser/api/app_runtime/app_runtime_api.h"
diff --git a/chrome/browser/guest_view/web_view/web_view_guest.cc b/chrome/browser/guest_view/web_view/web_view_guest.cc
index 5e1c395..a404477 100644
--- a/chrome/browser/guest_view/web_view/web_view_guest.cc
+++ b/chrome/browser/guest_view/web_view/web_view_guest.cc
@@ -20,13 +20,13 @@
#include "chrome/browser/guest_view/web_view/web_view_permission_helper.h"
#include "chrome/browser/guest_view/web_view/web_view_permission_types.h"
#include "chrome/browser/guest_view/web_view/web_view_renderer_state.h"
-#include "chrome/browser/renderer_context_menu/context_menu_delegate.h"
#include "chrome/browser/renderer_context_menu/render_view_context_menu.h"
#include "chrome/browser/ui/pdf/pdf_tab_helper.h"
#include "chrome/browser/ui/zoom/zoom_controller.h"
#include "chrome/common/chrome_version_info.h"
#include "chrome/common/extensions/chrome_extension_messages.h"
#include "chrome/common/render_messages.h"
+#include "components/renderer_context_menu/context_menu_delegate.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/child_process_security_policy.h"
#include "content/public/browser/native_web_keyboard_event.h"
diff --git a/chrome/browser/printing/print_preview_context_menu_observer.h b/chrome/browser/printing/print_preview_context_menu_observer.h
index 9b5eb57..8c05e53 100644
--- a/chrome/browser/printing/print_preview_context_menu_observer.h
+++ b/chrome/browser/printing/print_preview_context_menu_observer.h
@@ -7,7 +7,7 @@
#include "base/basictypes.h"
#include "base/compiler_specific.h"
-#include "chrome/browser/renderer_context_menu/render_view_context_menu_observer.h"
+#include "components/renderer_context_menu/render_view_context_menu_observer.h"
namespace content {
class WebContents;
diff --git a/chrome/browser/renderer_context_menu/context_menu_delegate.cc b/chrome/browser/renderer_context_menu/context_menu_delegate.cc
deleted file mode 100644
index 4a03b41..0000000
--- a/chrome/browser/renderer_context_menu/context_menu_delegate.cc
+++ /dev/null
@@ -1,42 +0,0 @@
-// 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.
-
-#include "chrome/browser/renderer_context_menu/context_menu_delegate.h"
-
-#include "content/public/browser/web_contents.h"
-
-namespace {
-
-const char kMenuDelegateUserDataKey[] = "RendererContextMenuMenuDelegate";
-
-class ContextMenuDelegateUserData : public base::SupportsUserData::Data {
- public:
- explicit ContextMenuDelegateUserData(ContextMenuDelegate* menu_delegate)
- : menu_delegate_(menu_delegate) {
- }
- virtual ~ContextMenuDelegateUserData() {}
- ContextMenuDelegate* menu_delegate() { return menu_delegate_; }
-
- private:
- ContextMenuDelegate* menu_delegate_; // not owned by us.
-};
-
-} // namespace
-
-ContextMenuDelegate::ContextMenuDelegate(content::WebContents* web_contents) {
- web_contents->SetUserData(&kMenuDelegateUserDataKey,
- new ContextMenuDelegateUserData(this));
-}
-
-ContextMenuDelegate::~ContextMenuDelegate() {
-}
-
-// static
-ContextMenuDelegate* ContextMenuDelegate::FromWebContents(
- content::WebContents* web_contents) {
- ContextMenuDelegateUserData* user_data =
- static_cast<ContextMenuDelegateUserData*>(
- web_contents->GetUserData(&kMenuDelegateUserDataKey));
- return user_data ? user_data->menu_delegate() : NULL;
-}
diff --git a/chrome/browser/renderer_context_menu/context_menu_delegate.h b/chrome/browser/renderer_context_menu/context_menu_delegate.h
deleted file mode 100644
index b6a8255..0000000
--- a/chrome/browser/renderer_context_menu/context_menu_delegate.h
+++ /dev/null
@@ -1,39 +0,0 @@
-// 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 CHROME_BROWSER_RENDERER_CONTEXT_MENU_CONTEXT_MENU_DELEGATE_H_
-#define CHROME_BROWSER_RENDERER_CONTEXT_MENU_CONTEXT_MENU_DELEGATE_H_
-
-#include "base/memory/scoped_ptr.h"
-
-class RenderViewContextMenu;
-
-namespace content {
-class WebContents;
-struct ContextMenuParams;
-}
-
-// A ContextMenuDelegate can build and show renderer context menu.
-class ContextMenuDelegate {
- public:
- explicit ContextMenuDelegate(content::WebContents* web_contents);
- virtual ~ContextMenuDelegate();
-
- static ContextMenuDelegate* FromWebContents(
- content::WebContents* web_contents);
-
- // Builds and returns a context menu for a context specified by |params|.
- // The returned value can be used to display the context menu.
- virtual scoped_ptr<RenderViewContextMenu> BuildMenu(
- content::WebContents* web_contents,
- const content::ContextMenuParams& params) = 0;
-
- // Displays the context menu.
- virtual void ShowMenu(scoped_ptr<RenderViewContextMenu> menu) = 0;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(ContextMenuDelegate);
-};
-
-#endif // CHROME_BROWSER_RENDERER_CONTEXT_MENU_CONTEXT_MENU_DELEGATE_H_
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
index 1eddc69..de8539e 100644
--- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc
+++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
@@ -69,6 +69,7 @@
#include "components/translate/core/browser/translate_download_manager.h"
#include "components/translate/core/browser/translate_manager.h"
#include "components/translate/core/browser/translate_prefs.h"
+#include "components/user_prefs/user_prefs.h"
#include "content/public/browser/child_process_security_policy.h"
#include "content/public/browser/download_manager.h"
#include "content/public/browser/download_save_info.h"
@@ -383,6 +384,11 @@ void EscapeAmpersands(base::string16* text) {
text);
}
+// Returns the preference of the profile represented by the |context|.
+PrefService* GetPrefs(content::BrowserContext* context) {
+ return user_prefs::UserPrefs::Get(context);
+}
+
} // namespace
// static
@@ -409,16 +415,15 @@ RenderViewContextMenu::RenderViewContextMenu(
source_web_contents_(WebContents::FromRenderFrameHost(render_frame_host)),
render_process_id_(render_frame_host->GetProcess()->GetID()),
render_frame_id_(render_frame_host->GetRoutingID()),
- profile_(Profile::FromBrowserContext(
- source_web_contents_->GetBrowserContext())),
+ browser_context_(source_web_contents_->GetBrowserContext()),
menu_model_(this),
- extension_items_(profile_,
+ extension_items_(browser_context_,
this,
&menu_model_,
base::Bind(MenuItemMatchesParams, params_)),
protocol_handler_submenu_model_(this),
protocol_handler_registry_(
- ProtocolHandlerRegistryFactory::GetForProfile(profile_)),
+ ProtocolHandlerRegistryFactory::GetForProfile(GetProfile())),
command_executed_(false) {
content_type_.reset(ContextMenuContentTypeFactory::Create(
source_web_contents_, params));
@@ -519,11 +524,11 @@ bool RenderViewContextMenu::MenuItemMatchesParams(
void RenderViewContextMenu::AppendAllExtensionItems() {
extension_items_.Clear();
ExtensionService* service =
- extensions::ExtensionSystem::Get(profile_)->extension_service();
+ extensions::ExtensionSystem::Get(browser_context_)->extension_service();
if (!service)
return; // In unit-tests, we may not have an ExtensionService.
- MenuManager* menu_manager = MenuManager::Get(profile_);
+ MenuManager* menu_manager = MenuManager::Get(browser_context_);
if (!menu_manager)
return;
@@ -691,6 +696,10 @@ void RenderViewContextMenu::InitMenu() {
}
}
+Profile* RenderViewContextMenu::GetProfile() {
+ return Profile::FromBrowserContext(browser_context_);
+}
+
void RenderViewContextMenu::AppendPrintPreviewItems() {
#if defined(ENABLE_FULL_PRINTING)
if (!print_preview_menu_observer_.get()) {
@@ -704,7 +713,7 @@ void RenderViewContextMenu::AppendPrintPreviewItems() {
const Extension* RenderViewContextMenu::GetExtension() const {
extensions::ExtensionSystem* system =
- extensions::ExtensionSystem::Get(profile_);
+ extensions::ExtensionSystem::Get(browser_context_);
// There is no process manager in some tests.
if (!system->process_manager())
return NULL;
@@ -749,8 +758,8 @@ WebContents* RenderViewContextMenu::GetWebContents() const {
return source_web_contents_;
}
-Profile* RenderViewContextMenu::GetProfile() const {
- return profile_;
+BrowserContext* RenderViewContextMenu::GetBrowserContext() const {
+ return browser_context_;
}
bool RenderViewContextMenu::AppendCustomItems() {
@@ -828,7 +837,7 @@ void RenderViewContextMenu::AppendImageItems() {
void RenderViewContextMenu::AppendSearchWebForImageItems() {
TemplateURLService* service =
- TemplateURLServiceFactory::GetForProfile(profile_);
+ TemplateURLServiceFactory::GetForProfile(GetProfile());
const TemplateURL* const default_provider =
service->GetDefaultSearchProvider();
if (params_.has_image_contents && default_provider &&
@@ -955,7 +964,7 @@ void RenderViewContextMenu::AppendCopyItem() {
}
void RenderViewContextMenu::AppendPrintItem() {
- if (profile_->GetPrefs()->GetBoolean(prefs::kPrintingEnabled) &&
+ if (GetPrefs(browser_context_)->GetBoolean(prefs::kPrintingEnabled) &&
(params_.media_type == WebContextMenuData::MediaTypeNone ||
params_.media_flags & WebContextMenuData::MediaCanPrint)) {
menu_model_.AddItemWithStringId(IDC_PRINT, IDS_CONTENT_CONTEXT_PRINT);
@@ -963,7 +972,7 @@ void RenderViewContextMenu::AppendPrintItem() {
}
void RenderViewContextMenu::AppendSearchProvider() {
- DCHECK(profile_);
+ DCHECK(browser_context_);
base::TrimWhitespace(params_.selection_text, base::TRIM_ALL,
&params_.selection_text);
@@ -974,9 +983,13 @@ void RenderViewContextMenu::AppendSearchProvider() {
base::ASCIIToUTF16(" "), &params_.selection_text);
AutocompleteMatch match;
- AutocompleteClassifierFactory::GetForProfile(profile_)->Classify(
- params_.selection_text, false, false,
- metrics::OmniboxEventProto::INVALID_SPEC, &match, NULL);
+ AutocompleteClassifierFactory::GetForProfile(GetProfile())
+ ->Classify(params_.selection_text,
+ false,
+ false,
+ metrics::OmniboxEventProto::INVALID_SPEC,
+ &match,
+ NULL);
selection_navigation_url_ = match.destination_url;
if (!selection_navigation_url_.is_valid())
return;
@@ -986,8 +999,8 @@ void RenderViewContextMenu::AppendSearchProvider() {
if (AutocompleteMatch::IsSearchType(match.type)) {
const TemplateURL* const default_provider =
- TemplateURLServiceFactory::GetForProfile(profile_)->
- GetDefaultSearchProvider();
+ TemplateURLServiceFactory::GetForProfile(GetProfile())
+ ->GetDefaultSearchProvider();
if (!default_provider)
return;
menu_model_.AddItem(
@@ -1112,10 +1125,12 @@ bool RenderViewContextMenu::IsCommandIdEnabled(int id) const {
return false;
}
+ PrefService* prefs = GetPrefs(browser_context_);
+
// Allow Spell Check language items on sub menu for text area context menu.
if ((id >= IDC_SPELLCHECK_LANGUAGES_FIRST) &&
(id < IDC_SPELLCHECK_LANGUAGES_LAST)) {
- return profile_->GetPrefs()->GetBoolean(prefs::kEnableContinuousSpellcheck);
+ return prefs->GetBoolean(prefs::kEnableContinuousSpellcheck);
}
// Custom items.
@@ -1136,7 +1151,7 @@ bool RenderViewContextMenu::IsCommandIdEnabled(int id) const {
}
IncognitoModePrefs::Availability incognito_avail =
- IncognitoModePrefs::GetAvailability(profile_->GetPrefs());
+ IncognitoModePrefs::GetAvailability(prefs);
switch (id) {
case IDC_BACK:
return source_web_contents_->GetController().CanGoBack();
@@ -1340,13 +1355,14 @@ bool RenderViewContextMenu::IsCommandIdEnabled(int id) const {
return !!(params_.edit_flags & WebContextMenuData::CanSelectAll);
case IDC_CONTENT_CONTEXT_OPENLINKOFFTHERECORD:
- return !profile_->IsOffTheRecord() && params_.link_url.is_valid() &&
+ return !browser_context_->IsOffTheRecord() &&
+ params_.link_url.is_valid() &&
incognito_avail != IncognitoModePrefs::DISABLED;
case IDC_PRINT:
- return profile_->GetPrefs()->GetBoolean(prefs::kPrintingEnabled) &&
- (params_.media_type == WebContextMenuData::MediaTypeNone ||
- params_.media_flags & WebContextMenuData::MediaCanPrint);
+ return prefs->GetBoolean(prefs::kPrintingEnabled) &&
+ (params_.media_type == WebContextMenuData::MediaTypeNone ||
+ params_.media_flags & WebContextMenuData::MediaCanPrint);
case IDC_CONTENT_CONTEXT_SEARCHWEBFOR:
case IDC_CONTENT_CONTEXT_GOTOURL:
@@ -1360,8 +1376,7 @@ bool RenderViewContextMenu::IsCommandIdEnabled(int id) const {
return true;
case IDC_CHECK_SPELLING_WHILE_TYPING:
- return profile_->GetPrefs()->GetBoolean(
- prefs::kEnableContinuousSpellcheck);
+ return prefs->GetBoolean(prefs::kEnableContinuousSpellcheck);
#if !defined(OS_MACOSX) && defined(OS_POSIX)
// TODO(suzhe): this should not be enabled for password fields.
@@ -1509,7 +1524,8 @@ void RenderViewContextMenu::ExecuteCommand(int id, int event_flags) {
const GURL& referrer =
params_.frame_url.is_empty() ? params_.page_url : params_.frame_url;
const GURL& url = params_.link_url;
- DownloadManager* dlm = BrowserContext::GetDownloadManager(profile_);
+ DownloadManager* dlm =
+ BrowserContext::GetDownloadManager(browser_context_);
scoped_ptr<DownloadUrlParameters> dl_params(
DownloadUrlParameters::FromWebContents(source_web_contents_, url));
dl_params->set_referrer(
@@ -1647,8 +1663,9 @@ void RenderViewContextMenu::ExecuteCommand(int id, int event_flags) {
DCHECK(platform_app);
DCHECK(platform_app->is_platform_app());
- extensions::ExtensionSystem::Get(profile_)->extension_service()->
- ReloadExtension(platform_app->id());
+ extensions::ExtensionSystem::Get(browser_context_)
+ ->extension_service()
+ ->ReloadExtension(platform_app->id());
break;
}
@@ -1657,8 +1674,8 @@ void RenderViewContextMenu::ExecuteCommand(int id, int event_flags) {
DCHECK(platform_app);
DCHECK(platform_app->is_platform_app());
- apps::AppLoadService::Get(profile_)->RestartApplication(
- platform_app->id());
+ apps::AppLoadService::Get(GetProfile())
+ ->RestartApplication(platform_app->id());
break;
}
@@ -1671,7 +1688,8 @@ void RenderViewContextMenu::ExecuteCommand(int id, int event_flags) {
if (!print_view_manager)
break;
- if (profile_->GetPrefs()->GetBoolean(prefs::kPrintPreviewDisabled)) {
+ if (GetPrefs(browser_context_)
+ ->GetBoolean(prefs::kPrintPreviewDisabled)) {
print_view_manager->PrintNow();
} else {
print_view_manager->PrintPreviewNow(!params_.selection_text.empty());
@@ -1706,7 +1724,8 @@ void RenderViewContextMenu::ExecuteCommand(int id, int event_flags) {
DCHECK(platform_app);
DCHECK(platform_app->is_platform_app());
- extensions::devtools_util::InspectBackgroundPage(platform_app, profile_);
+ extensions::devtools_util::InspectBackgroundPage(platform_app,
+ GetProfile());
break;
}
@@ -1742,7 +1761,8 @@ void RenderViewContextMenu::ExecuteCommand(int id, int event_flags) {
// Since the user decided to translate for that language and site, clears
// any preferences for not translating them.
scoped_ptr<translate::TranslatePrefs> prefs(
- ChromeTranslateClient::CreateTranslatePrefs(profile_->GetPrefs()));
+ ChromeTranslateClient::CreateTranslatePrefs(
+ GetPrefs(browser_context_)));
prefs->UnblockLanguage(original_lang);
prefs->RemoveSiteFromBlacklist(params_.page_url.HostNoBrackets());
translate::TranslateManager* manager =
@@ -1833,7 +1853,7 @@ void RenderViewContextMenu::ExecuteCommand(int id, int event_flags) {
case IDC_CONTENT_CONTEXT_ADDSEARCHENGINE: {
// Make sure the model is loaded.
TemplateURLService* model =
- TemplateURLServiceFactory::GetForProfile(profile_);
+ TemplateURLServiceFactory::GetForProfile(GetProfile());
if (!model)
return;
model->Load();
@@ -1850,8 +1870,8 @@ void RenderViewContextMenu::ExecuteCommand(int id, int event_flags) {
data.favicon_url =
TemplateURL::GenerateFaviconURL(params_.page_url.GetOrigin());
// Takes ownership of the TemplateURL.
- search_engine_tab_helper->delegate()->
- ConfirmAddSearchProvider(new TemplateURL(data), profile_);
+ search_engine_tab_helper->delegate()->ConfirmAddSearchProvider(
+ new TemplateURL(data), GetProfile());
}
break;
}
@@ -1915,13 +1935,14 @@ bool RenderViewContextMenu::IsDevCommandEnabled(int id) const {
if (id == IDC_CONTENT_CONTEXT_INSPECTELEMENT ||
id == IDC_CONTENT_CONTEXT_INSPECTBACKGROUNDPAGE) {
const CommandLine* command_line = CommandLine::ForCurrentProcess();
- if (!profile_->GetPrefs()->GetBoolean(prefs::kWebKitJavascriptEnabled) ||
+ if (!GetPrefs(browser_context_)
+ ->GetBoolean(prefs::kWebKitJavascriptEnabled) ||
command_line->HasSwitch(switches::kDisableJavaScript))
return false;
// Don't enable the web inspector if the developer tools are disabled via
// the preference dev-tools-disabled.
- if (profile_->GetPrefs()->GetBoolean(prefs::kDevToolsDisabled))
+ if (GetPrefs(browser_context_)->GetBoolean(prefs::kDevToolsDisabled))
return false;
}
@@ -1959,8 +1980,7 @@ void RenderViewContextMenu::OpenURL(
details.not_yet_in_tabstrip = false;
content::NotificationService::current()->Notify(
chrome::NOTIFICATION_RETARGETING,
- content::Source<Profile>(Profile::FromBrowserContext(
- source_web_contents_->GetBrowserContext())),
+ content::Source<Profile>(GetProfile()),
content::Details<RetargetingDetails>(&details));
}
@@ -1992,7 +2012,7 @@ void RenderViewContextMenu::Inspect(int x, int y) {
void RenderViewContextMenu::WriteURLToClipboard(const GURL& url) {
chrome_common_net::WriteURLToClipboard(
url,
- profile_->GetPrefs()->GetString(prefs::kAcceptLanguages),
+ GetPrefs(browser_context_)->GetString(prefs::kAcceptLanguages),
ui::Clipboard::GetForCurrentThread());
}
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.h b/chrome/browser/renderer_context_menu/render_view_context_menu.h
index 0d1c174..da8c38b 100644
--- a/chrome/browser/renderer_context_menu/render_view_context_menu.h
+++ b/chrome/browser/renderer_context_menu/render_view_context_menu.h
@@ -15,7 +15,8 @@
#include "chrome/browser/extensions/context_menu_matcher.h"
#include "chrome/browser/extensions/menu_manager.h"
#include "chrome/browser/renderer_context_menu/context_menu_content_type.h"
-#include "chrome/browser/renderer_context_menu/render_view_context_menu_observer.h"
+#include "components/renderer_context_menu/render_view_context_menu_observer.h"
+#include "components/renderer_context_menu/render_view_context_menu_proxy.h"
#include "content/public/common/context_menu_params.h"
#include "content/public/common/page_transition_types.h"
#include "ui/base/models/simple_menu_model.h"
@@ -28,7 +29,6 @@ class SpellCheckerSubMenuObserver;
namespace content {
class RenderFrameHost;
-class RenderViewHost;
class WebContents;
}
@@ -46,85 +46,6 @@ struct WebMediaPlayerAction;
struct WebPluginAction;
}
-// An interface that controls a RenderViewContextMenu instance from observers.
-// This interface is designed mainly for controlling the instance while showing
-// so we can add a context-menu item that takes long time to create its text,
-// such as retrieving the item text from a server. The simplest usage is:
-// 1. Adding an item with temporary text;
-// 2. Posting a background task that creates the item text, and;
-// 3. Calling UpdateMenuItem() in the callback function.
-// The following snippet describes the simple usage that updates a context-menu
-// item with this interface.
-//
-// class MyTask : public net::URLFetcherDelegate {
-// public:
-// MyTask(RenderViewContextMenuProxy* proxy, int id)
-// : proxy_(proxy),
-// id_(id) {
-// }
-// virtual ~MyTask() {
-// }
-// virtual void OnURLFetchComplete(const net::URLFetcher* source,
-// const GURL& url,
-// const net::URLRequestStatus& status,
-// int response,
-// const net::ResponseCookies& cookies,
-// const std::string& data) {
-// bool enabled = response == 200;
-// const char* text = enabled ? "OK" : "ERROR";
-// proxy_->UpdateMenuItem(id_, enabled, base::ASCIIToUTF16(text));
-// }
-// void Start(const GURL* url, net::URLRequestContextGetter* context) {
-// fetcher_.reset(new URLFetcher(url, URLFetcher::GET, this));
-// fetcher_->SetRequestContext(context);
-// content::AssociateURLFetcherWithRenderView(
-// fetcher_.get(),
-// proxy_->GetRenderViewHost()->GetSiteInstance()->GetSite(),
-// proxy_->GetRenderViewHost()->GetProcess()->GetID(),
-// proxy_->GetRenderViewHost()->GetRoutingID());
-// fetcher_->Start();
-// }
-//
-// private:
-// URLFetcher fetcher_;
-// RenderViewContextMenuProxy* proxy_;
-// int id_;
-// };
-//
-// void RenderViewContextMenu::AppendEditableItems() {
-// // Add a menu item with temporary text shown while we create the final
-// // text.
-// menu_model_.AddItemWithStringId(IDC_MY_ITEM, IDC_MY_TEXT);
-//
-// // Start a task that creates the final text.
-// my_task_ = new MyTask(this, IDC_MY_ITEM);
-// my_task_->Start(...);
-// }
-//
-class RenderViewContextMenuProxy {
- public:
- // Add a menu item to a context menu.
- virtual void AddMenuItem(int command_id, const base::string16& title) = 0;
- virtual void AddCheckItem(int command_id, const base::string16& title) = 0;
- virtual void AddSeparator() = 0;
-
- // Add a submenu item to a context menu.
- virtual void AddSubMenu(int command_id,
- const base::string16& label,
- ui::MenuModel* model) = 0;
-
- // Update the status and text of the specified context-menu item.
- virtual void UpdateMenuItem(int command_id,
- bool enabled,
- bool hidden,
- const base::string16& title) = 0;
-
- // Retrieve the given associated objects with a context menu.
- virtual content::RenderViewHost* GetRenderViewHost() const = 0;
- virtual content::WebContents* GetWebContents() const = 0;
- virtual Profile* GetProfile() const = 0;
-};
-
class RenderViewContextMenu : public ui::SimpleMenuModel::Delegate,
public RenderViewContextMenuProxy {
public:
@@ -166,10 +87,11 @@ class RenderViewContextMenu : public ui::SimpleMenuModel::Delegate,
const base::string16& title) OVERRIDE;
virtual content::RenderViewHost* GetRenderViewHost() const OVERRIDE;
virtual content::WebContents* GetWebContents() const OVERRIDE;
- virtual Profile* GetProfile() const OVERRIDE;
+ virtual content::BrowserContext* GetBrowserContext() const OVERRIDE;
protected:
void InitMenu();
+ Profile* GetProfile();
// Platform specific functions.
virtual void PlatformInit() = 0;
@@ -184,7 +106,7 @@ class RenderViewContextMenu : public ui::SimpleMenuModel::Delegate,
// The RenderFrameHost's IDs.
int render_process_id_;
int render_frame_id_;
- Profile* profile_;
+ content::BrowserContext* browser_context_;
ui::SimpleMenuModel menu_model_;
extensions::ContextMenuMatcher extension_items_;
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu_observer.cc b/chrome/browser/renderer_context_menu/render_view_context_menu_observer.cc
deleted file mode 100644
index 7003aa7..0000000
--- a/chrome/browser/renderer_context_menu/render_view_context_menu_observer.cc
+++ /dev/null
@@ -1,27 +0,0 @@
-// 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.
-
-#include "chrome/browser/renderer_context_menu/render_view_context_menu_observer.h"
-
-void RenderViewContextMenuObserver::InitMenu(
- const content::ContextMenuParams& params) {
-}
-
-bool RenderViewContextMenuObserver::IsCommandIdSupported(int command_id) {
- return false;
-}
-
-bool RenderViewContextMenuObserver::IsCommandIdChecked(int command_id) {
- return false;
-}
-
-bool RenderViewContextMenuObserver::IsCommandIdEnabled(int command_id) {
- return false;
-}
-
-void RenderViewContextMenuObserver::ExecuteCommand(int command_id) {
-}
-
-void RenderViewContextMenuObserver::OnMenuCancel() {
-}
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu_observer.h b/chrome/browser/renderer_context_menu/render_view_context_menu_observer.h
deleted file mode 100644
index c9d7130..0000000
--- a/chrome/browser/renderer_context_menu/render_view_context_menu_observer.h
+++ /dev/null
@@ -1,107 +0,0 @@
-// 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 CHROME_BROWSER_RENDERER_CONTEXT_MENU_RENDER_VIEW_CONTEXT_MENU_OBSERVER_H_
-#define CHROME_BROWSER_RENDERER_CONTEXT_MENU_RENDER_VIEW_CONTEXT_MENU_OBSERVER_H_
-
-namespace content {
-struct ContextMenuParams;
-}
-
-// The interface used for implementing context-menu items. The following
-// instruction describe how to implement a context-menu item with this
-// interface.
-//
-// 1. Add command IDs for the context-menu items to 'chrome_command_ids.h'.
-//
-// #define IDC_MY_COMMAND 99999
-//
-// 2. Add strings for the context-menu items to 'generated_sources.grd'.
-//
-// <message name="IDS_MY_COMMAND" desc="...">
-// My command
-// </message>
-//
-// 3. Create a class that implements this interface. (It is a good idea to use
-// the RenderViewContextMenuDelegate interface to avoid accessing the
-// RenderViewContextMenu class directly.)
-//
-// class MyMenuObserver : public RenderViewContextMenuObserver {
-// public:
-// MyMenuObserver(RenderViewContextMenuDelegate* d);
-// ~MyMenuObserver();
-//
-// virtual void InitMenu(const content::ContextMenuParams& params) OVERRIDE;
-// virtual bool IsCommandIdSupported(int command_id) OVERRIDE;
-// virtual bool IsCommandIdEnabled(int command_id) OVERRIDE;
-// virtual void ExecuteCommand(int command_id) OVERRIDE;
-//
-// private:
-// RenderViewContextMenuDelgate* delegate_;
-// }
-//
-// void MyMenuObserver::InitMenu(const content::ContextMenuParams& params) {
-// delegate_->AddMenuItem(IDC_MY_COMMAND,...);
-// }
-//
-// bool MyMenuObserver::IsCommandIdSupported(int command_id) {
-// return command_id == IDC_MY_COMMAND;
-// }
-//
-// bool MyMenuObserver::IsCommandIdEnabled(int command_id) {
-// DCHECK(command_id == IDC_MY_COMMAND);
-// return true;
-// }
-//
-// void MyMenuObserver::ExecuteCommand(int command_id) {
-// DCHECK(command_id == IDC_MY_COMMAND);
-// }
-//
-// 4. Add this observer class to the RenderViewContextMenu class. (It is good
-// to use scoped_ptr<> so Chrome can create its instances only when it needs.)
-//
-// class RenderViewContextMenu {
-// ...
-// private:
-// scoped_ptr<MyMenuObserver> my_menu_observer_;
-// };
-//
-// 5. Create its instance in InitMenu() and add it to the observer list of the
-// RenderViewContextMenu class.
-//
-// void RenderViewContextMenu::InitMenu() {
-// ...
-// my_menu_observer_.reset(new MyMenuObserver(this));
-// observers_.AddObserver(my_menu_observer_.get());
-// }
-//
-//
-class RenderViewContextMenuObserver {
- public:
- virtual ~RenderViewContextMenuObserver() {}
-
- // Called when the RenderViewContextMenu class initializes a context menu. We
- // usually call RenderViewContextMenuDelegate::AddMenuItem() to add menu items
- // in this function.
- virtual void InitMenu(const content::ContextMenuParams& params);
-
- // Called when the RenderViewContextMenu class asks whether an observer
- // listens for the specified command ID. If this function returns true, the
- // RenderViewContextMenu class calls IsCommandIdEnabled() or ExecuteCommand().
- virtual bool IsCommandIdSupported(int command_id);
-
- // Called when the RenderViewContextMenu class sets the initial status of the
- // specified context-menu item. If we need to enable or disable a context-menu
- // item while showing, use RenderViewContextMenuDelegate::UpdateMenuItem().
- virtual bool IsCommandIdChecked(int command_id);
- virtual bool IsCommandIdEnabled(int command_id);
-
- // Called when a user selects the specified context-menu item.
- virtual void ExecuteCommand(int command_id);
-
- // Called when a user closes the context menu without selecting any items.
- virtual void OnMenuCancel();
-};
-
-#endif // CHROME_BROWSER_RENDERER_CONTEXT_MENU_RENDER_VIEW_CONTEXT_MENU_OBSERVER_H_
diff --git a/chrome/browser/renderer_context_menu/spellchecker_submenu_observer.h b/chrome/browser/renderer_context_menu/spellchecker_submenu_observer.h
index af4b233..7d54bae 100644
--- a/chrome/browser/renderer_context_menu/spellchecker_submenu_observer.h
+++ b/chrome/browser/renderer_context_menu/spellchecker_submenu_observer.h
@@ -10,7 +10,7 @@
#include "base/basictypes.h"
#include "base/compiler_specific.h"
-#include "chrome/browser/renderer_context_menu/render_view_context_menu_observer.h"
+#include "components/renderer_context_menu/render_view_context_menu_observer.h"
#include "ui/base/models/simple_menu_model.h"
class RenderViewContextMenuProxy;
diff --git a/chrome/browser/renderer_context_menu/spellchecker_submenu_observer_browsertest.cc b/chrome/browser/renderer_context_menu/spellchecker_submenu_observer_browsertest.cc
index 495542e..1276da2 100644
--- a/chrome/browser/renderer_context_menu/spellchecker_submenu_observer_browsertest.cc
+++ b/chrome/browser/renderer_context_menu/spellchecker_submenu_observer_browsertest.cc
@@ -8,10 +8,10 @@
#include "base/strings/utf_string_conversions.h"
#include "chrome/app/chrome_command_ids.h"
#include "chrome/browser/renderer_context_menu/render_view_context_menu.h"
-#include "chrome/browser/renderer_context_menu/render_view_context_menu_observer.h"
#include "chrome/common/pref_names.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/testing_profile.h"
+#include "components/renderer_context_menu/render_view_context_menu_observer.h"
using content::RenderViewHost;
using content::WebContents;
@@ -75,7 +75,7 @@ class MockRenderViewContextMenu : public ui::SimpleMenuModel::Delegate,
virtual RenderViewHost* GetRenderViewHost() const OVERRIDE {
return NULL;
}
- virtual Profile* GetProfile() const OVERRIDE {
+ virtual content::BrowserContext* GetBrowserContext() const OVERRIDE {
return profile_.get();
}
virtual content::WebContents* GetWebContents() const OVERRIDE {
diff --git a/chrome/browser/renderer_context_menu/spellchecker_submenu_observer_hunspell.cc b/chrome/browser/renderer_context_menu/spellchecker_submenu_observer_hunspell.cc
index 67c6cb6..596c3c9 100644
--- a/chrome/browser/renderer_context_menu/spellchecker_submenu_observer_hunspell.cc
+++ b/chrome/browser/renderer_context_menu/spellchecker_submenu_observer_hunspell.cc
@@ -43,10 +43,10 @@ void SpellCheckerSubMenuObserver::InitMenu(
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
// Add available spell-checker languages to the sub menu.
- Profile* profile = proxy_->GetProfile();
- DCHECK(profile);
+ content::BrowserContext* browser_context = proxy_->GetBrowserContext();
+ DCHECK(browser_context);
language_selected_ =
- SpellcheckService::GetSpellCheckLanguages(profile, &languages_);
+ SpellcheckService::GetSpellCheckLanguages(browser_context, &languages_);
DCHECK(languages_.size() <
IDC_SPELLCHECK_LANGUAGES_LAST - IDC_SPELLCHECK_LANGUAGES_FIRST);
const std::string app_locale = g_browser_process->GetApplicationLocale();
@@ -121,7 +121,7 @@ bool SpellCheckerSubMenuObserver::IsCommandIdChecked(int command_id) {
// Check box for 'Check Spelling while typing'.
if (command_id == IDC_CHECK_SPELLING_WHILE_TYPING) {
- Profile* profile = proxy_->GetProfile();
+ Profile* profile = Profile::FromBrowserContext(proxy_->GetBrowserContext());
DCHECK(profile);
return profile->GetPrefs()->GetBoolean(prefs::kEnableContinuousSpellcheck);
}
@@ -132,7 +132,7 @@ bool SpellCheckerSubMenuObserver::IsCommandIdChecked(int command_id) {
bool SpellCheckerSubMenuObserver::IsCommandIdEnabled(int command_id) {
DCHECK(IsCommandIdSupported(command_id));
- Profile* profile = proxy_->GetProfile();
+ Profile* profile = Profile::FromBrowserContext(proxy_->GetBrowserContext());
DCHECK(profile);
const PrefService* pref = profile->GetPrefs();
if (command_id >= IDC_SPELLCHECK_LANGUAGES_FIRST &&
@@ -154,7 +154,7 @@ void SpellCheckerSubMenuObserver::ExecuteCommand(int command_id) {
DCHECK(IsCommandIdSupported(command_id));
// Check to see if one of the spell check language ids have been clicked.
- Profile* profile = proxy_->GetProfile();
+ Profile* profile = Profile::FromBrowserContext(proxy_->GetBrowserContext());
DCHECK(profile);
if (command_id >= IDC_SPELLCHECK_LANGUAGES_FIRST &&
command_id < IDC_SPELLCHECK_LANGUAGES_LAST) {
diff --git a/chrome/browser/renderer_context_menu/spellchecker_submenu_observer_mac.cc b/chrome/browser/renderer_context_menu/spellchecker_submenu_observer_mac.cc
index 97fa3ce..a81e565 100644
--- a/chrome/browser/renderer_context_menu/spellchecker_submenu_observer_mac.cc
+++ b/chrome/browser/renderer_context_menu/spellchecker_submenu_observer_mac.cc
@@ -13,6 +13,7 @@
#include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h"
#include "chrome/common/spellcheck_messages.h"
+#include "components/user_prefs/user_prefs.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/render_widget_host_view.h"
#include "grit/generated_resources.h"
@@ -21,6 +22,14 @@
using content::BrowserThread;
+namespace {
+
+PrefService* GetPrefs(content::BrowserContext* context) {
+ return user_prefs::UserPrefs::Get(context);
+}
+
+}
+
SpellCheckerSubMenuObserver::SpellCheckerSubMenuObserver(
RenderViewContextMenuProxy* proxy,
ui::SimpleMenuModel::Delegate* delegate,
@@ -80,9 +89,9 @@ bool SpellCheckerSubMenuObserver::IsCommandIdChecked(int command_id) {
// Check box for 'Check Spelling while typing'.
if (command_id == IDC_CHECK_SPELLING_WHILE_TYPING) {
- Profile* profile = proxy_->GetProfile();
- DCHECK(profile);
- return profile->GetPrefs()->GetBoolean(prefs::kEnableContinuousSpellcheck);
+ content::BrowserContext* context = proxy_->GetBrowserContext();
+ DCHECK(context);
+ return GetPrefs(context)->GetBoolean(prefs::kEnableContinuousSpellcheck);
}
return false;
@@ -106,13 +115,13 @@ void SpellCheckerSubMenuObserver::ExecuteCommand(int command_id) {
DCHECK(IsCommandIdSupported(command_id));
content::RenderViewHost* rvh = proxy_->GetRenderViewHost();
- Profile* profile = proxy_->GetProfile();
- DCHECK(profile);
+ content::BrowserContext* context = proxy_->GetBrowserContext();
+ DCHECK(context);
switch (command_id) {
case IDC_CHECK_SPELLING_WHILE_TYPING:
- profile->GetPrefs()->SetBoolean(
+ GetPrefs(context)->SetBoolean(
prefs::kEnableContinuousSpellcheck,
- !profile->GetPrefs()->GetBoolean(prefs::kEnableContinuousSpellcheck));
+ !GetPrefs(context)->GetBoolean(prefs::kEnableContinuousSpellcheck));
break;
case IDC_SPELLPANEL_TOGGLE:
diff --git a/chrome/browser/renderer_context_menu/spelling_menu_observer.cc b/chrome/browser/renderer_context_menu/spelling_menu_observer.cc
index aed1920..b397709 100644
--- a/chrome/browser/renderer_context_menu/spelling_menu_observer.cc
+++ b/chrome/browser/renderer_context_menu/spelling_menu_observer.cc
@@ -39,11 +39,12 @@ SpellingMenuObserver::SpellingMenuObserver(RenderViewContextMenuProxy* proxy)
succeeded_(false),
misspelling_hash_(0),
client_(new SpellingServiceClient) {
- if (proxy && proxy->GetProfile()) {
+ if (proxy_ && proxy_->GetBrowserContext()) {
+ Profile* profile = Profile::FromBrowserContext(proxy_->GetBrowserContext());
integrate_spelling_service_.Init(prefs::kSpellCheckUseSpellingService,
- proxy->GetProfile()->GetPrefs());
+ profile->GetPrefs());
autocorrect_spelling_.Init(prefs::kEnableAutoSpellCorrect,
- proxy->GetProfile()->GetPrefs());
+ profile->GetPrefs());
}
}
@@ -57,8 +58,8 @@ void SpellingMenuObserver::InitMenu(const content::ContextMenuParams& params) {
// Exit if we are not in an editable element because we add a menu item only
// for editable elements.
- Profile* profile = proxy_->GetProfile();
- if (!params.is_editable || !profile)
+ content::BrowserContext* browser_context = proxy_->GetBrowserContext();
+ if (!params.is_editable || !browser_context)
return;
// Exit if there is no misspelled word.
@@ -70,7 +71,7 @@ void SpellingMenuObserver::InitMenu(const content::ContextMenuParams& params) {
misspelling_hash_ = params.misspelling_hash;
bool use_suggestions = SpellingServiceClient::IsAvailable(
- profile, SpellingServiceClient::SUGGEST);
+ browser_context, SpellingServiceClient::SUGGEST);
if (!suggestions_.empty() || use_suggestions)
proxy_->AddSeparator();
@@ -130,9 +131,12 @@ void SpellingMenuObserver::InitMenu(const content::ContextMenuParams& params) {
// starts the animation timer so we can show animation until we receive
// it.
bool result = client_->RequestTextCheck(
- profile, SpellingServiceClient::SUGGEST, params.misspelled_word,
+ browser_context,
+ SpellingServiceClient::SUGGEST,
+ params.misspelled_word,
base::Bind(&SpellingMenuObserver::OnTextCheckComplete,
- base::Unretained(this), SpellingServiceClient::SUGGEST));
+ base::Unretained(this),
+ SpellingServiceClient::SUGGEST));
if (result) {
loading_frame_ = 0;
animation_timer_.Start(FROM_HERE, base::TimeDelta::FromSeconds(1),
@@ -145,7 +149,7 @@ void SpellingMenuObserver::InitMenu(const content::ContextMenuParams& params) {
IDC_CONTENT_CONTEXT_NO_SPELLING_SUGGESTIONS,
l10n_util::GetStringUTF16(IDS_CONTENT_CONTEXT_NO_SPELLING_SUGGESTIONS));
bool use_spelling_service = SpellingServiceClient::IsAvailable(
- profile, SpellingServiceClient::SPELLCHECK);
+ browser_context, SpellingServiceClient::SPELLCHECK);
if (use_suggestions || use_spelling_service)
proxy_->AddSeparator();
} else {
@@ -154,7 +158,7 @@ void SpellingMenuObserver::InitMenu(const content::ContextMenuParams& params) {
// |spellcheck_service| can be null when the suggested word is
// provided by Web SpellCheck API.
SpellcheckService* spellcheck_service =
- SpellcheckServiceFactory::GetForContext(profile);
+ SpellcheckServiceFactory::GetForContext(browser_context);
if (spellcheck_service && spellcheck_service->GetMetrics())
spellcheck_service->GetMetrics()->RecordSuggestionStats(1);
}
@@ -196,13 +200,12 @@ bool SpellingMenuObserver::IsCommandIdSupported(int command_id) {
bool SpellingMenuObserver::IsCommandIdChecked(int command_id) {
DCHECK(IsCommandIdSupported(command_id));
+ Profile* profile = Profile::FromBrowserContext(proxy_->GetBrowserContext());
if (command_id == IDC_CONTENT_CONTEXT_SPELLING_TOGGLE)
- return integrate_spelling_service_.GetValue() &&
- !proxy_->GetProfile()->IsOffTheRecord();
+ return integrate_spelling_service_.GetValue() && !profile->IsOffTheRecord();
if (command_id == IDC_CONTENT_CONTEXT_AUTOCORRECT_SPELLING_TOGGLE)
- return autocorrect_spelling_.GetValue() &&
- !proxy_->GetProfile()->IsOffTheRecord();
+ return autocorrect_spelling_.GetValue() && !profile->IsOffTheRecord();
return false;
}
@@ -213,6 +216,7 @@ bool SpellingMenuObserver::IsCommandIdEnabled(int command_id) {
command_id <= IDC_SPELLCHECK_SUGGESTION_LAST)
return true;
+ Profile* profile = Profile::FromBrowserContext(proxy_->GetBrowserContext());
switch (command_id) {
case IDC_SPELLCHECK_ADD_TO_DICTIONARY:
return !misspelled_word_.empty();
@@ -225,11 +229,11 @@ bool SpellingMenuObserver::IsCommandIdEnabled(int command_id) {
case IDC_CONTENT_CONTEXT_SPELLING_TOGGLE:
return integrate_spelling_service_.IsUserModifiable() &&
- !proxy_->GetProfile()->IsOffTheRecord();
+ !profile->IsOffTheRecord();
case IDC_CONTENT_CONTEXT_AUTOCORRECT_SPELLING_TOGGLE:
return integrate_spelling_service_.IsUserModifiable() &&
- !proxy_->GetProfile()->IsOffTheRecord();
+ !profile->IsOffTheRecord();
default:
return false;
@@ -246,10 +250,10 @@ void SpellingMenuObserver::ExecuteCommand(int command_id) {
suggestions_[suggestion_index]);
// GetSpellCheckHost() can return null when the suggested word is provided
// by Web SpellCheck API.
- Profile* profile = proxy_->GetProfile();
- if (profile) {
+ content::BrowserContext* browser_context = proxy_->GetBrowserContext();
+ if (browser_context) {
SpellcheckService* spellcheck =
- SpellcheckServiceFactory::GetForContext(profile);
+ SpellcheckServiceFactory::GetForContext(browser_context);
if (spellcheck) {
if (spellcheck->GetMetrics())
spellcheck->GetMetrics()->RecordReplacedWordStats(1);
@@ -272,10 +276,10 @@ void SpellingMenuObserver::ExecuteCommand(int command_id) {
command_id == IDC_SPELLCHECK_ADD_TO_DICTIONARY) {
// GetHostForProfile() can return null when the suggested word is provided
// by Web SpellCheck API.
- Profile* profile = proxy_->GetProfile();
- if (profile) {
+ content::BrowserContext* browser_context = proxy_->GetBrowserContext();
+ if (browser_context) {
SpellcheckService* spellcheck =
- SpellcheckServiceFactory::GetForContext(profile);
+ SpellcheckServiceFactory::GetForContext(browser_context);
if (spellcheck) {
spellcheck->GetCustomDictionary()->AddWord(base::UTF16ToUTF8(
misspelled_word_));
@@ -287,6 +291,8 @@ void SpellingMenuObserver::ExecuteCommand(int command_id) {
#endif
}
+ Profile* profile = Profile::FromBrowserContext(proxy_->GetBrowserContext());
+
// The spelling service can be toggled by the user only if it is not managed.
if (command_id == IDC_CONTENT_CONTEXT_SPELLING_TOGGLE &&
integrate_spelling_service_.IsUserModifiable()) {
@@ -301,11 +307,8 @@ void SpellingMenuObserver::ExecuteCommand(int command_id) {
proxy_->GetWebContents()->GetTopLevelNativeWindow(),
rvh->GetView()->GetNativeView(),
gfx::Point(rect.CenterPoint().x(), rect.y()),
- new SpellingBubbleModel(proxy_->GetProfile(),
- proxy_->GetWebContents(),
- false));
+ new SpellingBubbleModel(profile, proxy_->GetWebContents(), false));
} else {
- Profile* profile = proxy_->GetProfile();
if (profile) {
profile->GetPrefs()->SetBoolean(prefs::kSpellCheckUseSpellingService,
false);
@@ -328,11 +331,8 @@ void SpellingMenuObserver::ExecuteCommand(int command_id) {
proxy_->GetWebContents()->GetTopLevelNativeWindow(),
rvh->GetView()->GetNativeView(),
gfx::Point(rect.CenterPoint().x(), rect.y()),
- new SpellingBubbleModel(proxy_->GetProfile(),
- proxy_->GetWebContents(),
- true));
+ new SpellingBubbleModel(profile, proxy_->GetWebContents(), true));
} else {
- Profile* profile = proxy_->GetProfile();
if (profile) {
bool current_value = autocorrect_spelling_.GetValue();
profile->GetPrefs()->SetBoolean(prefs::kEnableAutoSpellCorrect,
@@ -343,11 +343,11 @@ void SpellingMenuObserver::ExecuteCommand(int command_id) {
}
void SpellingMenuObserver::OnMenuCancel() {
- Profile* profile = proxy_->GetProfile();
- if (!profile)
+ content::BrowserContext* browser_context = proxy_->GetBrowserContext();
+ if (!browser_context)
return;
SpellcheckService* spellcheck =
- SpellcheckServiceFactory::GetForContext(profile);
+ SpellcheckServiceFactory::GetForContext(browser_context);
if (!spellcheck)
return;
spellcheck->GetFeedbackSender()->IgnoredSuggestions(misspelling_hash_);
diff --git a/chrome/browser/renderer_context_menu/spelling_menu_observer.h b/chrome/browser/renderer_context_menu/spelling_menu_observer.h
index aa482d8..d20afdd 100644
--- a/chrome/browser/renderer_context_menu/spelling_menu_observer.h
+++ b/chrome/browser/renderer_context_menu/spelling_menu_observer.h
@@ -12,8 +12,8 @@
#include "base/prefs/pref_member.h"
#include "base/strings/string16.h"
#include "base/timer/timer.h"
-#include "chrome/browser/renderer_context_menu/render_view_context_menu_observer.h"
#include "chrome/browser/spellchecker/spelling_service_client.h"
+#include "components/renderer_context_menu/render_view_context_menu_observer.h"
class RenderViewContextMenuProxy;
struct SpellCheckResult;
diff --git a/chrome/browser/renderer_context_menu/spelling_menu_observer_browsertest.cc b/chrome/browser/renderer_context_menu/spelling_menu_observer_browsertest.cc
index 3d281ce..943d689 100644
--- a/chrome/browser/renderer_context_menu/spelling_menu_observer_browsertest.cc
+++ b/chrome/browser/renderer_context_menu/spelling_menu_observer_browsertest.cc
@@ -10,11 +10,11 @@
#include "base/strings/utf_string_conversions.h"
#include "chrome/app/chrome_command_ids.h"
#include "chrome/browser/renderer_context_menu/render_view_context_menu.h"
-#include "chrome/browser/renderer_context_menu/render_view_context_menu_observer.h"
#include "chrome/browser/spellchecker/spelling_service_client.h"
#include "chrome/common/pref_names.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/testing_profile.h"
+#include "components/renderer_context_menu/render_view_context_menu_observer.h"
using content::RenderViewHost;
using content::WebContents;
@@ -60,7 +60,7 @@ class MockRenderViewContextMenu : public RenderViewContextMenuProxy {
const base::string16& title) OVERRIDE;
virtual RenderViewHost* GetRenderViewHost() const OVERRIDE;
virtual WebContents* GetWebContents() const OVERRIDE;
- virtual Profile* GetProfile() const OVERRIDE;
+ virtual content::BrowserContext* GetBrowserContext() const OVERRIDE;
// Attaches a RenderViewContextMenuObserver to be tested.
void SetObserver(RenderViewContextMenuObserver* observer);
@@ -169,7 +169,7 @@ WebContents* MockRenderViewContextMenu::GetWebContents() const {
return NULL;
}
-Profile* MockRenderViewContextMenu::GetProfile() const {
+content::BrowserContext* MockRenderViewContextMenu::GetBrowserContext() const {
return profile_.get();
}
@@ -235,9 +235,9 @@ class SpellingMenuObserverTest : public InProcessBrowserTest {
// Force a non-empty and non-"en" locale so SUGGEST is available.
menu()->GetPrefs()->SetString(prefs::kSpellCheckDictionary, "fr");
ASSERT_TRUE(SpellingServiceClient::IsAvailable(
- menu()->GetProfile(), SpellingServiceClient::SUGGEST));
+ menu()->GetBrowserContext(), SpellingServiceClient::SUGGEST));
ASSERT_FALSE(SpellingServiceClient::IsAvailable(
- menu()->GetProfile(), SpellingServiceClient::SPELLCHECK));
+ menu()->GetBrowserContext(), SpellingServiceClient::SPELLCHECK));
}
virtual ~SpellingMenuObserverTest();
@@ -369,8 +369,8 @@ IN_PROC_BROWSER_TEST_F(SpellingMenuObserverTest,
// Force a non-empty locale so SPELLCHECK is available.
menu()->GetPrefs()->SetString(prefs::kSpellCheckDictionary, "en");
- EXPECT_TRUE(SpellingServiceClient::IsAvailable(menu()->GetProfile(),
- SpellingServiceClient::SPELLCHECK));
+ EXPECT_TRUE(SpellingServiceClient::IsAvailable(
+ menu()->GetBrowserContext(), SpellingServiceClient::SPELLCHECK));
InitMenu("asdfkj", "asdf");
// The test should see a separator, a suggestion and another separator
@@ -410,10 +410,10 @@ IN_PROC_BROWSER_TEST_F(SpellingMenuObserverTest,
// Force a non-empty locale so SUGGEST normally would be available.
menu()->GetPrefs()->SetString(prefs::kSpellCheckDictionary, "en");
- EXPECT_FALSE(SpellingServiceClient::IsAvailable(menu()->GetProfile(),
- SpellingServiceClient::SUGGEST));
- EXPECT_FALSE(SpellingServiceClient::IsAvailable(menu()->GetProfile(),
- SpellingServiceClient::SPELLCHECK));
+ EXPECT_FALSE(SpellingServiceClient::IsAvailable(
+ menu()->GetBrowserContext(), SpellingServiceClient::SUGGEST));
+ EXPECT_FALSE(SpellingServiceClient::IsAvailable(
+ menu()->GetBrowserContext(), SpellingServiceClient::SPELLCHECK));
InitMenu("sjxdjiiiiii", NULL);
diff --git a/chrome/browser/ui/cocoa/tab_contents/chrome_web_contents_view_delegate_mac.h b/chrome/browser/ui/cocoa/tab_contents/chrome_web_contents_view_delegate_mac.h
index 85c2551..ba128a3 100644
--- a/chrome/browser/ui/cocoa/tab_contents/chrome_web_contents_view_delegate_mac.h
+++ b/chrome/browser/ui/cocoa/tab_contents/chrome_web_contents_view_delegate_mac.h
@@ -9,7 +9,7 @@
#include "base/basictypes.h"
#include "base/memory/scoped_ptr.h"
-#include "chrome/browser/renderer_context_menu/context_menu_delegate.h"
+#include "components/renderer_context_menu/context_menu_delegate.h"
#include "content/public/browser/web_contents_view_delegate.h"
class RenderViewContextMenu;
diff --git a/chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views.h b/chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views.h
index 09f2231..b7170b3 100644
--- a/chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views.h
+++ b/chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views.h
@@ -8,7 +8,7 @@
#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
-#include "chrome/browser/renderer_context_menu/context_menu_delegate.h"
+#include "components/renderer_context_menu/context_menu_delegate.h"
#include "content/public/browser/web_contents_view_delegate.h"
class RenderViewContextMenu;
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index 2b995bf..280e9277 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -1106,8 +1106,6 @@
'browser/renderer_context_menu/context_menu_content_type_panel.h',
'browser/renderer_context_menu/context_menu_content_type_platform_app.cc',
'browser/renderer_context_menu/context_menu_content_type_platform_app.h',
- 'browser/renderer_context_menu/context_menu_delegate.cc',
- 'browser/renderer_context_menu/context_menu_delegate.h',
'browser/renderer_context_menu/spellchecker_submenu_observer.h',
'browser/renderer_context_menu/spellchecker_submenu_observer_mac.cc',
'browser/renderer_host/chrome_render_message_filter.cc',
@@ -2212,8 +2210,6 @@
'browser/profiles/profile_shortcut_manager.h',
'browser/renderer_context_menu/render_view_context_menu.cc',
'browser/renderer_context_menu/render_view_context_menu.h',
- 'browser/renderer_context_menu/render_view_context_menu_observer.cc',
- 'browser/renderer_context_menu/render_view_context_menu_observer.h',
'browser/renderer_context_menu/spelling_bubble_model.cc',
'browser/renderer_context_menu/spelling_bubble_model.h',
'browser/renderer_context_menu/spelling_menu_observer.cc',
@@ -2885,6 +2881,7 @@
'../components/components.gyp:precache_core',
'../components/components.gyp:query_parser',
'../components/components.gyp:rappor',
+ '../components/components.gyp:renderer_context_menu',
'../components/components.gyp:search',
'../components/components.gyp:search_engines',
'../components/components.gyp:search_provider_logos',