| Index: chrome/browser/printing/print_dialog_cloud.cc
 | 
| diff --git a/chrome/browser/printing/print_dialog_cloud.cc b/chrome/browser/printing/print_dialog_cloud.cc
 | 
| index 3fdad4bc0489c90c9fdab2f67b8240962792bd4b..1af016e06236b857629fd0e28a736ae34fc248da 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,
 | 
| @@ -425,7 +436,7 @@ bool CloudPrintHtmlDialogDelegate::IsDialogModal() const {
 | 
|  }
 | 
|  
 | 
|  std::wstring CloudPrintHtmlDialogDelegate::GetDialogTitle() const {
 | 
| -  return l10n_util::GetString(IDS_CLOUD_PRINT_TITLE);
 | 
| +  return std::wstring();
 | 
|  }
 | 
|  
 | 
|  GURL CloudPrintHtmlDialogDelegate::GetDialogContentURL() const {
 | 
| @@ -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, 500, 400, std::string(), print_job_title);
 | 
| +          path_to_pdf, width, height, std::string(), print_job_title);
 | 
|    browser_->BrowserShowHtmlDialog(dialog_delegate, NULL);
 | 
|  }
 | 
|  
 | 
| 
 |