Index: chrome/browser/ui/webui/print_preview_handler.cc |
diff --git a/chrome/browser/ui/webui/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview_handler.cc |
index 5d4fbab2da27357df937e097ea260d04d8116fe8..9b9609617343a6bacef8d31fdbe1485e931264e9 100644 |
--- a/chrome/browser/ui/webui/print_preview_handler.cc |
+++ b/chrome/browser/ui/webui/print_preview_handler.cc |
@@ -15,6 +15,7 @@ |
#include "base/memory/ref_counted.h" |
#include "base/metrics/histogram.h" |
#include "base/path_service.h" |
+#include "base/string_number_conversions.h" |
#include "base/threading/thread.h" |
#include "base/threading/thread_restrictions.h" |
#include "base/utf_string_conversions.h" |
@@ -476,6 +477,7 @@ void PrintPreviewHandler::HandleGetPrinters(const ListValue*) { |
} |
void PrintPreviewHandler::HandleGetPreview(const ListValue* args) { |
+ DCHECK(args->GetSize() == 3); |
scoped_ptr<DictionaryValue> settings(GetSettingsDictionary(args)); |
if (!settings.get()) |
return; |
@@ -518,6 +520,31 @@ void PrintPreviewHandler::HandleGetPreview(const ListValue* args) { |
settings->SetString(printing::kSettingHeaderFooterURL, url); |
} |
+ bool generate_draft_data = false; |
+ if (!settings->GetBoolean(printing::kSettingGenerateDraftData, |
+ &generate_draft_data)) { |
+ NOTREACHED(); |
+ } |
+ |
+ if (!generate_draft_data) { |
+ int draft_page_count = -1; |
+ bool preview_modifiable = false; |
+ std::string draft_page_count_str; |
+ if (!args->GetString(1, &draft_page_count_str) || |
+ !base::StringToInt(draft_page_count_str, &draft_page_count)) { |
+ NOTREACHED(); |
+ draft_page_count = -1; |
+ } |
+ |
+ if (!args->GetBoolean(2, &preview_modifiable)) |
+ NOTREACHED(); |
+ |
+ if (draft_page_count != -1 && preview_modifiable && |
+ print_preview_ui->GetAvailableDraftPageCount() != draft_page_count) { |
+ settings->SetBoolean(printing::kSettingGenerateDraftData, true); |
+ } |
+ } |
+ |
VLOG(1) << "Print preview request start"; |
RenderViewHost* rvh = initiator_tab->render_view_host(); |
rvh->Send(new PrintMsg_PrintPreview(rvh->routing_id(), *settings)); |