summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-08 01:48:46 +0000
committerthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-08 01:48:46 +0000
commit0188462600befdc176733f580d3c6dd11e850097 (patch)
treea3e84775c56e24afb1bb14ed4831804945b2dcb8 /chrome
parentba50582e6f4411df453419ee8bca82d399b62ed2 (diff)
downloadchromium_src-0188462600befdc176733f580d3c6dd11e850097.zip
chromium_src-0188462600befdc176733f580d3c6dd11e850097.tar.gz
chromium_src-0188462600befdc176733f580d3c6dd11e850097.tar.bz2
Print Preview: Generate the print preview after the print preview renderer has loaded.
BUG=74088 TEST=see bug. Review URL: http://codereview.chromium.org/6623061 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77226 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/printing/print_preview_tab_controller.h8
-rw-r--r--chrome/browser/resources/print_preview.js1
-rw-r--r--chrome/browser/ui/webui/print_preview_handler.cc16
-rw-r--r--chrome/browser/ui/webui/print_preview_handler.h3
4 files changed, 24 insertions, 4 deletions
diff --git a/chrome/browser/printing/print_preview_tab_controller.h b/chrome/browser/printing/print_preview_tab_controller.h
index 95e2224..ae824c25 100644
--- a/chrome/browser/printing/print_preview_tab_controller.h
+++ b/chrome/browser/printing/print_preview_tab_controller.h
@@ -44,6 +44,10 @@ class PrintPreviewTabController
// Returns NULL if no preview tab exists for |tab|.
TabContents* GetPrintPreviewForTab(TabContents* tab) const;
+ // Returns initiator tab for |preview_tab|.
+ // Returns NULL if no initiator tab exists for |preview_tab|.
+ TabContents* GetInitiatorTab(TabContents* preview_tab);
+
// Notification observer implementation.
virtual void Observe(NotificationType type,
const NotificationSource& source,
@@ -60,10 +64,6 @@ class PrintPreviewTabController
// Value: Initiator tab.
typedef std::map<TabContents*, TabContents*> PrintPreviewTabMap;
- // Returns initiator tab for |preview_tab|.
- // Returns NULL if no initiator tab exists for |preview_tab|.
- TabContents* GetInitiatorTab(TabContents* preview_tab);
-
// Creates a new print preview tab.
TabContents* CreatePrintPreviewTab(
TabContents* initiator_tab, int browser_window_id);
diff --git a/chrome/browser/resources/print_preview.js b/chrome/browser/resources/print_preview.js
index 25b53af..eae8f0a 100644
--- a/chrome/browser/resources/print_preview.js
+++ b/chrome/browser/resources/print_preview.js
@@ -17,6 +17,7 @@ function load() {
});
chrome.send('getPrinters');
+ chrome.send('getPreview');
};
/**
diff --git a/chrome/browser/ui/webui/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview_handler.cc
index 2898519..106d096 100644
--- a/chrome/browser/ui/webui/print_preview_handler.cc
+++ b/chrome/browser/ui/webui/print_preview_handler.cc
@@ -7,8 +7,10 @@
#include "base/json/json_reader.h"
#include "base/threading/thread.h"
#include "base/values.h"
+#include "chrome/browser/printing/print_preview_tab_controller.h"
#include "content/browser/browser_thread.h"
#include "content/browser/renderer_host/render_view_host.h"
+#include "content/browser/tab_contents/tab_contents.h"
#include "printing/backend/print_backend.h"
class EnumeratePrintersTaskProxy
@@ -67,6 +69,8 @@ PrintPreviewHandler::~PrintPreviewHandler() {
void PrintPreviewHandler::RegisterMessages() {
web_ui_->RegisterMessageCallback("getPrinters",
NewCallback(this, &PrintPreviewHandler::HandleGetPrinters));
+ web_ui_->RegisterMessageCallback("getPreview",
+ NewCallback(this, &PrintPreviewHandler::HandleGetPreview));
web_ui_->RegisterMessageCallback("print",
NewCallback(this, &PrintPreviewHandler::HandlePrint));
}
@@ -80,6 +84,18 @@ void PrintPreviewHandler::HandleGetPrinters(const ListValue*) {
&EnumeratePrintersTaskProxy::EnumeratePrinters));
}
+void PrintPreviewHandler::HandleGetPreview(const ListValue*) {
+ printing::PrintPreviewTabController* tab_controller =
+ printing::PrintPreviewTabController::GetInstance();
+ if (!tab_controller)
+ return;
+ TabContents* initiator_tab =
+ tab_controller->GetInitiatorTab(web_ui_->tab_contents());
+ if (!initiator_tab)
+ return;
+ initiator_tab->render_view_host()->PrintPreview();
+}
+
void PrintPreviewHandler::HandlePrint(const ListValue* args) {
std::string json_str;
if (!args->GetString(0, &json_str)) {
diff --git a/chrome/browser/ui/webui/print_preview_handler.h b/chrome/browser/ui/webui/print_preview_handler.h
index 01cdba4..0a25ad0 100644
--- a/chrome/browser/ui/webui/print_preview_handler.h
+++ b/chrome/browser/ui/webui/print_preview_handler.h
@@ -32,6 +32,9 @@ class PrintPreviewHandler : public WebUIMessageHandler,
// Get the list of printers. |args| is unused.
void HandleGetPrinters(const ListValue* args);
+ // Ask the initiator renderer to generate a preview. |args| is unused.
+ void HandleGetPreview(const ListValue* args);
+
// Get the job settings from Web UI and initiate printing.
// First element of |args| is a job settings json string.
void HandlePrint(const ListValue* args);