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

Side by Side Diff: chrome/browser/ui/browser.cc

Issue 8136027: Print Preview: Make print preview tab modal. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix flaky browser tests Created 9 years, 2 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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.h" 5 #include "chrome/browser/ui/browser.h"
6 6
7 #if defined(OS_WIN) 7 #if defined(OS_WIN)
8 #include <windows.h> 8 #include <windows.h>
9 #include <shellapi.h> 9 #include <shellapi.h>
10 #endif // OS_WIN 10 #endif // OS_WIN
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 #include "chrome/browser/instant/instant_unload_handler.h" 63 #include "chrome/browser/instant/instant_unload_handler.h"
64 #include "chrome/browser/intents/register_intent_handler_infobar_delegate.h" 64 #include "chrome/browser/intents/register_intent_handler_infobar_delegate.h"
65 #include "chrome/browser/intents/web_intents_registry_factory.h" 65 #include "chrome/browser/intents/web_intents_registry_factory.h"
66 #include "chrome/browser/net/browser_url_util.h" 66 #include "chrome/browser/net/browser_url_util.h"
67 #include "chrome/browser/net/url_fixer_upper.h" 67 #include "chrome/browser/net/url_fixer_upper.h"
68 #include "chrome/browser/notifications/notification_ui_manager.h" 68 #include "chrome/browser/notifications/notification_ui_manager.h"
69 #include "chrome/browser/platform_util.h" 69 #include "chrome/browser/platform_util.h"
70 #include "chrome/browser/prefs/incognito_mode_prefs.h" 70 #include "chrome/browser/prefs/incognito_mode_prefs.h"
71 #include "chrome/browser/prefs/pref_service.h" 71 #include "chrome/browser/prefs/pref_service.h"
72 #include "chrome/browser/prerender/prerender_tab_helper.h" 72 #include "chrome/browser/prerender/prerender_tab_helper.h"
73 #include "chrome/browser/printing/background_printing_manager.h"
74 #include "chrome/browser/printing/cloud_print/cloud_print_setup_flow.h" 73 #include "chrome/browser/printing/cloud_print/cloud_print_setup_flow.h"
75 #include "chrome/browser/printing/print_preview_tab_controller.h" 74 #include "chrome/browser/printing/print_preview_tab_controller.h"
76 #include "chrome/browser/printing/print_view_manager.h" 75 #include "chrome/browser/printing/print_view_manager.h"
77 #include "chrome/browser/profiles/profile.h" 76 #include "chrome/browser/profiles/profile.h"
78 #include "chrome/browser/profiles/profile_manager.h" 77 #include "chrome/browser/profiles/profile_manager.h"
79 #include "chrome/browser/sessions/restore_tab_helper.h" 78 #include "chrome/browser/sessions/restore_tab_helper.h"
80 #include "chrome/browser/sessions/session_service.h" 79 #include "chrome/browser/sessions/session_service.h"
81 #include "chrome/browser/sessions/session_service_factory.h" 80 #include "chrome/browser/sessions/session_service_factory.h"
82 #include "chrome/browser/sessions/session_types.h" 81 #include "chrome/browser/sessions/session_types.h"
83 #include "chrome/browser/sessions/tab_restore_service.h" 82 #include "chrome/browser/sessions/tab_restore_service.h"
(...skipping 3448 matching lines...) Expand 10 before | Expand all | Expand 10 after
3532 void Browser::CloseContents(TabContents* source) { 3531 void Browser::CloseContents(TabContents* source) {
3533 if (is_attempting_to_close_browser_) { 3532 if (is_attempting_to_close_browser_) {
3534 // If we're trying to close the browser, just clear the state related to 3533 // If we're trying to close the browser, just clear the state related to
3535 // waiting for unload to fire. Don't actually try to close the tab as it 3534 // waiting for unload to fire. Don't actually try to close the tab as it
3536 // will go down the slow shutdown path instead of the fast path of killing 3535 // will go down the slow shutdown path instead of the fast path of killing
3537 // all the renderer processes. 3536 // all the renderer processes.
3538 ClearUnloadState(source, true); 3537 ClearUnloadState(source, true);
3539 return; 3538 return;
3540 } 3539 }
3541 3540
3542 // Various sites have a pattern which open a new window with output formatted
3543 // for printing, then include a print button, which does window.print();
3544 // window.close(); An example is printing Virgin America boarding
3545 // pass. Instead of closing, when a print tab is associated with this tab,
3546 // tell the BackgroundPrintingManager to own it, which causes it to be
3547 // hidden and eventually closed when the print window is closed.
3548 TabContentsWrapper* source_wrapper =
3549 TabContentsWrapper::GetCurrentWrapperForContents(source);
3550 if (g_browser_process->background_printing_manager()->
3551 OwnInitiatorTab(source_wrapper)) {
3552 return;
3553 }
3554
3555 int index = tab_handler_->GetTabStripModel()->GetWrapperIndex(source); 3541 int index = tab_handler_->GetTabStripModel()->GetWrapperIndex(source);
3556 if (index == TabStripModel::kNoTab) { 3542 if (index == TabStripModel::kNoTab) {
3557 NOTREACHED() << "CloseContents called for tab not in our strip"; 3543 NOTREACHED() << "CloseContents called for tab not in our strip";
3558 return; 3544 return;
3559 } 3545 }
3560 tab_handler_->GetTabStripModel()->CloseTabContentsAt( 3546 tab_handler_->GetTabStripModel()->CloseTabContentsAt(
3561 index, 3547 index,
3562 TabStripModel::CLOSE_CREATE_HISTORICAL_TAB); 3548 TabStripModel::CLOSE_CREATE_HISTORICAL_TAB);
3563 } 3549 }
3564 3550
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
3821 NavigationType::Type navigation_type) { 3807 NavigationType::Type navigation_type) {
3822 // Don't update history if running as app. 3808 // Don't update history if running as app.
3823 return !IsApplication(); 3809 return !IsApplication();
3824 } 3810 }
3825 3811
3826 void Browser::ContentRestrictionsChanged(TabContents* source) { 3812 void Browser::ContentRestrictionsChanged(TabContents* source) {
3827 UpdateCommandsForContentRestrictionState(); 3813 UpdateCommandsForContentRestrictionState();
3828 } 3814 }
3829 3815
3830 void Browser::RendererUnresponsive(TabContents* source) { 3816 void Browser::RendererUnresponsive(TabContents* source) {
3817 // Ignore hangs if print preview is open.
3818 TabContentsWrapper* source_wrapper =
3819 TabContentsWrapper::GetCurrentWrapperForContents(source);
3820 if (source_wrapper) {
3821 printing::PrintPreviewTabController* controller =
3822 printing::PrintPreviewTabController::GetInstance();
3823 if (controller) {
3824 TabContentsWrapper* preview_tab =
3825 controller->GetPrintPreviewForTab(source_wrapper);
3826 if (preview_tab && preview_tab != source_wrapper) {
3827 return;
3828 }
3829 }
3830 }
3831
3831 browser::ShowHungRendererDialog(source); 3832 browser::ShowHungRendererDialog(source);
3832 } 3833 }
3833 3834
3834 void Browser::RendererResponsive(TabContents* source) { 3835 void Browser::RendererResponsive(TabContents* source) {
3835 browser::HideHungRendererDialog(source); 3836 browser::HideHungRendererDialog(source);
3836 } 3837 }
3837 3838
3838 void Browser::WorkerCrashed(TabContents* source) { 3839 void Browser::WorkerCrashed(TabContents* source) {
3839 TabContentsWrapper* wrapper = 3840 TabContentsWrapper* wrapper =
3840 TabContentsWrapper::GetCurrentWrapperForContents(source); 3841 TabContentsWrapper::GetCurrentWrapperForContents(source);
(...skipping 789 matching lines...) Expand 10 before | Expand all | Expand 10 after
4630 if (has_constrained_window || 4631 if (has_constrained_window ||
4631 content_restrictions & CONTENT_RESTRICTION_PRINT) { 4632 content_restrictions & CONTENT_RESTRICTION_PRINT) {
4632 print_enabled = false; 4633 print_enabled = false;
4633 advanced_print_enabled = false; 4634 advanced_print_enabled = false;
4634 } 4635 }
4635 4636
4636 // The exception is print preview, 4637 // The exception is print preview,
4637 // where advanced printing is always enabled. 4638 // where advanced printing is always enabled.
4638 printing::PrintPreviewTabController* controller = 4639 printing::PrintPreviewTabController* controller =
4639 printing::PrintPreviewTabController::GetInstance(); 4640 printing::PrintPreviewTabController::GetInstance();
4640 if (controller && 4641 if (controller && controller->GetPrintPreviewForTab(wrapper)) {
4641 wrapper &&
4642 wrapper == controller->GetPrintPreviewForTab(wrapper)) {
4643 advanced_print_enabled = true; 4642 advanced_print_enabled = true;
4644 } 4643 }
4645 } 4644 }
4646 command_updater_.UpdateCommandEnabled(IDC_PRINT, print_enabled); 4645 command_updater_.UpdateCommandEnabled(IDC_PRINT, print_enabled);
4647 command_updater_.UpdateCommandEnabled(IDC_ADVANCED_PRINT, 4646 command_updater_.UpdateCommandEnabled(IDC_ADVANCED_PRINT,
4648 advanced_print_enabled); 4647 advanced_print_enabled);
4649 } 4648 }
4650 4649
4651 void Browser::UpdateReloadStopState(bool is_loading, bool force) { 4650 void Browser::UpdateReloadStopState(bool is_loading, bool force) {
4652 window_->UpdateReloadStopState(is_loading, force); 4651 window_->UpdateReloadStopState(is_loading, force);
(...skipping 686 matching lines...) Expand 10 before | Expand all | Expand 10 after
5339 window_->GetLocationBar()->ShowFirstRunBubble(bubble_type); 5338 window_->GetLocationBar()->ShowFirstRunBubble(bubble_type);
5340 } else if (is_type_tabbed()) { 5339 } else if (is_type_tabbed()) {
5341 GlobalErrorService* service = 5340 GlobalErrorService* service =
5342 GlobalErrorServiceFactory::GetForProfile(profile()); 5341 GlobalErrorServiceFactory::GetForProfile(profile());
5343 GlobalError* error = service->GetFirstGlobalErrorWithBubbleView(); 5342 GlobalError* error = service->GetFirstGlobalErrorWithBubbleView();
5344 if (error) { 5343 if (error) {
5345 error->ShowBubbleView(this); 5344 error->ShowBubbleView(this);
5346 } 5345 }
5347 } 5346 }
5348 } 5347 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698