diff options
Diffstat (limited to 'chrome/browser/printing/print_dialog_cloud.cc')
-rw-r--r-- | chrome/browser/printing/print_dialog_cloud.cc | 43 |
1 files changed, 37 insertions, 6 deletions
diff --git a/chrome/browser/printing/print_dialog_cloud.cc b/chrome/browser/printing/print_dialog_cloud.cc index 89b750c..1af016e 100644 --- a/chrome/browser/printing/print_dialog_cloud.cc +++ b/chrome/browser/printing/print_dialog_cloud.cc @@ -15,14 +15,17 @@ #include "chrome/browser/debugger/devtools_manager.h" #include "chrome/browser/dom_ui/dom_ui.h" #include "chrome/browser/dom_ui/dom_ui_util.h" -#include "chrome/browser/dom_ui/html_dialog_ui.h" +#include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/printing/cloud_print/cloud_print_url.h" +#include "chrome/browser/profile.h" #include "chrome/browser/renderer_host/render_view_host.h" #include "chrome/browser/tab_contents/tab_contents.h" +#include "chrome/browser/tab_contents/tab_contents_view.h" #include "chrome/common/notification_observer.h" #include "chrome/common/notification_registrar.h" #include "chrome/common/notification_source.h" #include "chrome/common/notification_type.h" +#include "chrome/common/pref_names.h" #include "chrome/common/render_messages_params.h" #include "chrome/common/url_constants.h" #include "webkit/glue/webpreferences.h" @@ -92,7 +95,6 @@ // high-level flow (where the PDF data is generated before even // bringing up the dialog) isn't what we want. - namespace internal_cloud_print_helpers { bool GetRealOrInt(const DictionaryValue& dictionary, @@ -245,7 +247,6 @@ void CloudPrintFlowHandler::CancelAnyRunningTask() { } } - void CloudPrintFlowHandler::RegisterMessages() { if (!dom_ui_) return; @@ -378,6 +379,16 @@ void CloudPrintFlowHandler::HandleSetPageParameters(const ListValue* args) { // that point. } +void CloudPrintFlowHandler::StoreDialogClientSize() const { + if (dom_ui_ && dom_ui_->tab_contents() && dom_ui_->tab_contents()->view()) { + gfx::Size size = dom_ui_->tab_contents()->view()->GetContainerSize(); + dom_ui_->GetProfile()->GetPrefs()->SetInteger( + prefs::kCloudPrintDialogWidth, size.width()); + dom_ui_->GetProfile()->GetPrefs()->SetInteger( + prefs::kCloudPrintDialogHeight, size.height()); + } +} + CloudPrintHtmlDialogDelegate::CloudPrintHtmlDialogDelegate( const FilePath& path_to_pdf, int width, int height, @@ -452,6 +463,8 @@ std::string CloudPrintHtmlDialogDelegate::GetDialogArgs() const { void CloudPrintHtmlDialogDelegate::OnDialogClosed( const std::string& json_retval) { + // Get the final dialog size and store it. + flow_handler_->StoreDialogClientSize(); delete this; } @@ -461,6 +474,10 @@ void CloudPrintHtmlDialogDelegate::OnCloseContents(TabContents* source, *out_close_dialog = true; } +bool CloudPrintHtmlDialogDelegate::ShouldShowDialogTitle() const { + return false; +} + } // end of namespace internal_cloud_print_helpers // static, called on the IO thread. This is the main entry point into @@ -493,11 +510,25 @@ PrintDialogCloud::PrintDialogCloud(const FilePath& path_to_pdf) if (browser_ && browser_->GetSelectedTabContents()) print_job_title = browser_->GetSelectedTabContents()->GetTitle(); - // TODO(scottbyer): Get the dialog width, height from the dialog - // contents, and take the screen size into account. + const int kDefaultWidth = 497; + const int kDefaultHeight = 332; + + PrefService* pref_service = browser_->GetProfile()->GetPrefs(); + DCHECK(pref_service); + if (!pref_service->FindPreference(prefs::kCloudPrintDialogWidth)) { + pref_service->RegisterIntegerPref(prefs::kCloudPrintDialogWidth, + kDefaultWidth); + } + if (!pref_service->FindPreference(prefs::kCloudPrintDialogHeight)) { + pref_service->RegisterIntegerPref(prefs::kCloudPrintDialogHeight, + kDefaultHeight); + } + + int width = pref_service->GetInteger(prefs::kCloudPrintDialogWidth); + int height = pref_service->GetInteger(prefs::kCloudPrintDialogHeight); HtmlDialogUIDelegate* dialog_delegate = new internal_cloud_print_helpers::CloudPrintHtmlDialogDelegate( - path_to_pdf, 497, 354, std::string(), print_job_title); + path_to_pdf, width, height, std::string(), print_job_title); browser_->BrowserShowHtmlDialog(dialog_delegate, NULL); } |