summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-01 04:29:47 +0000
committerthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-01 04:29:47 +0000
commita8528385ebe713dc6c90a4f3bb324eb5fec9f274 (patch)
tree586013c20dcb08ace294976beb9edaaddd568af2
parent227d5affb8c090a3b2dc4feb5f1d852cdb48404d (diff)
downloadchromium_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.cc9
-rw-r--r--chrome/browser/printing/print_view_manager.cc17
-rw-r--r--chrome/browser/printing/print_view_manager.h3
-rw-r--r--chrome/browser/ui/webui/print_preview_ui.cc12
-rw-r--r--chrome/browser/ui/webui/print_preview_ui.h4
-rw-r--r--chrome/common/print_messages.h3
-rw-r--r--chrome/renderer/print_web_view_helper.cc4
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 {