diff options
author | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-08 01:48:46 +0000 |
---|---|---|
committer | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-08 01:48:46 +0000 |
commit | 0188462600befdc176733f580d3c6dd11e850097 (patch) | |
tree | a3e84775c56e24afb1bb14ed4831804945b2dcb8 /chrome | |
parent | ba50582e6f4411df453419ee8bca82d399b62ed2 (diff) | |
download | chromium_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.h | 8 | ||||
-rw-r--r-- | chrome/browser/resources/print_preview.js | 1 | ||||
-rw-r--r-- | chrome/browser/ui/webui/print_preview_handler.cc | 16 | ||||
-rw-r--r-- | chrome/browser/ui/webui/print_preview_handler.h | 3 |
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); |