| Index: chrome/browser/tab_contents/render_view_context_menu.cc
|
| ===================================================================
|
| --- chrome/browser/tab_contents/render_view_context_menu.cc (revision 16861)
|
| +++ chrome/browser/tab_contents/render_view_context_menu.cc (working copy)
|
| @@ -22,6 +22,7 @@
|
| #include "chrome/common/pref_service.h"
|
| #include "chrome/common/url_constants.h"
|
| #include "grit/generated_resources.h"
|
| +#include "net/base/net_util.h"
|
|
|
| #if defined(OS_WIN)
|
| #include "chrome/browser/views/options/fonts_languages_window_view.h"
|
| @@ -207,8 +208,7 @@
|
| // 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 source_tab_contents_->profile()->GetPrefs()->GetBoolean(
|
| - prefs::kEnableSpellCheck);
|
| + return profile_->GetPrefs()->GetBoolean(prefs::kEnableSpellCheck);
|
| }
|
|
|
| switch (id) {
|
| @@ -282,12 +282,10 @@
|
| return !!(params_.edit_flags & ContextNode::CAN_SELECT_ALL);
|
|
|
| case IDS_CONTENT_CONTEXT_OPENLINKOFFTHERECORD:
|
| - return !source_tab_contents_->profile()->IsOffTheRecord() &&
|
| - params_.link_url.is_valid();
|
| + return !profile_->IsOffTheRecord() && params_.link_url.is_valid();
|
|
|
| case IDS_CONTENT_CONTEXT_OPENFRAMEOFFTHERECORD:
|
| - return !source_tab_contents_->profile()->IsOffTheRecord() &&
|
| - params_.frame_url.is_valid();
|
| + return !profile_->IsOffTheRecord() && params_.frame_url.is_valid();
|
|
|
| case IDS_CONTENT_CONTEXT_ADD_TO_DICTIONARY:
|
| return !params_.misspelled_word.empty();
|
| @@ -307,8 +305,7 @@
|
| return true;
|
|
|
| case IDC_CHECK_SPELLING_OF_THIS_FIELD:
|
| - return source_tab_contents_->profile()->GetPrefs()->GetBoolean(
|
| - prefs::kEnableSpellCheck);
|
| + return profile_->GetPrefs()->GetBoolean(prefs::kEnableSpellCheck);
|
|
|
| case IDS_CONTENT_CONTEXT_SAVEFRAMEAS:
|
| case IDS_CONTENT_CONTEXT_PRINTFRAME:
|
| @@ -321,9 +318,8 @@
|
| bool RenderViewContextMenu::ItemIsChecked(int id) const {
|
| // Check box for 'Check the Spelling of this field'.
|
| if (id == IDC_CHECK_SPELLING_OF_THIS_FIELD) {
|
| - PrefService* prefs = source_tab_contents_->profile()->GetPrefs();
|
| return (params_.spellcheck_enabled &&
|
| - prefs->GetBoolean(prefs::kEnableSpellCheck));
|
| + profile_->GetPrefs()->GetBoolean(prefs::kEnableSpellCheck));
|
| }
|
|
|
| // Don't bother getting the display language vector if this isn't a spellcheck
|
| @@ -333,8 +329,7 @@
|
| return false;
|
|
|
| SpellChecker::Languages languages;
|
| - return SpellChecker::GetSpellCheckLanguages(
|
| - source_tab_contents_->profile(), &languages) ==
|
| + return SpellChecker::GetSpellCheckLanguages(profile_, &languages) ==
|
| (id - IDC_SPELLCHECK_LANGUAGES_FIRST);
|
| }
|
|
|
| @@ -344,12 +339,11 @@
|
| id < IDC_SPELLCHECK_LANGUAGES_LAST) {
|
| const size_t language_number = id - IDC_SPELLCHECK_LANGUAGES_FIRST;
|
| SpellChecker::Languages languages;
|
| - SpellChecker::GetSpellCheckLanguages(
|
| - source_tab_contents_->profile(), &languages);
|
| + SpellChecker::GetSpellCheckLanguages(profile_, &languages);
|
| if (language_number < languages.size()) {
|
| StringPrefMember dictionary_language;
|
| dictionary_language.Init(prefs::kSpellCheckDictionary,
|
| - source_tab_contents_->profile()->GetPrefs(), NULL);
|
| + profile_->GetPrefs(), NULL);
|
| dictionary_language.SetValue(ASCIIToWide(languages[language_number]));
|
| }
|
|
|
| @@ -377,8 +371,7 @@
|
| const GURL& url =
|
| (id == IDS_CONTENT_CONTEXT_SAVELINKAS ? params_.link_url :
|
| params_.image_url);
|
| - DownloadManager* dlm =
|
| - source_tab_contents_->profile()->GetDownloadManager();
|
| + DownloadManager* dlm = profile_->GetDownloadManager();
|
| dlm->DownloadUrl(url, referrer, params_.frame_charset,
|
| source_tab_contents_);
|
| break;
|
| @@ -434,7 +427,7 @@
|
| NavigationEntry* nav_entry =
|
| source_tab_contents_->controller().GetActiveEntry();
|
| PageInfoWindow::CreatePageInfo(
|
| - source_tab_contents_->profile(),
|
| + profile_,
|
| nav_entry,
|
| source_tab_contents_->GetContentNativeView(),
|
| PageInfoWindow::SECURITY);
|
| @@ -487,7 +480,7 @@
|
| }
|
| #if defined(OS_WIN)
|
| PageInfoWindow::CreateFrameInfo(
|
| - source_tab_contents_->profile(),
|
| + profile_,
|
| params_.frame_url,
|
| ssl,
|
| source_tab_contents_->GetContentNativeView(),
|
| @@ -528,8 +521,8 @@
|
| break;
|
|
|
| case IDS_CONTENT_CONTEXT_SEARCHWEBFOR: {
|
| - const TemplateURL* const default_provider = source_tab_contents_->
|
| - profile()->GetTemplateURLModel()->GetDefaultSearchProvider();
|
| + const TemplateURL* const default_provider =
|
| + profile_->GetTemplateURLModel()->GetDefaultSearchProvider();
|
| DCHECK(default_provider); // The context menu should not contain this
|
| // item when there is no provider.
|
| const TemplateURLRef* const search_url = default_provider->url();
|
| @@ -562,7 +555,7 @@
|
| // TODO(yusukes): This should be moved to some shared place of commands
|
| // for the options stuff so that we don't have to do all this work here.
|
| FontsLanguagesWindowView* window_ = new FontsLanguagesWindowView(
|
| - source_tab_contents_->profile());
|
| + profile_);
|
| views::Window::CreateChromeWindow(
|
| platform_util::GetTopLevel(
|
| source_tab_contents_->GetContentNativeView()),
|
| @@ -612,8 +605,7 @@
|
|
|
| // Don't enable the web inspector if JavaScript is disabled
|
| if (id == IDS_CONTENT_CONTEXT_INSPECTELEMENT) {
|
| - PrefService* prefs = source_tab_contents_->profile()->GetPrefs();
|
| - if (!prefs->GetBoolean(prefs::kWebKitJavascriptEnabled) ||
|
| + if (!profile_->GetPrefs()->GetBoolean(prefs::kWebKitJavascriptEnabled) ||
|
| command_line.HasSwitch(switches::kDisableJavaScript))
|
| return false;
|
| }
|
| @@ -650,8 +642,16 @@
|
| }
|
|
|
| void RenderViewContextMenu::WriteURLToClipboard(const GURL& url) {
|
| - if (url.SchemeIs(chrome::kMailToScheme))
|
| + if (url.SchemeIs(chrome::kMailToScheme)) {
|
| WriteTextToClipboard(UTF8ToUTF16(url.path()));
|
| - else
|
| - WriteTextToClipboard(UTF8ToUTF16(url.spec()));
|
| + } else {
|
| + std::wstring languages =
|
| + profile_->GetPrefs()->GetString(prefs::kAcceptLanguages);
|
| + // Unescaping path and query is not a good idea because other
|
| + // applications may not enocode non-ASCII characters in UTF-8.
|
| + // So the 4th parameter of net::FormatUrl() should be false.
|
| + // See crbug.com/2820.
|
| + WriteTextToClipboard(WideToUTF16(
|
| + net::FormatUrl(url, languages, false, false, NULL, NULL)));
|
| + }
|
| }
|
|
|