OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/ui/browser_command_controller.h" | 5 #include "chrome/browser/ui/browser_command_controller.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 namespace { | 87 namespace { |
88 | 88 |
89 enum WindowState { | 89 enum WindowState { |
90 // Not in fullscreen mode. | 90 // Not in fullscreen mode. |
91 WINDOW_STATE_NOT_FULLSCREEN, | 91 WINDOW_STATE_NOT_FULLSCREEN, |
92 | 92 |
93 // Fullscreen mode, occupying the whole screen. | 93 // Fullscreen mode, occupying the whole screen. |
94 WINDOW_STATE_FULLSCREEN, | 94 WINDOW_STATE_FULLSCREEN, |
95 }; | 95 }; |
96 | 96 |
97 // Returns |true| if entry has an internal chrome:// URL, |false| otherwise. | |
98 bool HasInternalURL(const NavigationEntry* entry) { | |
99 if (!entry) | |
100 return false; | |
101 | |
102 // Check the |virtual_url()| first. This catches regular chrome:// URLs | |
103 // including URLs that were rewritten (such as chrome://bookmarks). | |
104 if (entry->GetVirtualURL().SchemeIs(content::kChromeUIScheme)) | |
105 return true; | |
106 | |
107 // If the |virtual_url()| isn't a chrome:// URL, check if it's actually | |
108 // view-source: of a chrome:// URL. | |
109 if (entry->GetVirtualURL().SchemeIs(content::kViewSourceScheme)) | |
110 return entry->GetURL().SchemeIs(content::kChromeUIScheme); | |
111 | |
112 return false; | |
113 } | |
114 | |
115 } // namespace | 97 } // namespace |
116 | 98 |
117 namespace chrome { | 99 namespace chrome { |
118 | 100 |
119 /////////////////////////////////////////////////////////////////////////////// | 101 /////////////////////////////////////////////////////////////////////////////// |
120 // BrowserCommandController, public: | 102 // BrowserCommandController, public: |
121 | 103 |
122 BrowserCommandController::BrowserCommandController(Browser* browser) | 104 BrowserCommandController::BrowserCommandController(Browser* browser) |
123 : browser_(browser), | 105 : browser_(browser), |
124 command_updater_(this), | 106 command_updater_(this), |
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
467 case IDC_SAVE_CREDIT_CARD_FOR_PAGE: | 449 case IDC_SAVE_CREDIT_CARD_FOR_PAGE: |
468 SaveCreditCard(browser_); | 450 SaveCreditCard(browser_); |
469 break; | 451 break; |
470 case IDC_TRANSLATE_PAGE: | 452 case IDC_TRANSLATE_PAGE: |
471 Translate(browser_); | 453 Translate(browser_); |
472 break; | 454 break; |
473 case IDC_MANAGE_PASSWORDS_FOR_PAGE: | 455 case IDC_MANAGE_PASSWORDS_FOR_PAGE: |
474 ManagePasswordsForPage(browser_); | 456 ManagePasswordsForPage(browser_); |
475 break; | 457 break; |
476 | 458 |
477 // Page encoding commands | |
478 case IDC_ENCODING_AUTO_DETECT: | |
479 browser_->ToggleEncodingAutoDetect(); | |
480 break; | |
481 case IDC_ENCODING_UTF8: | |
482 case IDC_ENCODING_UTF16LE: | |
483 case IDC_ENCODING_WINDOWS1252: | |
484 case IDC_ENCODING_GBK: | |
485 case IDC_ENCODING_GB18030: | |
486 case IDC_ENCODING_BIG5: | |
487 case IDC_ENCODING_KOREAN: | |
488 case IDC_ENCODING_SHIFTJIS: | |
489 case IDC_ENCODING_ISO2022JP: | |
490 case IDC_ENCODING_EUCJP: | |
491 case IDC_ENCODING_THAI: | |
492 case IDC_ENCODING_ISO885915: | |
493 case IDC_ENCODING_MACINTOSH: | |
494 case IDC_ENCODING_ISO88592: | |
495 case IDC_ENCODING_WINDOWS1250: | |
496 case IDC_ENCODING_ISO88595: | |
497 case IDC_ENCODING_WINDOWS1251: | |
498 case IDC_ENCODING_KOI8R: | |
499 case IDC_ENCODING_KOI8U: | |
500 case IDC_ENCODING_IBM866: | |
501 case IDC_ENCODING_ISO88597: | |
502 case IDC_ENCODING_WINDOWS1253: | |
503 case IDC_ENCODING_ISO88594: | |
504 case IDC_ENCODING_ISO885913: | |
505 case IDC_ENCODING_WINDOWS1257: | |
506 case IDC_ENCODING_ISO88593: | |
507 case IDC_ENCODING_ISO885910: | |
508 case IDC_ENCODING_ISO885914: | |
509 case IDC_ENCODING_ISO885916: | |
510 case IDC_ENCODING_WINDOWS1254: | |
511 case IDC_ENCODING_ISO88596: | |
512 case IDC_ENCODING_WINDOWS1256: | |
513 case IDC_ENCODING_ISO88598: | |
514 case IDC_ENCODING_ISO88598I: | |
515 case IDC_ENCODING_WINDOWS1255: | |
516 case IDC_ENCODING_WINDOWS1258: | |
517 browser_->OverrideEncoding(id); | |
518 break; | |
519 | |
520 // Clipboard commands | 459 // Clipboard commands |
521 case IDC_CUT: | 460 case IDC_CUT: |
522 case IDC_COPY: | 461 case IDC_COPY: |
523 case IDC_PASTE: | 462 case IDC_PASTE: |
524 CutCopyPaste(browser_, id); | 463 CutCopyPaste(browser_, id); |
525 break; | 464 break; |
526 | 465 |
527 // Find-in-page | 466 // Find-in-page |
528 case IDC_FIND: | 467 case IDC_FIND: |
529 Find(browser_); | 468 Find(browser_); |
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
812 command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_2, true); | 751 command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_2, true); |
813 command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_3, true); | 752 command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_3, true); |
814 #endif | 753 #endif |
815 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) | 754 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) |
816 command_updater_.UpdateCommandEnabled(IDC_USE_SYSTEM_TITLE_BAR, true); | 755 command_updater_.UpdateCommandEnabled(IDC_USE_SYSTEM_TITLE_BAR, true); |
817 #endif | 756 #endif |
818 | 757 |
819 // Page-related commands | 758 // Page-related commands |
820 command_updater_.UpdateCommandEnabled(IDC_EMAIL_PAGE_LOCATION, true); | 759 command_updater_.UpdateCommandEnabled(IDC_EMAIL_PAGE_LOCATION, true); |
821 command_updater_.UpdateCommandEnabled(IDC_MANAGE_PASSWORDS_FOR_PAGE, true); | 760 command_updater_.UpdateCommandEnabled(IDC_MANAGE_PASSWORDS_FOR_PAGE, true); |
822 command_updater_.UpdateCommandEnabled(IDC_ENCODING_AUTO_DETECT, true); | |
823 command_updater_.UpdateCommandEnabled(IDC_ENCODING_UTF8, true); | |
824 command_updater_.UpdateCommandEnabled(IDC_ENCODING_UTF16LE, true); | |
825 command_updater_.UpdateCommandEnabled(IDC_ENCODING_WINDOWS1252, true); | |
826 command_updater_.UpdateCommandEnabled(IDC_ENCODING_GBK, true); | |
827 command_updater_.UpdateCommandEnabled(IDC_ENCODING_GB18030, true); | |
828 command_updater_.UpdateCommandEnabled(IDC_ENCODING_BIG5, true); | |
829 command_updater_.UpdateCommandEnabled(IDC_ENCODING_THAI, true); | |
830 command_updater_.UpdateCommandEnabled(IDC_ENCODING_KOREAN, true); | |
831 command_updater_.UpdateCommandEnabled(IDC_ENCODING_SHIFTJIS, true); | |
832 command_updater_.UpdateCommandEnabled(IDC_ENCODING_ISO2022JP, true); | |
833 command_updater_.UpdateCommandEnabled(IDC_ENCODING_EUCJP, true); | |
834 command_updater_.UpdateCommandEnabled(IDC_ENCODING_ISO885915, true); | |
835 command_updater_.UpdateCommandEnabled(IDC_ENCODING_MACINTOSH, true); | |
836 command_updater_.UpdateCommandEnabled(IDC_ENCODING_ISO88592, true); | |
837 command_updater_.UpdateCommandEnabled(IDC_ENCODING_WINDOWS1250, true); | |
838 command_updater_.UpdateCommandEnabled(IDC_ENCODING_ISO88595, true); | |
839 command_updater_.UpdateCommandEnabled(IDC_ENCODING_WINDOWS1251, true); | |
840 command_updater_.UpdateCommandEnabled(IDC_ENCODING_KOI8R, true); | |
841 command_updater_.UpdateCommandEnabled(IDC_ENCODING_KOI8U, true); | |
842 command_updater_.UpdateCommandEnabled(IDC_ENCODING_IBM866, true); | |
843 command_updater_.UpdateCommandEnabled(IDC_ENCODING_ISO88597, true); | |
844 command_updater_.UpdateCommandEnabled(IDC_ENCODING_WINDOWS1253, true); | |
845 command_updater_.UpdateCommandEnabled(IDC_ENCODING_ISO88594, true); | |
846 command_updater_.UpdateCommandEnabled(IDC_ENCODING_ISO885913, true); | |
847 command_updater_.UpdateCommandEnabled(IDC_ENCODING_WINDOWS1257, true); | |
848 command_updater_.UpdateCommandEnabled(IDC_ENCODING_ISO88593, true); | |
849 command_updater_.UpdateCommandEnabled(IDC_ENCODING_ISO885910, true); | |
850 command_updater_.UpdateCommandEnabled(IDC_ENCODING_ISO885914, true); | |
851 command_updater_.UpdateCommandEnabled(IDC_ENCODING_ISO885916, true); | |
852 command_updater_.UpdateCommandEnabled(IDC_ENCODING_WINDOWS1254, true); | |
853 command_updater_.UpdateCommandEnabled(IDC_ENCODING_ISO88596, true); | |
854 command_updater_.UpdateCommandEnabled(IDC_ENCODING_WINDOWS1256, true); | |
855 command_updater_.UpdateCommandEnabled(IDC_ENCODING_ISO88598, true); | |
856 command_updater_.UpdateCommandEnabled(IDC_ENCODING_ISO88598I, true); | |
857 command_updater_.UpdateCommandEnabled(IDC_ENCODING_WINDOWS1255, true); | |
858 command_updater_.UpdateCommandEnabled(IDC_ENCODING_WINDOWS1258, true); | |
859 | 761 |
860 // Zoom | 762 // Zoom |
861 command_updater_.UpdateCommandEnabled(IDC_ZOOM_MENU, true); | 763 command_updater_.UpdateCommandEnabled(IDC_ZOOM_MENU, true); |
862 command_updater_.UpdateCommandEnabled(IDC_ZOOM_PLUS, true); | 764 command_updater_.UpdateCommandEnabled(IDC_ZOOM_PLUS, true); |
863 command_updater_.UpdateCommandEnabled(IDC_ZOOM_NORMAL, false); | 765 command_updater_.UpdateCommandEnabled(IDC_ZOOM_NORMAL, false); |
864 command_updater_.UpdateCommandEnabled(IDC_ZOOM_MINUS, true); | 766 command_updater_.UpdateCommandEnabled(IDC_ZOOM_MINUS, true); |
865 | 767 |
866 // Show various bits of UI | 768 // Show various bits of UI |
867 const bool guest_session = profile()->IsGuestSession() || | 769 const bool guest_session = profile()->IsGuestSession() || |
868 profile()->IsSystemProfile(); | 770 profile()->IsSystemProfile(); |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1007 window()->SetStarredState( | 909 window()->SetStarredState( |
1008 BookmarkTabHelper::FromWebContents(current_web_contents)->is_starred()); | 910 BookmarkTabHelper::FromWebContents(current_web_contents)->is_starred()); |
1009 window()->ZoomChangedForActiveTab(false); | 911 window()->ZoomChangedForActiveTab(false); |
1010 command_updater_.UpdateCommandEnabled(IDC_VIEW_SOURCE, | 912 command_updater_.UpdateCommandEnabled(IDC_VIEW_SOURCE, |
1011 CanViewSource(browser_)); | 913 CanViewSource(browser_)); |
1012 command_updater_.UpdateCommandEnabled(IDC_EMAIL_PAGE_LOCATION, | 914 command_updater_.UpdateCommandEnabled(IDC_EMAIL_PAGE_LOCATION, |
1013 CanEmailPageLocation(browser_)); | 915 CanEmailPageLocation(browser_)); |
1014 if (browser_->is_devtools()) | 916 if (browser_->is_devtools()) |
1015 command_updater_.UpdateCommandEnabled(IDC_OPEN_FILE, false); | 917 command_updater_.UpdateCommandEnabled(IDC_OPEN_FILE, false); |
1016 | 918 |
1017 // Changing the encoding is not possible on Chrome-internal webpages. | |
1018 NavigationController& nc = current_web_contents->GetController(); | |
1019 bool is_chrome_internal = HasInternalURL(nc.GetLastCommittedEntry()) || | |
1020 current_web_contents->ShowingInterstitialPage(); | |
1021 command_updater_.UpdateCommandEnabled(IDC_ENCODING_MENU, | |
1022 !is_chrome_internal && current_web_contents->IsSavable()); | |
1023 | |
1024 // Show various bits of UI | 919 // Show various bits of UI |
1025 // TODO(pinkerton): Disable app-mode in the model until we implement it | 920 // TODO(pinkerton): Disable app-mode in the model until we implement it |
1026 // on the Mac. Be sure to remove both ifdefs. http://crbug.com/13148 | 921 // on the Mac. Be sure to remove both ifdefs. http://crbug.com/13148 |
1027 #if !defined(OS_MACOSX) | 922 #if !defined(OS_MACOSX) |
1028 command_updater_.UpdateCommandEnabled( | 923 command_updater_.UpdateCommandEnabled( |
1029 IDC_CREATE_SHORTCUTS, | 924 IDC_CREATE_SHORTCUTS, |
1030 CanCreateApplicationShortcuts(browser_)); | 925 CanCreateApplicationShortcuts(browser_)); |
1031 #endif | 926 #endif |
1032 command_updater_.UpdateCommandEnabled(IDC_CREATE_HOSTED_APP, | 927 command_updater_.UpdateCommandEnabled(IDC_CREATE_HOSTED_APP, |
1033 CanCreateBookmarkApp(browser_)); | 928 CanCreateBookmarkApp(browser_)); |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1264 | 1159 |
1265 BrowserWindow* BrowserCommandController::window() { | 1160 BrowserWindow* BrowserCommandController::window() { |
1266 return browser_->window(); | 1161 return browser_->window(); |
1267 } | 1162 } |
1268 | 1163 |
1269 Profile* BrowserCommandController::profile() { | 1164 Profile* BrowserCommandController::profile() { |
1270 return browser_->profile(); | 1165 return browser_->profile(); |
1271 } | 1166 } |
1272 | 1167 |
1273 } // namespace chrome | 1168 } // namespace chrome |
OLD | NEW |