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_commands.h" | 5 #include "chrome/browser/ui/browser_commands.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
10 #include "chrome/browser/bookmarks/bookmark_editor.h" | |
10 #include "chrome/browser/bookmarks/bookmark_model.h" | 11 #include "chrome/browser/bookmarks/bookmark_model.h" |
11 #include "chrome/browser/bookmarks/bookmark_utils.h" | 12 #include "chrome/browser/bookmarks/bookmark_utils.h" |
12 #include "chrome/browser/browser_process.h" | 13 #include "chrome/browser/browser_process.h" |
13 #include "chrome/browser/chrome_page_zoom.h" | 14 #include "chrome/browser/chrome_page_zoom.h" |
14 #include "chrome/browser/debugger/devtools_window.h" | 15 #include "chrome/browser/debugger/devtools_window.h" |
16 #include "chrome/browser/download/download_util.h" | |
15 #include "chrome/browser/extensions/extension_service.h" | 17 #include "chrome/browser/extensions/extension_service.h" |
16 #include "chrome/browser/favicon/favicon_tab_helper.h" | 18 #include "chrome/browser/favicon/favicon_tab_helper.h" |
17 #include "chrome/browser/lifetime/application_lifetime.h" | 19 #include "chrome/browser/lifetime/application_lifetime.h" |
18 #include "chrome/browser/platform_util.h" | 20 #include "chrome/browser/platform_util.h" |
19 #include "chrome/browser/prefs/incognito_mode_prefs.h" | 21 #include "chrome/browser/prefs/incognito_mode_prefs.h" |
20 #include "chrome/browser/prefs/pref_service.h" | 22 #include "chrome/browser/prefs/pref_service.h" |
23 #include "chrome/browser/printing/print_preview_tab_controller.h" | |
21 #include "chrome/browser/printing/print_view_manager.h" | 24 #include "chrome/browser/printing/print_view_manager.h" |
22 #include "chrome/browser/profiles/profile.h" | 25 #include "chrome/browser/profiles/profile.h" |
23 #include "chrome/browser/sessions/session_service_factory.h" | 26 #include "chrome/browser/sessions/session_service_factory.h" |
24 #include "chrome/browser/sessions/tab_restore_service_factory.h" | 27 #include "chrome/browser/sessions/tab_restore_service_factory.h" |
25 #include "chrome/browser/sessions/tab_restore_service.h" | 28 #include "chrome/browser/sessions/tab_restore_service.h" |
29 #include "chrome/browser/sessions/tab_restore_service_delegate.h" | |
26 #include "chrome/browser/ui/browser.h" | 30 #include "chrome/browser/ui/browser.h" |
31 #include "chrome/browser/ui/browser_command_controller.h" | |
27 #include "chrome/browser/ui/browser_finder.h" | 32 #include "chrome/browser/ui/browser_finder.h" |
33 #include "chrome/browser/ui/browser_tab_restore_service_delegate.h" | |
28 #include "chrome/browser/ui/browser_window.h" | 34 #include "chrome/browser/ui/browser_window.h" |
35 #include "chrome/browser/ui/constrained_window_tab_helper.h" | |
29 #include "chrome/browser/ui/find_bar/find_bar_controller.h" | 36 #include "chrome/browser/ui/find_bar/find_bar_controller.h" |
30 #include "chrome/browser/ui/find_bar/find_tab_helper.h" | 37 #include "chrome/browser/ui/find_bar/find_tab_helper.h" |
31 #include "chrome/browser/ui/omnibox/location_bar.h" | 38 #include "chrome/browser/ui/omnibox/location_bar.h" |
32 #include "chrome/browser/ui/status_bubble.h" | 39 #include "chrome/browser/ui/status_bubble.h" |
33 #include "chrome/browser/ui/tab_contents/tab_contents.h" | 40 #include "chrome/browser/ui/tab_contents/tab_contents.h" |
34 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 41 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
35 #include "chrome/browser/ui/webui/feedback_ui.h" | 42 #include "chrome/browser/ui/webui/feedback_ui.h" |
36 #include "chrome/browser/ui/webui/ntp/app_launcher_handler.h" | 43 #include "chrome/browser/ui/webui/ntp/app_launcher_handler.h" |
44 #include "chrome/browser/web_applications/web_app.h" | |
37 #include "chrome/common/chrome_switches.h" | 45 #include "chrome/common/chrome_switches.h" |
38 #include "chrome/common/net/url_util.h" | 46 #include "chrome/common/net/url_util.h" |
39 #include "chrome/common/pref_names.h" | 47 #include "chrome/common/pref_names.h" |
48 #include "content/public/common/content_restriction.h" | |
40 #include "content/public/browser/navigation_controller.h" | 49 #include "content/public/browser/navigation_controller.h" |
41 #include "content/public/browser/navigation_entry.h" | 50 #include "content/public/browser/navigation_entry.h" |
42 #include "content/public/browser/page_navigator.h" | 51 #include "content/public/browser/page_navigator.h" |
43 #include "content/public/browser/render_view_host.h" | 52 #include "content/public/browser/render_view_host.h" |
44 #include "content/public/browser/user_metrics.h" | 53 #include "content/public/browser/user_metrics.h" |
45 #include "content/public/browser/web_contents.h" | 54 #include "content/public/browser/web_contents.h" |
46 #include "content/public/browser/web_contents_view.h" | 55 #include "content/public/browser/web_contents_view.h" |
47 #include "content/public/common/url_constants.h" | 56 #include "content/public/common/url_constants.h" |
48 #include "net/base/escape.h" | 57 #include "net/base/escape.h" |
49 #include "webkit/glue/webkit_glue.h" | 58 #include "webkit/glue/webkit_glue.h" |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
116 WebContents* web_contents = GetOrCloneTabForDisposition(browser, disposition); | 125 WebContents* web_contents = GetOrCloneTabForDisposition(browser, disposition); |
117 web_contents->UserGestureDone(); | 126 web_contents->UserGestureDone(); |
118 if (!web_contents->FocusLocationBarByDefault()) | 127 if (!web_contents->FocusLocationBarByDefault()) |
119 web_contents->Focus(); | 128 web_contents->Focus(); |
120 if (ignore_cache) | 129 if (ignore_cache) |
121 web_contents->GetController().ReloadIgnoringCache(true); | 130 web_contents->GetController().ReloadIgnoringCache(true); |
122 else | 131 else |
123 web_contents->GetController().Reload(true); | 132 web_contents->GetController().Reload(true); |
124 } | 133 } |
125 | 134 |
135 bool HasConstrainedWindow(const Browser* browser) { | |
136 TabContents* tab_contents = browser->GetActiveTabContents(); | |
137 return tab_contents && tab_contents->constrained_window_tab_helper()-> | |
138 constrained_window_count(); | |
139 } | |
140 | |
141 bool PrintPreviewShowing(const Browser* browser) { | |
142 TabContents* contents = browser->GetActiveTabContents(); | |
143 printing::PrintPreviewTabController* controller = | |
144 printing::PrintPreviewTabController::GetInstance(); | |
145 return controller && (controller->GetPrintPreviewForTab(contents) || | |
146 controller->is_creating_print_preview_tab()); | |
147 } | |
148 | |
126 } // namespace | 149 } // namespace |
127 | 150 |
151 bool IsCommandEnabled(Browser* browser, int command) { | |
152 return browser->command_controller()->command_updater()->IsCommandEnabled( | |
153 command); | |
154 } | |
155 | |
156 bool SupportsCommand(Browser* browser, int command) { | |
157 return browser->command_controller()->command_updater()->SupportsCommand( | |
158 command); | |
159 } | |
160 | |
161 bool ExecuteCommand(Browser* browser, int command) { | |
162 return browser->command_controller()->command_updater()->ExecuteCommand( | |
163 command); | |
164 } | |
165 | |
166 bool ExecuteCommandWithDisposition(Browser* browser, | |
167 int command, | |
168 WindowOpenDisposition disposition) { | |
169 return browser->command_controller()->command_updater()-> | |
170 ExecuteCommandWithDisposition(command, disposition); | |
171 } | |
172 | |
173 void UpdateCommandEnabled(Browser* browser, int command, bool enabled) { | |
174 browser->command_controller()->command_updater()->UpdateCommandEnabled( | |
175 command, enabled); | |
176 } | |
177 | |
178 void AddCommandObserver(Browser* browser, | |
179 int command, | |
180 CommandObserver* observer) { | |
181 browser->command_controller()->command_updater()->AddCommandObserver( | |
182 command, observer); | |
183 } | |
184 | |
185 void RemoveCommandObserver(Browser* browser, | |
186 int command, | |
187 CommandObserver* observer) { | |
188 browser->command_controller()->command_updater()->RemoveCommandObserver( | |
189 command, observer); | |
190 } | |
191 | |
192 int GetContentRestrictions(const Browser* browser) { | |
193 int content_restrictions = 0; | |
194 WebContents* current_tab = browser->GetActiveWebContents(); | |
195 if (current_tab) { | |
196 content_restrictions = current_tab->GetContentRestrictions(); | |
197 NavigationEntry* active_entry = | |
198 current_tab->GetController().GetActiveEntry(); | |
199 // See comment in UpdateCommandsForTabState about why we call url(). | |
200 if (!download_util::IsSavableURL( | |
201 active_entry ? active_entry->GetURL() : GURL()) | |
202 || current_tab->ShowingInterstitialPage()) | |
sky
2012/06/27 03:09:28
nit: || on previous line.
| |
203 content_restrictions |= content::CONTENT_RESTRICTION_SAVE; | |
204 if (current_tab->ShowingInterstitialPage()) | |
205 content_restrictions |= content::CONTENT_RESTRICTION_PRINT; | |
206 } | |
207 return content_restrictions; | |
208 } | |
209 | |
128 void NewEmptyWindow(Profile* profile) { | 210 void NewEmptyWindow(Profile* profile) { |
129 bool incognito = profile->IsOffTheRecord(); | 211 bool incognito = profile->IsOffTheRecord(); |
130 PrefService* prefs = profile->GetPrefs(); | 212 PrefService* prefs = profile->GetPrefs(); |
131 if (incognito) { | 213 if (incognito) { |
132 if (IncognitoModePrefs::GetAvailability(prefs) == | 214 if (IncognitoModePrefs::GetAvailability(prefs) == |
133 IncognitoModePrefs::DISABLED) { | 215 IncognitoModePrefs::DISABLED) { |
134 incognito = false; | 216 incognito = false; |
135 } | 217 } |
136 } else { | 218 } else { |
137 if (browser_defaults::kAlwaysOpenIncognitoWindow && | 219 if (browser_defaults::kAlwaysOpenIncognitoWindow && |
(...skipping 30 matching lines...) Expand all Loading... | |
168 service->RestoreMostRecentEntry(NULL); | 250 service->RestoreMostRecentEntry(NULL); |
169 } | 251 } |
170 | 252 |
171 void OpenURLOffTheRecord(Profile* profile, const GURL& url) { | 253 void OpenURLOffTheRecord(Profile* profile, const GURL& url) { |
172 Browser* browser = browser::FindOrCreateTabbedBrowser( | 254 Browser* browser = browser::FindOrCreateTabbedBrowser( |
173 profile->GetOffTheRecordProfile()); | 255 profile->GetOffTheRecordProfile()); |
174 browser->AddSelectedTabWithURL(url, content::PAGE_TRANSITION_LINK); | 256 browser->AddSelectedTabWithURL(url, content::PAGE_TRANSITION_LINK); |
175 browser->window()->Show(); | 257 browser->window()->Show(); |
176 } | 258 } |
177 | 259 |
178 bool CanGoBack(Browser* browser) { | 260 bool CanGoBack(const Browser* browser) { |
179 return browser->GetActiveWebContents()->GetController().CanGoBack(); | 261 return browser->GetActiveWebContents()->GetController().CanGoBack(); |
180 } | 262 } |
181 | 263 |
182 void GoBack(Browser* browser, WindowOpenDisposition disposition) { | 264 void GoBack(Browser* browser, WindowOpenDisposition disposition) { |
183 content::RecordAction(UserMetricsAction("Back")); | 265 content::RecordAction(UserMetricsAction("Back")); |
184 | 266 |
185 TabContents* current_tab = browser->GetActiveTabContents(); | 267 TabContents* current_tab = browser->GetActiveTabContents(); |
186 if (CanGoBack(browser)) { | 268 if (CanGoBack(browser)) { |
187 WebContents* new_tab = GetOrCloneTabForDisposition(browser, disposition); | 269 WebContents* new_tab = GetOrCloneTabForDisposition(browser, disposition); |
188 // If we are on an interstitial page and clone the tab, it won't be copied | 270 // If we are on an interstitial page and clone the tab, it won't be copied |
189 // to the new tab, so we don't need to go back. | 271 // to the new tab, so we don't need to go back. |
190 if (current_tab->web_contents()->ShowingInterstitialPage() && | 272 if (current_tab->web_contents()->ShowingInterstitialPage() && |
191 (new_tab != current_tab->web_contents())) | 273 (new_tab != current_tab->web_contents())) |
192 return; | 274 return; |
193 new_tab->GetController().GoBack(); | 275 new_tab->GetController().GoBack(); |
194 } | 276 } |
195 } | 277 } |
196 | 278 |
197 bool CanGoForward(Browser* browser) { | 279 bool CanGoForward(const Browser* browser) { |
198 return browser->GetActiveWebContents()->GetController().CanGoForward(); | 280 return browser->GetActiveWebContents()->GetController().CanGoForward(); |
199 } | 281 } |
200 | 282 |
201 void GoForward(Browser* browser, WindowOpenDisposition disposition) { | 283 void GoForward(Browser* browser, WindowOpenDisposition disposition) { |
202 content::RecordAction(UserMetricsAction("Forward")); | 284 content::RecordAction(UserMetricsAction("Forward")); |
203 if (CanGoForward(browser)) { | 285 if (CanGoForward(browser)) { |
204 GetOrCloneTabForDisposition(browser, disposition)-> | 286 GetOrCloneTabForDisposition(browser, disposition)-> |
205 GetController().GoForward(); | 287 GetController().GoForward(); |
206 } | 288 } |
207 } | 289 } |
(...skipping 12 matching lines...) Expand all Loading... | |
220 void Reload(Browser* browser, WindowOpenDisposition disposition) { | 302 void Reload(Browser* browser, WindowOpenDisposition disposition) { |
221 content::RecordAction(UserMetricsAction("Reload")); | 303 content::RecordAction(UserMetricsAction("Reload")); |
222 ReloadInternal(browser, disposition, false); | 304 ReloadInternal(browser, disposition, false); |
223 } | 305 } |
224 | 306 |
225 void ReloadIgnoringCache(Browser* browser, WindowOpenDisposition disposition) { | 307 void ReloadIgnoringCache(Browser* browser, WindowOpenDisposition disposition) { |
226 content::RecordAction(UserMetricsAction("ReloadIgnoringCache")); | 308 content::RecordAction(UserMetricsAction("ReloadIgnoringCache")); |
227 ReloadInternal(browser, disposition, true); | 309 ReloadInternal(browser, disposition, true); |
228 } | 310 } |
229 | 311 |
312 bool CanReload(const Browser* browser) { | |
313 return !browser->is_devtools(); | |
314 } | |
315 | |
230 void Home(Browser* browser, WindowOpenDisposition disposition) { | 316 void Home(Browser* browser, WindowOpenDisposition disposition) { |
231 content::RecordAction(UserMetricsAction("Home")); | 317 content::RecordAction(UserMetricsAction("Home")); |
232 browser->OpenURL(OpenURLParams( | 318 browser->OpenURL(OpenURLParams( |
233 browser->profile()->GetHomePage(), Referrer(), disposition, | 319 browser->profile()->GetHomePage(), Referrer(), disposition, |
234 content::PageTransitionFromInt( | 320 content::PageTransitionFromInt( |
235 content::PAGE_TRANSITION_AUTO_BOOKMARK | | 321 content::PAGE_TRANSITION_AUTO_BOOKMARK | |
236 content::PAGE_TRANSITION_HOME_PAGE), | 322 content::PAGE_TRANSITION_HOME_PAGE), |
237 false)); | 323 false)); |
238 } | 324 } |
239 | 325 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
308 // See http://crbug.com/6380. | 394 // See http://crbug.com/6380. |
309 b->GetActiveWebContents()->GetView()->RestoreFocus(); | 395 b->GetActiveWebContents()->GetView()->RestoreFocus(); |
310 } | 396 } |
311 } | 397 } |
312 | 398 |
313 void CloseTab(Browser* browser) { | 399 void CloseTab(Browser* browser) { |
314 content::RecordAction(UserMetricsAction("CloseTab_Accelerator")); | 400 content::RecordAction(UserMetricsAction("CloseTab_Accelerator")); |
315 browser->tab_strip_model()->CloseSelectedTabs(); | 401 browser->tab_strip_model()->CloseSelectedTabs(); |
316 } | 402 } |
317 | 403 |
404 void RestoreTab(Browser* browser) { | |
405 content::RecordAction(UserMetricsAction("RestoreTab")); | |
406 TabRestoreService* service = | |
407 TabRestoreServiceFactory::GetForProfile(browser->profile()); | |
408 if (service) | |
409 service->RestoreMostRecentEntry(browser->tab_restore_service_delegate()); | |
410 } | |
411 | |
412 bool CanRestoreTab(const Browser* browser) { | |
413 TabRestoreService* service = | |
414 TabRestoreServiceFactory::GetForProfile(browser->profile()); | |
415 return service ? !service->entries().empty() : false; | |
sky
2012/06/27 03:09:28
nit: return service && !service->entries().empty()
| |
416 } | |
417 | |
318 void SelectNextTab(Browser* browser) { | 418 void SelectNextTab(Browser* browser) { |
319 content::RecordAction(UserMetricsAction("SelectNextTab")); | 419 content::RecordAction(UserMetricsAction("SelectNextTab")); |
320 browser->tab_strip_model()->SelectNextTab(); | 420 browser->tab_strip_model()->SelectNextTab(); |
321 } | 421 } |
322 | 422 |
323 void SelectPreviousTab(Browser* browser) { | 423 void SelectPreviousTab(Browser* browser) { |
324 content::RecordAction(UserMetricsAction("SelectPrevTab")); | 424 content::RecordAction(UserMetricsAction("SelectPrevTab")); |
325 browser->tab_strip_model()->SelectPreviousTab(); | 425 browser->tab_strip_model()->SelectPreviousTab(); |
326 } | 426 } |
327 | 427 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
359 void SelectLastTab(Browser* browser) { | 459 void SelectLastTab(Browser* browser) { |
360 content::RecordAction(UserMetricsAction("SelectLastTab")); | 460 content::RecordAction(UserMetricsAction("SelectLastTab")); |
361 browser->tab_strip_model()->SelectLastTab(); | 461 browser->tab_strip_model()->SelectLastTab(); |
362 } | 462 } |
363 | 463 |
364 void DuplicateTab(Browser* browser) { | 464 void DuplicateTab(Browser* browser) { |
365 content::RecordAction(UserMetricsAction("Duplicate")); | 465 content::RecordAction(UserMetricsAction("Duplicate")); |
366 browser->DuplicateContentsAt(browser->active_index()); | 466 browser->DuplicateContentsAt(browser->active_index()); |
367 } | 467 } |
368 | 468 |
469 bool CanDuplicateTab(const Browser* browser) { | |
470 WebContents* contents = browser->GetActiveWebContents(); | |
471 return contents && contents->GetController().GetLastCommittedEntry(); | |
472 } | |
473 | |
369 void WriteCurrentURLToClipboard(Browser* browser) { | 474 void WriteCurrentURLToClipboard(Browser* browser) { |
370 // TODO(ericu): There isn't currently a metric for this. Should there be? | 475 // TODO(ericu): There isn't currently a metric for this. Should there be? |
371 // We don't appear to track the action when it comes from the | 476 // We don't appear to track the action when it comes from the |
372 // RenderContextViewMenu. | 477 // RenderContextViewMenu. |
373 | 478 |
374 WebContents* contents = browser->GetActiveWebContents(); | 479 WebContents* contents = browser->GetActiveWebContents(); |
375 if (!browser->toolbar_model()->ShouldDisplayURL()) | 480 if (!browser->toolbar_model()->ShouldDisplayURL()) |
376 return; | 481 return; |
377 | 482 |
378 chrome_common_net::WriteURLToClipboard( | 483 chrome_common_net::WriteURLToClipboard( |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
415 bookmark_utils::AddIfNotBookmarked(model, url, title); | 520 bookmark_utils::AddIfNotBookmarked(model, url, title); |
416 // Make sure the model actually added a bookmark before showing the star. A | 521 // Make sure the model actually added a bookmark before showing the star. A |
417 // bookmark isn't created if the url is invalid. | 522 // bookmark isn't created if the url is invalid. |
418 if (browser->window()->IsActive() && model->IsBookmarked(url)) { | 523 if (browser->window()->IsActive() && model->IsBookmarked(url)) { |
419 // Only show the bubble if the window is active, otherwise we may get into | 524 // Only show the bubble if the window is active, otherwise we may get into |
420 // weird situations where the bubble is deleted as soon as it is shown. | 525 // weird situations where the bubble is deleted as soon as it is shown. |
421 browser->window()->ShowBookmarkBubble(url, was_bookmarked); | 526 browser->window()->ShowBookmarkBubble(url, was_bookmarked); |
422 } | 527 } |
423 } | 528 } |
424 | 529 |
530 bool CanBookmarkCurrentPage(const Browser* browser) { | |
531 BookmarkModel* model = browser->profile()->GetBookmarkModel(); | |
532 return browser_defaults::bookmarks_enabled && | |
533 browser->profile()->GetPrefs()->GetBoolean( | |
534 prefs::kEditBookmarksEnabled) && | |
535 model && model->IsLoaded() && browser->is_type_tabbed(); | |
536 } | |
537 | |
538 void BookmarkAllTabs(Browser* browser) { | |
539 BookmarkEditor::ShowBookmarkAllTabsDialog(browser); | |
540 } | |
541 | |
542 bool CanBookmarkAllTabs(const Browser* browser) { | |
543 return browser->tab_count() > 1 && CanBookmarkCurrentPage(browser); | |
544 } | |
545 | |
425 #if !defined(OS_WIN) | 546 #if !defined(OS_WIN) |
426 void PinCurrentPageToStartScreen(Browser* browser) { | 547 void PinCurrentPageToStartScreen(Browser* browser) { |
427 } | 548 } |
428 #endif | 549 #endif |
429 | 550 |
430 void SavePage(Browser* browser) { | 551 void SavePage(Browser* browser) { |
431 content::RecordAction(UserMetricsAction("SavePage")); | 552 content::RecordAction(UserMetricsAction("SavePage")); |
432 WebContents* current_tab = browser->GetActiveWebContents(); | 553 WebContents* current_tab = browser->GetActiveWebContents(); |
433 if (current_tab && current_tab->GetContentsMimeType() == "application/pdf") | 554 if (current_tab && current_tab->GetContentsMimeType() == "application/pdf") |
434 content::RecordAction(UserMetricsAction("PDF.SavePage")); | 555 content::RecordAction(UserMetricsAction("PDF.SavePage")); |
435 current_tab->OnSavePage(); | 556 current_tab->OnSavePage(); |
436 } | 557 } |
437 | 558 |
559 bool CanSavePage(const Browser* browser) { | |
560 if (!g_browser_process->local_state()->GetBoolean( | |
561 prefs::kAllowFileSelectionDialogs)) { | |
562 return false; | |
563 } | |
564 return !browser->is_devtools() && | |
565 !(GetContentRestrictions(browser) & content::CONTENT_RESTRICTION_SAVE); | |
566 } | |
567 | |
438 void ShowFindBar(Browser* browser) { | 568 void ShowFindBar(Browser* browser) { |
439 browser->GetFindBarController()->Show(); | 569 browser->GetFindBarController()->Show(); |
440 } | 570 } |
441 | 571 |
442 void ShowPageInfo(Browser* browser, | 572 void ShowPageInfo(Browser* browser, |
443 content::WebContents* web_contents, | 573 content::WebContents* web_contents, |
444 const GURL& url, | 574 const GURL& url, |
445 const SSLStatus& ssl, | 575 const SSLStatus& ssl, |
446 bool show_history) { | 576 bool show_history) { |
447 Profile* profile = Profile::FromBrowserContext( | 577 Profile* profile = Profile::FromBrowserContext( |
(...skipping 18 matching lines...) Expand all Loading... | |
466 | 596 |
467 void Print(Browser* browser) { | 597 void Print(Browser* browser) { |
468 if (g_browser_process->local_state()->GetBoolean( | 598 if (g_browser_process->local_state()->GetBoolean( |
469 prefs::kPrintPreviewDisabled)) { | 599 prefs::kPrintPreviewDisabled)) { |
470 browser->GetActiveTabContents()->print_view_manager()->PrintNow(); | 600 browser->GetActiveTabContents()->print_view_manager()->PrintNow(); |
471 } else { | 601 } else { |
472 browser->GetActiveTabContents()->print_view_manager()->PrintPreviewNow(); | 602 browser->GetActiveTabContents()->print_view_manager()->PrintPreviewNow(); |
473 } | 603 } |
474 } | 604 } |
475 | 605 |
606 bool CanPrint(const Browser* browser) { | |
607 if (!g_browser_process->local_state()->GetBoolean(prefs::kPrintingEnabled)) | |
608 return false; | |
609 | |
610 // Do not print when a constrained window is showing. It's confusing. | |
611 return !(HasConstrainedWindow(browser) || | |
612 GetContentRestrictions(browser) & content::CONTENT_RESTRICTION_PRINT); | |
613 } | |
614 | |
476 void AdvancedPrint(Browser* browser) { | 615 void AdvancedPrint(Browser* browser) { |
477 browser->GetActiveTabContents()->print_view_manager()->AdvancedPrintNow(); | 616 browser->GetActiveTabContents()->print_view_manager()->AdvancedPrintNow(); |
478 } | 617 } |
479 | 618 |
619 bool CanAdvancedPrint(const Browser* browser) { | |
620 if (!g_browser_process->local_state()->GetBoolean(prefs::kPrintingEnabled)) | |
621 return false; | |
622 | |
623 // It is always possible to advanced print when print preview is visible. | |
624 return PrintPreviewShowing(browser) || CanPrint(browser); | |
625 } | |
626 | |
480 void EmailPageLocation(Browser* browser) { | 627 void EmailPageLocation(Browser* browser) { |
481 content::RecordAction(UserMetricsAction("EmailPageLocation")); | 628 content::RecordAction(UserMetricsAction("EmailPageLocation")); |
482 WebContents* wc = browser->GetActiveWebContents(); | 629 WebContents* wc = browser->GetActiveWebContents(); |
483 DCHECK(wc); | 630 DCHECK(wc); |
484 | 631 |
485 std::string title = net::EscapeQueryParamValue( | 632 std::string title = net::EscapeQueryParamValue( |
486 UTF16ToUTF8(wc->GetTitle()), false); | 633 UTF16ToUTF8(wc->GetTitle()), false); |
487 std::string page_url = net::EscapeQueryParamValue(wc->GetURL().spec(), false); | 634 std::string page_url = net::EscapeQueryParamValue(wc->GetURL().spec(), false); |
488 std::string mailto = std::string("mailto:?subject=Fwd:%20") + | 635 std::string mailto = std::string("mailto:?subject=Fwd:%20") + |
489 title + "&body=%0A%0A" + page_url; | 636 title + "&body=%0A%0A" + page_url; |
490 platform_util::OpenExternal(GURL(mailto)); | 637 platform_util::OpenExternal(GURL(mailto)); |
491 } | 638 } |
492 | 639 |
640 bool CanEmailPageLocation(const Browser* browser) { | |
641 return browser->toolbar_model()->ShouldDisplayURL() && | |
642 browser->GetActiveWebContents()->GetURL().is_valid(); | |
643 } | |
644 | |
493 void Cut(Browser* browser) { | 645 void Cut(Browser* browser) { |
494 content::RecordAction(UserMetricsAction("Cut")); | 646 content::RecordAction(UserMetricsAction("Cut")); |
495 browser->window()->Cut(); | 647 browser->window()->Cut(); |
496 } | 648 } |
497 | 649 |
498 void Copy(Browser* browser) { | 650 void Copy(Browser* browser) { |
499 content::RecordAction(UserMetricsAction("Copy")); | 651 content::RecordAction(UserMetricsAction("Copy")); |
500 browser->window()->Copy(); | 652 browser->window()->Copy(); |
501 } | 653 } |
502 | 654 |
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
749 SessionService* session_service = | 901 SessionService* session_service = |
750 SessionServiceFactory::GetForProfileIfExisting(browser->profile()); | 902 SessionServiceFactory::GetForProfileIfExisting(browser->profile()); |
751 if (session_service) | 903 if (session_service) |
752 session_service->TabRestored(view_source_contents, false); | 904 session_service->TabRestored(view_source_contents, false); |
753 } | 905 } |
754 | 906 |
755 void ViewSelectedSource(Browser* browser) { | 907 void ViewSelectedSource(Browser* browser) { |
756 ViewSource(browser, browser->GetActiveTabContents()); | 908 ViewSource(browser, browser->GetActiveTabContents()); |
757 } | 909 } |
758 | 910 |
911 bool CanViewSource(const Browser* browser) { | |
912 return browser->GetActiveWebContents()->GetController().CanViewSource(); | |
913 } | |
914 | |
915 bool CanCreateApplicationShortcuts(const Browser* browser) { | |
916 return web_app::IsValidUrl(browser->GetActiveWebContents()->GetURL()); | |
917 } | |
918 | |
759 } // namespace chrome | 919 } // namespace chrome |
OLD | NEW |