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

Unified Diff: chrome/browser/ui/webui/print_preview_handler.cc

Issue 7056070: PrintPreview: Preview generation should not block print button. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: '' Created 9 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/print_preview_handler.cc
diff --git a/chrome/browser/ui/webui/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview_handler.cc
index c0db5272edfa1575e71a59516b955e43cceaf0f0..55a4a7568edc00bfed742eebb7c1df1cb45d2611 100644
--- a/chrome/browser/ui/webui/print_preview_handler.cc
+++ b/chrome/browser/ui/webui/print_preview_handler.cc
@@ -374,6 +374,8 @@ void PrintPreviewHandler::RegisterMessages() {
NewCallback(this, &PrintPreviewHandler::HandleManagePrinters));
web_ui_->RegisterMessageCallback("closePrintPreviewTab",
NewCallback(this, &PrintPreviewHandler::HandleClosePreviewTab));
+ web_ui_->RegisterMessageCallback("hidePreview",
+ NewCallback(this, &PrintPreviewHandler::HandleHidePreview));
}
TabContents* PrintPreviewHandler::preview_tab() {
@@ -434,12 +436,6 @@ void PrintPreviewHandler::HandlePrint(const ListValue* args) {
UMA_HISTOGRAM_COUNTS("PrintPreview.RegeneratePreviewRequest.BeforePrint",
regenerate_preview_request_count_);
- TabContents* initiator_tab = GetInitiatorTab();
Lei Zhang 2011/06/09 09:54:55 Why did you move this code?
kmadhusu 2011/06/09 18:11:44 oops. My bad. Reverted this change.
- if (initiator_tab) {
- RenderViewHost* rvh = initiator_tab->render_view_host();
- rvh->Send(new PrintMsg_ResetScriptedPrintCount(rvh->routing_id()));
- }
-
scoped_ptr<DictionaryValue> settings(GetSettingsDictionary(args));
if (!settings.get())
return;
@@ -478,12 +474,13 @@ void PrintPreviewHandler::HandlePrint(const ListValue* args) {
SelectFile(default_filename);
} else {
+ ClearInitiatorTabDetails();
ReportPrintSettingsStats(*settings);
ReportUserActionHistogram(PRINT_TO_PRINTER);
UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintToPrinter",
GetPageCountFromSettingsDictionary(*settings));
- g_browser_process->background_printing_manager()->OwnTabContents(
- preview_tab_wrapper);
+
+ HidePreviewTab();
// The PDF being printed contains only the pages that the user selected,
// so ignore the page range and print all pages.
@@ -493,6 +490,10 @@ void PrintPreviewHandler::HandlePrint(const ListValue* args) {
}
}
+void PrintPreviewHandler::HandleHidePreview(const ListValue* args) {
+ HidePreviewTab();
+}
+
void PrintPreviewHandler::HandleGetPrinterCapabilities(
const ListValue* args) {
std::string printer_name;
@@ -645,3 +646,29 @@ void PrintPreviewHandler::FileSelected(const FilePath& path,
ActivateInitiatorTabAndClosePreviewTab();
}
+
+void PrintPreviewHandler::HidePreviewTab() {
+ PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(web_ui_);
+ if (print_preview_ui->isHidden())
+ return;
+
+ TabContentsWrapper* preview_tab_wrapper =
+ TabContentsWrapper::GetCurrentWrapperForContents(preview_tab());
+ g_browser_process->background_printing_manager()->OwnTabContents(
+ preview_tab_wrapper);
+ print_preview_ui->setTabHiddenForPrint();
+}
+
+void PrintPreviewHandler::ClearInitiatorTabDetails() {
+ TabContents* initiator_tab = GetInitiatorTab();
+ if (initiator_tab) {
+ RenderViewHost* rvh = initiator_tab->render_view_host();
+ rvh->Send(new PrintMsg_ResetScriptedPrintCount(rvh->routing_id()));
+
+ // Remove initiator tab association with the preview tab.
Lei Zhang 2011/06/09 09:54:55 You should mention why we do this here.
kmadhusu 2011/06/09 18:11:44 Done.
+ printing::PrintPreviewTabController* tab_controller =
+ printing::PrintPreviewTabController::GetInstance();
+ if (tab_controller)
+ tab_controller->EraseInitiatorTabInfo(preview_tab());
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698