diff options
author | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-01 04:29:47 +0000 |
---|---|---|
committer | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-01 04:29:47 +0000 |
commit | a8528385ebe713dc6c90a4f3bb324eb5fec9f274 (patch) | |
tree | 586013c20dcb08ace294976beb9edaaddd568af2 | |
parent | 227d5affb8c090a3b2dc4feb5f1d852cdb48404d (diff) | |
download | chromium_src-a8528385ebe713dc6c90a4f3bb324eb5fec9f274.zip chromium_src-a8528385ebe713dc6c90a4f3bb324eb5fec9f274.tar.gz chromium_src-a8528385ebe713dc6c90a4f3bb324eb5fec9f274.tar.bz2 |
Print Preview: Set source modifiable bit for scripted printing.
BUG=105933
TEST=see bug.
Review URL: http://codereview.chromium.org/8761014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@112397 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/printing/print_preview_message_handler.cc | 9 | ||||
-rw-r--r-- | chrome/browser/printing/print_view_manager.cc | 17 | ||||
-rw-r--r-- | chrome/browser/printing/print_view_manager.h | 3 | ||||
-rw-r--r-- | chrome/browser/ui/webui/print_preview_ui.cc | 12 | ||||
-rw-r--r-- | chrome/browser/ui/webui/print_preview_ui.h | 4 | ||||
-rw-r--r-- | chrome/common/print_messages.h | 3 | ||||
-rw-r--r-- | chrome/renderer/print_web_view_helper.cc | 4 |
7 files changed, 37 insertions, 15 deletions
diff --git a/chrome/browser/printing/print_preview_message_handler.cc b/chrome/browser/printing/print_preview_message_handler.cc index 7cf1f0d..50770ad 100644 --- a/chrome/browser/printing/print_preview_message_handler.cc +++ b/chrome/browser/printing/print_preview_message_handler.cc @@ -100,13 +100,8 @@ PrintPreviewUI* PrintPreviewMessageHandler::OnFailure(int document_cookie) { void PrintPreviewMessageHandler::OnRequestPrintPreview( bool source_is_modifiable) { PrintPreviewTabController::PrintPreview(tab_contents_wrapper()); - - TabContentsWrapper* print_preview_tab = GetPrintPreviewTab(); - if (!print_preview_tab || !print_preview_tab->web_ui()) - return; - PrintPreviewUI* print_preview_ui = - static_cast<PrintPreviewUI*>(print_preview_tab->web_ui()); - print_preview_ui->SetSourceIsModifiable(source_is_modifiable); + PrintPreviewUI::SetSourceIsModifiable(GetPrintPreviewTab(), + source_is_modifiable); } void PrintPreviewMessageHandler::OnDidGetPreviewPageCount( diff --git a/chrome/browser/printing/print_view_manager.cc b/chrome/browser/printing/print_view_manager.cc index ddea4c6..c89c841 100644 --- a/chrome/browser/printing/print_view_manager.cc +++ b/chrome/browser/printing/print_view_manager.cc @@ -4,6 +4,8 @@ #include "chrome/browser/printing/print_view_manager.h" +#include <map> + #include "base/bind.h" #include "base/lazy_instance.h" #include "base/memory/scoped_ptr.h" @@ -258,7 +260,8 @@ void PrintViewManager::OnPrintingFailed(int cookie) { content::NotificationService::NoDetails()); } -void PrintViewManager::OnScriptedPrintPreview(IPC::Message* reply_msg) { +void PrintViewManager::OnScriptedPrintPreview(bool source_is_modifiable, + IPC::Message* reply_msg) { BrowserThread::CurrentlyOn(BrowserThread::UI); ScriptedPrintPreviewClosureMap& map = g_scripted_print_preview_closure_map.Get(); @@ -279,6 +282,13 @@ void PrintViewManager::OnScriptedPrintPreview(IPC::Message* reply_msg) { return; } + PrintPreviewTabController* tab_controller = + PrintPreviewTabController::GetInstance(); + if (!tab_controller) { + Send(reply_msg); + return; + } + print_preview_state_ = SCRIPTED_PREVIEW; base::Closure callback = base::Bind(&PrintViewManager::OnScriptedPrintPreviewReply, @@ -287,7 +297,10 @@ void PrintViewManager::OnScriptedPrintPreview(IPC::Message* reply_msg) { map[rph] = callback; scripted_print_preview_rph_ = rph; - PrintPreviewTabController::PrintPreview(tab_); + tab_controller->PrintPreview(tab_); + PrintPreviewUI::SetSourceIsModifiable( + tab_controller->GetPrintPreviewForTab(tab_), + source_is_modifiable); } void PrintViewManager::OnScriptedPrintPreviewReply(IPC::Message* reply_msg) { diff --git a/chrome/browser/printing/print_view_manager.h b/chrome/browser/printing/print_view_manager.h index 195c3ba..1e6627b 100644 --- a/chrome/browser/printing/print_view_manager.h +++ b/chrome/browser/printing/print_view_manager.h @@ -99,7 +99,8 @@ class PrintViewManager : public content::NotificationObserver, void OnDidPrintPage(const PrintHostMsg_DidPrintPage_Params& params); void OnPrintingFailed(int cookie); - void OnScriptedPrintPreview(IPC::Message* reply_msg); + void OnScriptedPrintPreview(bool source_is_modifiable, + IPC::Message* reply_msg); void OnScriptedPrintPreviewReply(IPC::Message* reply_msg); // Processes a NOTIFY_PRINT_JOB_EVENT notification. diff --git a/chrome/browser/ui/webui/print_preview_ui.cc b/chrome/browser/ui/webui/print_preview_ui.cc index b597a7f..dd4a725 100644 --- a/chrome/browser/ui/webui/print_preview_ui.cc +++ b/chrome/browser/ui/webui/print_preview_ui.cc @@ -73,6 +73,7 @@ base::LazyInstance<PrintPreviewRequestIdMapWithLock> PrintPreviewUI::PrintPreviewUI(TabContents* contents) : ConstrainedHtmlUI(contents), initial_preview_start_time_(base::TimeTicks::Now()), + source_is_modifiable_(true), tab_closed_(false) { // WebUI owns |handler_|. handler_ = new PrintPreviewHandler(); @@ -121,8 +122,15 @@ void PrintPreviewUI::SetInitiatorTabURLAndTitle( initiator_tab_title_ = job_title; } -void PrintPreviewUI::SetSourceIsModifiable(bool source_is_modifiable) { - source_is_modifiable_ = source_is_modifiable; +// static +void PrintPreviewUI::SetSourceIsModifiable( + TabContentsWrapper* print_preview_tab, + bool source_is_modifiable) { + if (!print_preview_tab || !print_preview_tab->web_ui()) + return; + PrintPreviewUI* print_preview_ui = + static_cast<PrintPreviewUI*>(print_preview_tab->web_ui()); + print_preview_ui->source_is_modifiable_ = source_is_modifiable; } // static diff --git a/chrome/browser/ui/webui/print_preview_ui.h b/chrome/browser/ui/webui/print_preview_ui.h index de59b47..ce420c0 100644 --- a/chrome/browser/ui/webui/print_preview_ui.h +++ b/chrome/browser/ui/webui/print_preview_ui.h @@ -52,7 +52,9 @@ class PrintPreviewUI : public ConstrainedHtmlUI { bool source_is_modifiable() { return source_is_modifiable_; } - void SetSourceIsModifiable(bool source_is_modifiable); + // Set |source_is_modifiable_| for |print_preview_tab|'s PrintPreviewUI. + static void SetSourceIsModifiable(TabContentsWrapper* print_preview_tab, + bool source_is_modifiable); // Determines whether to cancel a print preview request based on // |preview_ui_addr| and |request_id|. diff --git a/chrome/common/print_messages.h b/chrome/common/print_messages.h index e4a4e9f..c0af962 100644 --- a/chrome/common/print_messages.h +++ b/chrome/common/print_messages.h @@ -390,4 +390,5 @@ IPC_MESSAGE_ROUTED1(PrintHostMsg_PrintPreviewInvalidPrinterSettings, // Run a nested message loop in the renderer until print preview for // window.print() finishes. -IPC_SYNC_MESSAGE_ROUTED0_0(PrintHostMsg_ScriptedPrintPreview) +IPC_SYNC_MESSAGE_ROUTED1_0(PrintHostMsg_ScriptedPrintPreview, + bool /* is_modifiable */) diff --git a/chrome/renderer/print_web_view_helper.cc b/chrome/renderer/print_web_view_helper.cc index 8ee1c07..9084300 100644 --- a/chrome/renderer/print_web_view_helper.cc +++ b/chrome/renderer/print_web_view_helper.cc @@ -464,7 +464,9 @@ void PrintWebViewHelper::PrintPage(WebKit::WebFrame* frame) { print_preview_context_.InitWithFrame(frame); old_print_pages_params_.reset(); // Same as in RequestPrintPreview(). - IPC::SyncMessage* msg = new PrintHostMsg_ScriptedPrintPreview(routing_id()); + IPC::SyncMessage* msg = new PrintHostMsg_ScriptedPrintPreview( + routing_id(), + print_preview_context_.IsModifiable()); msg->EnableMessagePumping(); Send(msg); } else { |