Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Side by Side Diff: chrome/browser/tab_contents/render_view_context_menu.cc

Issue 115752: For "Copy link address" context menu, copy the URL with Unicode host name ins... (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 11 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/tab_contents/render_view_context_menu.h" 5 #include "chrome/browser/tab_contents/render_view_context_menu.h"
6 6
7 #include "app/l10n_util.h" 7 #include "app/l10n_util.h"
8 #include "base/clipboard.h" 8 #include "base/clipboard.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/scoped_clipboard_writer.h" 11 #include "base/scoped_clipboard_writer.h"
12 #include "chrome/app/chrome_dll_resource.h" 12 #include "chrome/app/chrome_dll_resource.h"
13 #include "chrome/browser/browser_process.h" 13 #include "chrome/browser/browser_process.h"
14 #include "chrome/browser/download/download_manager.h" 14 #include "chrome/browser/download/download_manager.h"
15 #include "chrome/browser/profile.h" 15 #include "chrome/browser/profile.h"
16 #include "chrome/browser/search_engines/template_url_model.h" 16 #include "chrome/browser/search_engines/template_url_model.h"
17 #include "chrome/browser/spellchecker.h" 17 #include "chrome/browser/spellchecker.h"
18 #include "chrome/browser/tab_contents/navigation_entry.h" 18 #include "chrome/browser/tab_contents/navigation_entry.h"
19 #include "chrome/browser/tab_contents/tab_contents.h" 19 #include "chrome/browser/tab_contents/tab_contents.h"
20 #include "chrome/common/chrome_switches.h" 20 #include "chrome/common/chrome_switches.h"
21 #include "chrome/common/platform_util.h" 21 #include "chrome/common/platform_util.h"
22 #include "chrome/common/pref_service.h" 22 #include "chrome/common/pref_service.h"
23 #include "chrome/common/url_constants.h" 23 #include "chrome/common/url_constants.h"
24 #include "grit/generated_resources.h" 24 #include "grit/generated_resources.h"
25 #include "net/base/net_util.h"
25 26
26 #if defined(OS_WIN) 27 #if defined(OS_WIN)
27 #include "chrome/browser/views/options/fonts_languages_window_view.h" 28 #include "chrome/browser/views/options/fonts_languages_window_view.h"
28 #include "chrome/browser/views/page_info_window.h" 29 #include "chrome/browser/views/page_info_window.h"
29 #endif 30 #endif
30 31
31 RenderViewContextMenu::RenderViewContextMenu( 32 RenderViewContextMenu::RenderViewContextMenu(
32 TabContents* tab_contents, 33 TabContents* tab_contents,
33 const ContextMenuParams& params) 34 const ContextMenuParams& params)
34 : params_(params), 35 : params_(params),
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 AppendSeparator(); 201 AppendSeparator();
201 AppendMenuItem(IDS_CONTENT_CONTEXT_SELECTALL); 202 AppendMenuItem(IDS_CONTENT_CONTEXT_SELECTALL);
202 } 203 }
203 204
204 // Menu delegate functions ----------------------------------------------------- 205 // Menu delegate functions -----------------------------------------------------
205 206
206 bool RenderViewContextMenu::IsItemCommandEnabled(int id) const { 207 bool RenderViewContextMenu::IsItemCommandEnabled(int id) const {
207 // Allow Spell Check language items on sub menu for text area context menu. 208 // Allow Spell Check language items on sub menu for text area context menu.
208 if ((id >= IDC_SPELLCHECK_LANGUAGES_FIRST) && 209 if ((id >= IDC_SPELLCHECK_LANGUAGES_FIRST) &&
209 (id < IDC_SPELLCHECK_LANGUAGES_LAST)) { 210 (id < IDC_SPELLCHECK_LANGUAGES_LAST)) {
210 return source_tab_contents_->profile()->GetPrefs()->GetBoolean( 211 return profile_->GetPrefs()->GetBoolean(prefs::kEnableSpellCheck);
211 prefs::kEnableSpellCheck);
212 } 212 }
213 213
214 switch (id) { 214 switch (id) {
215 case IDS_CONTENT_CONTEXT_BACK: 215 case IDS_CONTENT_CONTEXT_BACK:
216 return source_tab_contents_->controller().CanGoBack(); 216 return source_tab_contents_->controller().CanGoBack();
217 217
218 case IDS_CONTENT_CONTEXT_FORWARD: 218 case IDS_CONTENT_CONTEXT_FORWARD:
219 return source_tab_contents_->controller().CanGoForward(); 219 return source_tab_contents_->controller().CanGoForward();
220 220
221 case IDS_CONTENT_CONTEXT_VIEWPAGESOURCE: 221 case IDS_CONTENT_CONTEXT_VIEWPAGESOURCE:
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 case IDS_CONTENT_CONTEXT_PASTE: 275 case IDS_CONTENT_CONTEXT_PASTE:
276 return !!(params_.edit_flags & ContextNode::CAN_PASTE); 276 return !!(params_.edit_flags & ContextNode::CAN_PASTE);
277 277
278 case IDS_CONTENT_CONTEXT_DELETE: 278 case IDS_CONTENT_CONTEXT_DELETE:
279 return !!(params_.edit_flags & ContextNode::CAN_DELETE); 279 return !!(params_.edit_flags & ContextNode::CAN_DELETE);
280 280
281 case IDS_CONTENT_CONTEXT_SELECTALL: 281 case IDS_CONTENT_CONTEXT_SELECTALL:
282 return !!(params_.edit_flags & ContextNode::CAN_SELECT_ALL); 282 return !!(params_.edit_flags & ContextNode::CAN_SELECT_ALL);
283 283
284 case IDS_CONTENT_CONTEXT_OPENLINKOFFTHERECORD: 284 case IDS_CONTENT_CONTEXT_OPENLINKOFFTHERECORD:
285 return !source_tab_contents_->profile()->IsOffTheRecord() && 285 return !profile_->IsOffTheRecord() && params_.link_url.is_valid();
286 params_.link_url.is_valid();
287 286
288 case IDS_CONTENT_CONTEXT_OPENFRAMEOFFTHERECORD: 287 case IDS_CONTENT_CONTEXT_OPENFRAMEOFFTHERECORD:
289 return !source_tab_contents_->profile()->IsOffTheRecord() && 288 return !profile_->IsOffTheRecord() && params_.frame_url.is_valid();
290 params_.frame_url.is_valid();
291 289
292 case IDS_CONTENT_CONTEXT_ADD_TO_DICTIONARY: 290 case IDS_CONTENT_CONTEXT_ADD_TO_DICTIONARY:
293 return !params_.misspelled_word.empty(); 291 return !params_.misspelled_word.empty();
294 292
295 case IDS_CONTENT_CONTEXT_RELOAD: 293 case IDS_CONTENT_CONTEXT_RELOAD:
296 case IDS_CONTENT_CONTEXT_COPYIMAGE: 294 case IDS_CONTENT_CONTEXT_COPYIMAGE:
297 case IDS_CONTENT_CONTEXT_PRINT: 295 case IDS_CONTENT_CONTEXT_PRINT:
298 case IDS_CONTENT_CONTEXT_SEARCHWEBFOR: 296 case IDS_CONTENT_CONTEXT_SEARCHWEBFOR:
299 case IDC_SPELLCHECK_SUGGESTION_0: 297 case IDC_SPELLCHECK_SUGGESTION_0:
300 case IDC_SPELLCHECK_SUGGESTION_1: 298 case IDC_SPELLCHECK_SUGGESTION_1:
301 case IDC_SPELLCHECK_SUGGESTION_2: 299 case IDC_SPELLCHECK_SUGGESTION_2:
302 case IDC_SPELLCHECK_SUGGESTION_3: 300 case IDC_SPELLCHECK_SUGGESTION_3:
303 case IDC_SPELLCHECK_SUGGESTION_4: 301 case IDC_SPELLCHECK_SUGGESTION_4:
304 case IDC_SPELLCHECK_MENU: 302 case IDC_SPELLCHECK_MENU:
305 case IDS_CONTENT_CONTEXT_LANGUAGE_SETTINGS: 303 case IDS_CONTENT_CONTEXT_LANGUAGE_SETTINGS:
306 case IDS_CONTENT_CONTEXT_VIEWFRAMEINFO: 304 case IDS_CONTENT_CONTEXT_VIEWFRAMEINFO:
307 return true; 305 return true;
308 306
309 case IDC_CHECK_SPELLING_OF_THIS_FIELD: 307 case IDC_CHECK_SPELLING_OF_THIS_FIELD:
310 return source_tab_contents_->profile()->GetPrefs()->GetBoolean( 308 return profile_->GetPrefs()->GetBoolean(prefs::kEnableSpellCheck);
311 prefs::kEnableSpellCheck);
312 309
313 case IDS_CONTENT_CONTEXT_SAVEFRAMEAS: 310 case IDS_CONTENT_CONTEXT_SAVEFRAMEAS:
314 case IDS_CONTENT_CONTEXT_PRINTFRAME: 311 case IDS_CONTENT_CONTEXT_PRINTFRAME:
315 case IDS_CONTENT_CONTEXT_ADDSEARCHENGINE: // Not implemented. 312 case IDS_CONTENT_CONTEXT_ADDSEARCHENGINE: // Not implemented.
316 default: 313 default:
317 return false; 314 return false;
318 } 315 }
319 } 316 }
320 317
321 bool RenderViewContextMenu::ItemIsChecked(int id) const { 318 bool RenderViewContextMenu::ItemIsChecked(int id) const {
322 // Check box for 'Check the Spelling of this field'. 319 // Check box for 'Check the Spelling of this field'.
323 if (id == IDC_CHECK_SPELLING_OF_THIS_FIELD) { 320 if (id == IDC_CHECK_SPELLING_OF_THIS_FIELD) {
324 PrefService* prefs = source_tab_contents_->profile()->GetPrefs();
325 return (params_.spellcheck_enabled && 321 return (params_.spellcheck_enabled &&
326 prefs->GetBoolean(prefs::kEnableSpellCheck)); 322 profile_->GetPrefs()->GetBoolean(prefs::kEnableSpellCheck));
327 } 323 }
328 324
329 // Don't bother getting the display language vector if this isn't a spellcheck 325 // Don't bother getting the display language vector if this isn't a spellcheck
330 // language. 326 // language.
331 if ((id < IDC_SPELLCHECK_LANGUAGES_FIRST) || 327 if ((id < IDC_SPELLCHECK_LANGUAGES_FIRST) ||
332 (id >= IDC_SPELLCHECK_LANGUAGES_LAST)) 328 (id >= IDC_SPELLCHECK_LANGUAGES_LAST))
333 return false; 329 return false;
334 330
335 SpellChecker::Languages languages; 331 SpellChecker::Languages languages;
336 return SpellChecker::GetSpellCheckLanguages( 332 return SpellChecker::GetSpellCheckLanguages(profile_, &languages) ==
337 source_tab_contents_->profile(), &languages) ==
338 (id - IDC_SPELLCHECK_LANGUAGES_FIRST); 333 (id - IDC_SPELLCHECK_LANGUAGES_FIRST);
339 } 334 }
340 335
341 void RenderViewContextMenu::ExecuteItemCommand(int id) { 336 void RenderViewContextMenu::ExecuteItemCommand(int id) {
342 // Check to see if one of the spell check language ids have been clicked. 337 // Check to see if one of the spell check language ids have been clicked.
343 if (id >= IDC_SPELLCHECK_LANGUAGES_FIRST && 338 if (id >= IDC_SPELLCHECK_LANGUAGES_FIRST &&
344 id < IDC_SPELLCHECK_LANGUAGES_LAST) { 339 id < IDC_SPELLCHECK_LANGUAGES_LAST) {
345 const size_t language_number = id - IDC_SPELLCHECK_LANGUAGES_FIRST; 340 const size_t language_number = id - IDC_SPELLCHECK_LANGUAGES_FIRST;
346 SpellChecker::Languages languages; 341 SpellChecker::Languages languages;
347 SpellChecker::GetSpellCheckLanguages( 342 SpellChecker::GetSpellCheckLanguages(profile_, &languages);
348 source_tab_contents_->profile(), &languages);
349 if (language_number < languages.size()) { 343 if (language_number < languages.size()) {
350 StringPrefMember dictionary_language; 344 StringPrefMember dictionary_language;
351 dictionary_language.Init(prefs::kSpellCheckDictionary, 345 dictionary_language.Init(prefs::kSpellCheckDictionary,
352 source_tab_contents_->profile()->GetPrefs(), NULL); 346 profile_->GetPrefs(), NULL);
353 dictionary_language.SetValue(ASCIIToWide(languages[language_number])); 347 dictionary_language.SetValue(ASCIIToWide(languages[language_number]));
354 } 348 }
355 349
356 return; 350 return;
357 } 351 }
358 352
359 switch (id) { 353 switch (id) {
360 case IDS_CONTENT_CONTEXT_OPENLINKNEWTAB: 354 case IDS_CONTENT_CONTEXT_OPENLINKNEWTAB:
361 OpenURL(params_.link_url, NEW_BACKGROUND_TAB, PageTransition::LINK); 355 OpenURL(params_.link_url, NEW_BACKGROUND_TAB, PageTransition::LINK);
362 break; 356 break;
363 357
364 case IDS_CONTENT_CONTEXT_OPENLINKNEWWINDOW: 358 case IDS_CONTENT_CONTEXT_OPENLINKNEWWINDOW:
365 OpenURL(params_.link_url, NEW_WINDOW, PageTransition::LINK); 359 OpenURL(params_.link_url, NEW_WINDOW, PageTransition::LINK);
366 break; 360 break;
367 361
368 case IDS_CONTENT_CONTEXT_OPENLINKOFFTHERECORD: 362 case IDS_CONTENT_CONTEXT_OPENLINKOFFTHERECORD:
369 OpenURL(params_.link_url, OFF_THE_RECORD, PageTransition::LINK); 363 OpenURL(params_.link_url, OFF_THE_RECORD, PageTransition::LINK);
370 break; 364 break;
371 365
372 // TODO(paulg): Prompt the user for file name when saving links and images. 366 // TODO(paulg): Prompt the user for file name when saving links and images.
373 case IDS_CONTENT_CONTEXT_SAVEIMAGEAS: 367 case IDS_CONTENT_CONTEXT_SAVEIMAGEAS:
374 case IDS_CONTENT_CONTEXT_SAVELINKAS: { 368 case IDS_CONTENT_CONTEXT_SAVELINKAS: {
375 const GURL& referrer = 369 const GURL& referrer =
376 params_.frame_url.is_empty() ? params_.page_url : params_.frame_url; 370 params_.frame_url.is_empty() ? params_.page_url : params_.frame_url;
377 const GURL& url = 371 const GURL& url =
378 (id == IDS_CONTENT_CONTEXT_SAVELINKAS ? params_.link_url : 372 (id == IDS_CONTENT_CONTEXT_SAVELINKAS ? params_.link_url :
379 params_.image_url); 373 params_.image_url);
380 DownloadManager* dlm = 374 DownloadManager* dlm = profile_->GetDownloadManager();
381 source_tab_contents_->profile()->GetDownloadManager();
382 dlm->DownloadUrl(url, referrer, params_.frame_charset, 375 dlm->DownloadUrl(url, referrer, params_.frame_charset,
383 source_tab_contents_); 376 source_tab_contents_);
384 break; 377 break;
385 } 378 }
386 379
387 case IDS_CONTENT_CONTEXT_COPYLINKLOCATION: 380 case IDS_CONTENT_CONTEXT_COPYLINKLOCATION:
388 WriteURLToClipboard(params_.unfiltered_link_url); 381 WriteURLToClipboard(params_.unfiltered_link_url);
389 break; 382 break;
390 383
391 case IDS_CONTENT_CONTEXT_COPYIMAGELOCATION: 384 case IDS_CONTENT_CONTEXT_COPYIMAGELOCATION:
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 420
428 case IDS_CONTENT_CONTEXT_INSPECTELEMENT: 421 case IDS_CONTENT_CONTEXT_INSPECTELEMENT:
429 Inspect(params_.x, params_.y); 422 Inspect(params_.x, params_.y);
430 break; 423 break;
431 424
432 case IDS_CONTENT_CONTEXT_VIEWPAGEINFO: { 425 case IDS_CONTENT_CONTEXT_VIEWPAGEINFO: {
433 #if defined(OS_WIN) 426 #if defined(OS_WIN)
434 NavigationEntry* nav_entry = 427 NavigationEntry* nav_entry =
435 source_tab_contents_->controller().GetActiveEntry(); 428 source_tab_contents_->controller().GetActiveEntry();
436 PageInfoWindow::CreatePageInfo( 429 PageInfoWindow::CreatePageInfo(
437 source_tab_contents_->profile(), 430 profile_,
438 nav_entry, 431 nav_entry,
439 source_tab_contents_->GetContentNativeView(), 432 source_tab_contents_->GetContentNativeView(),
440 PageInfoWindow::SECURITY); 433 PageInfoWindow::SECURITY);
441 #else 434 #else
442 // TODO(port): port PageInfoWindow. 435 // TODO(port): port PageInfoWindow.
443 NOTIMPLEMENTED() << "IDS_CONTENT_CONTEXT_VIEWPAGEINFO"; 436 NOTIMPLEMENTED() << "IDS_CONTENT_CONTEXT_VIEWPAGEINFO";
444 #endif 437 #endif
445 break; 438 break;
446 } 439 }
447 440
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 SSLManager::DeserializeSecurityInfo(params_.security_info, 473 SSLManager::DeserializeSecurityInfo(params_.security_info,
481 &cert_id, 474 &cert_id,
482 &cert_status, 475 &cert_status,
483 &security_bits); 476 &security_bits);
484 ssl.set_cert_id(cert_id); 477 ssl.set_cert_id(cert_id);
485 ssl.set_cert_status(cert_status); 478 ssl.set_cert_status(cert_status);
486 ssl.set_security_bits(security_bits); 479 ssl.set_security_bits(security_bits);
487 } 480 }
488 #if defined(OS_WIN) 481 #if defined(OS_WIN)
489 PageInfoWindow::CreateFrameInfo( 482 PageInfoWindow::CreateFrameInfo(
490 source_tab_contents_->profile(), 483 profile_,
491 params_.frame_url, 484 params_.frame_url,
492 ssl, 485 ssl,
493 source_tab_contents_->GetContentNativeView(), 486 source_tab_contents_->GetContentNativeView(),
494 PageInfoWindow::SECURITY); 487 PageInfoWindow::SECURITY);
495 #else 488 #else
496 // TODO(port): port PageInfoWindow. 489 // TODO(port): port PageInfoWindow.
497 NOTIMPLEMENTED() << "IDS_CONTENT_CONTEXT_VIEWFRAMEINFO"; 490 NOTIMPLEMENTED() << "IDS_CONTENT_CONTEXT_VIEWFRAMEINFO";
498 #endif 491 #endif
499 break; 492 break;
500 } 493 }
(...skipping 20 matching lines...) Expand all
521 514
522 case IDS_CONTENT_CONTEXT_DELETE: 515 case IDS_CONTENT_CONTEXT_DELETE:
523 source_tab_contents_->render_view_host()->Delete(); 516 source_tab_contents_->render_view_host()->Delete();
524 break; 517 break;
525 518
526 case IDS_CONTENT_CONTEXT_SELECTALL: 519 case IDS_CONTENT_CONTEXT_SELECTALL:
527 source_tab_contents_->render_view_host()->SelectAll(); 520 source_tab_contents_->render_view_host()->SelectAll();
528 break; 521 break;
529 522
530 case IDS_CONTENT_CONTEXT_SEARCHWEBFOR: { 523 case IDS_CONTENT_CONTEXT_SEARCHWEBFOR: {
531 const TemplateURL* const default_provider = source_tab_contents_-> 524 const TemplateURL* const default_provider =
532 profile()->GetTemplateURLModel()->GetDefaultSearchProvider(); 525 profile_->GetTemplateURLModel()->GetDefaultSearchProvider();
533 DCHECK(default_provider); // The context menu should not contain this 526 DCHECK(default_provider); // The context menu should not contain this
534 // item when there is no provider. 527 // item when there is no provider.
535 const TemplateURLRef* const search_url = default_provider->url(); 528 const TemplateURLRef* const search_url = default_provider->url();
536 DCHECK(search_url->SupportsReplacement()); 529 DCHECK(search_url->SupportsReplacement());
537 OpenURL(GURL(search_url->ReplaceSearchTerms(*default_provider, 530 OpenURL(GURL(search_url->ReplaceSearchTerms(*default_provider,
538 params_.selection_text, TemplateURLRef::NO_SUGGESTIONS_AVAILABLE, 531 params_.selection_text, TemplateURLRef::NO_SUGGESTIONS_AVAILABLE,
539 std::wstring())), NEW_FOREGROUND_TAB, PageTransition::GENERATED); 532 std::wstring())), NEW_FOREGROUND_TAB, PageTransition::GENERATED);
540 break; 533 break;
541 } 534 }
542 535
(...skipping 12 matching lines...) Expand all
555 case IDS_CONTENT_CONTEXT_ADD_TO_DICTIONARY: 548 case IDS_CONTENT_CONTEXT_ADD_TO_DICTIONARY:
556 source_tab_contents_->render_view_host()->AddToDictionary( 549 source_tab_contents_->render_view_host()->AddToDictionary(
557 params_.misspelled_word); 550 params_.misspelled_word);
558 break; 551 break;
559 552
560 case IDS_CONTENT_CONTEXT_LANGUAGE_SETTINGS: { 553 case IDS_CONTENT_CONTEXT_LANGUAGE_SETTINGS: {
561 #if defined(OS_WIN) 554 #if defined(OS_WIN)
562 // TODO(yusukes): This should be moved to some shared place of commands 555 // TODO(yusukes): This should be moved to some shared place of commands
563 // for the options stuff so that we don't have to do all this work here. 556 // for the options stuff so that we don't have to do all this work here.
564 FontsLanguagesWindowView* window_ = new FontsLanguagesWindowView( 557 FontsLanguagesWindowView* window_ = new FontsLanguagesWindowView(
565 source_tab_contents_->profile()); 558 profile_);
566 views::Window::CreateChromeWindow( 559 views::Window::CreateChromeWindow(
567 platform_util::GetTopLevel( 560 platform_util::GetTopLevel(
568 source_tab_contents_->GetContentNativeView()), 561 source_tab_contents_->GetContentNativeView()),
569 gfx::Rect(), window_)->Show(); 562 gfx::Rect(), window_)->Show();
570 window_->SelectLanguagesTab(); 563 window_->SelectLanguagesTab();
571 #else 564 #else
572 // TODO(port): need views::Window 565 // TODO(port): need views::Window
573 NOTIMPLEMENTED() << "IDS_CONTENT_CONTEXT_LANGUAGE_SETTINGS"; 566 NOTIMPLEMENTED() << "IDS_CONTENT_CONTEXT_LANGUAGE_SETTINGS";
574 #endif 567 #endif
575 break; 568 break;
(...skipping 29 matching lines...) Expand all
605 598
606 // Don't inspect about:network, about:memory, etc. 599 // Don't inspect about:network, about:memory, etc.
607 // However, we do want to inspect about:blank, which is often 600 // However, we do want to inspect about:blank, which is often
608 // used by ordinary web pages. 601 // used by ordinary web pages.
609 if (active_entry->display_url().SchemeIs(chrome::kAboutScheme) && 602 if (active_entry->display_url().SchemeIs(chrome::kAboutScheme) &&
610 !LowerCaseEqualsASCII(active_entry->display_url().path(), "blank")) 603 !LowerCaseEqualsASCII(active_entry->display_url().path(), "blank"))
611 return false; 604 return false;
612 605
613 // Don't enable the web inspector if JavaScript is disabled 606 // Don't enable the web inspector if JavaScript is disabled
614 if (id == IDS_CONTENT_CONTEXT_INSPECTELEMENT) { 607 if (id == IDS_CONTENT_CONTEXT_INSPECTELEMENT) {
615 PrefService* prefs = source_tab_contents_->profile()->GetPrefs(); 608 if (!profile_->GetPrefs()->GetBoolean(prefs::kWebKitJavascriptEnabled) ||
616 if (!prefs->GetBoolean(prefs::kWebKitJavascriptEnabled) ||
617 command_line.HasSwitch(switches::kDisableJavaScript)) 609 command_line.HasSwitch(switches::kDisableJavaScript))
618 return false; 610 return false;
619 } 611 }
620 612
621 return true; 613 return true;
622 } 614 }
623 615
624 // Controller functions -------------------------------------------------------- 616 // Controller functions --------------------------------------------------------
625 617
626 void RenderViewContextMenu::OpenURL( 618 void RenderViewContextMenu::OpenURL(
(...skipping 16 matching lines...) Expand all
643 Clipboard* clipboard = g_browser_process->clipboard(); 635 Clipboard* clipboard = g_browser_process->clipboard();
644 636
645 if (!clipboard) 637 if (!clipboard)
646 return; 638 return;
647 639
648 ScopedClipboardWriter scw(clipboard); 640 ScopedClipboardWriter scw(clipboard);
649 scw.WriteText(text); 641 scw.WriteText(text);
650 } 642 }
651 643
652 void RenderViewContextMenu::WriteURLToClipboard(const GURL& url) { 644 void RenderViewContextMenu::WriteURLToClipboard(const GURL& url) {
653 if (url.SchemeIs(chrome::kMailToScheme)) 645 if (url.SchemeIs(chrome::kMailToScheme)) {
654 WriteTextToClipboard(UTF8ToUTF16(url.path())); 646 WriteTextToClipboard(UTF8ToUTF16(url.path()));
655 else 647 } else {
656 WriteTextToClipboard(UTF8ToUTF16(url.spec())); 648 std::wstring languages =
649 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages);
650 // Unescaping path and query is not a good idea because other
651 // applications may not enocode non-ASCII characters in UTF-8.
652 // So the 4th parameter of net::FormatUrl() should be false.
653 // See crbug.com/2820.
654 WriteTextToClipboard(WideToUTF16(
655 net::FormatUrl(url, languages, false, false, NULL, NULL)));
656 }
657 } 657 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698