Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4471)

Unified Diff: chrome/browser/dom_ui/print_preview_ui_html_source.cc

Issue 6334010: Print Preview: Store preview data in the print preview handler.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/dom_ui/print_preview_ui_html_source.cc
===================================================================
--- chrome/browser/dom_ui/print_preview_ui_html_source.cc (revision 0)
+++ chrome/browser/dom_ui/print_preview_ui_html_source.cc (revision 0)
@@ -0,0 +1,123 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/dom_ui/print_preview_ui_html_source.h"
+
+#include <algorithm>
+#include <vector>
+
+#include "base/message_loop.h"
+#include "base/shared_memory.h"
+#include "base/string_piece.h"
+#include "base/values.h"
+#include "chrome/common/jstemplate_builder.h"
+#include "chrome/common/url_constants.h"
+#include "grit/browser_resources.h"
+#include "grit/generated_resources.h"
+#include "ui/base/l10n/l10n_util.h"
+#include "ui/base/resource/resource_bundle.h"
+
+namespace {
+
+void SetLocalizedStrings(DictionaryValue* localized_strings) {
+ localized_strings->SetString(std::string("title"),
+ l10n_util::GetStringUTF8(IDS_PRINT_PREVIEW_TITLE));
+ localized_strings->SetString(std::string("loading"),
+ l10n_util::GetStringUTF8(IDS_PRINT_PREVIEW_LOADING));
+ localized_strings->SetString(std::string("noPlugin"),
+ l10n_util::GetStringUTF8(IDS_PRINT_PREVIEW_NO_PLUGIN));
+ localized_strings->SetString(std::string("noPrinter"),
+ l10n_util::GetStringUTF8(IDS_PRINT_PREVIEW_NO_PRINTER));
+
+ localized_strings->SetString(std::string("printButton"),
+ l10n_util::GetStringUTF8(IDS_PRINT_PREVIEW_PRINT_BUTTON));
+ localized_strings->SetString(std::string("cancelButton"),
+ l10n_util::GetStringUTF8(IDS_PRINT_PREVIEW_CANCEL_BUTTON));
+
+ localized_strings->SetString(std::string("optionAllPages"),
+ l10n_util::GetStringUTF8(IDS_PRINT_PREVIEW_OPTION_ALL_PAGES));
+ localized_strings->SetString(std::string("optionBw"),
+ l10n_util::GetStringUTF8(IDS_PRINT_PREVIEW_OPTION_BW));
+ localized_strings->SetString(std::string("optionCollate"),
+ l10n_util::GetStringUTF8(IDS_PRINT_PREVIEW_OPTION_COLLATE));
+ localized_strings->SetString(std::string("optionColor"),
+ l10n_util::GetStringUTF8(IDS_PRINT_PREVIEW_OPTION_COLOR));
+ localized_strings->SetString(std::string("optionLandscape"),
+ l10n_util::GetStringUTF8(IDS_PRINT_PREVIEW_OPTION_LANDSCAPE));
+ localized_strings->SetString(std::string("optionPortrait"),
+ l10n_util::GetStringUTF8(IDS_PRINT_PREVIEW_OPTION_PORTRAIT));
+ localized_strings->SetString(std::string("optionTwoSided"),
+ l10n_util::GetStringUTF8(IDS_PRINT_PREVIEW_OPTION_TWO_SIDED));
+}
+
+} // namespace
+
+PrintPreviewUIHTMLSource::PrintPreviewUIHTMLSource()
+ : DataSource(chrome::kChromeUIPrintHost, MessageLoop::current()),
+ data_(std::make_pair(static_cast<base::SharedMemory*>(NULL), 0U)) {
+}
+
+PrintPreviewUIHTMLSource::~PrintPreviewUIHTMLSource() {
+ delete data_.first;
+}
+
+void PrintPreviewUIHTMLSource::GetPrintPreviewData(PrintPreviewData* data) {
+ *data = data_;
+}
+
+void PrintPreviewUIHTMLSource::SetPrintPreviewData(
+ const PrintPreviewData& data) {
+ delete data_.first;
+ data_ = data;
+}
+
+void PrintPreviewUIHTMLSource::StartDataRequest(const std::string& path,
+ bool is_off_the_record,
+ int request_id) {
+ if (path.empty()) {
+ // Print Preview Index page.
+ DictionaryValue localized_strings;
+ SetLocalizedStrings(&localized_strings);
+ SetFontAndTextDirection(&localized_strings);
+
+ static const base::StringPiece print_html(
+ ResourceBundle::GetSharedInstance().GetRawDataResource(
+ IDR_PRINT_PREVIEW_HTML));
+ const std::string full_html = jstemplate_builder::GetI18nTemplateHtml(
+ print_html, &localized_strings);
+
+ scoped_refptr<RefCountedBytes> html_bytes(new RefCountedBytes);
+ html_bytes->data.resize(full_html.size());
+ std::copy(full_html.begin(), full_html.end(), html_bytes->data.begin());
+
+ SendResponse(request_id, html_bytes);
+ return;
+ } else if (path == "print.pdf") {
+ // Print Preview data.
+ char* preview_data = reinterpret_cast<char*>(data_.first->memory());
+ uint32 preview_data_size = data_.second;
+
+ scoped_refptr<RefCountedBytes> html_bytes(new RefCountedBytes);
+ html_bytes->data.resize(preview_data_size);
+ std::vector<unsigned char>::iterator it = html_bytes->data.begin();
+ for (uint32 i = 0; i < preview_data_size; ++i, ++it)
+ *it = *(preview_data + i);
+ SendResponse(request_id, html_bytes);
+ return;
+ } else {
+ // Invalid request.
+ scoped_refptr<RefCountedBytes> empty_bytes(new RefCountedBytes);
+ SendResponse(request_id, empty_bytes);
+ return;
+ }
+}
+
+std::string PrintPreviewUIHTMLSource::GetMimeType(
+ const std::string& path) const {
+ // Print Preview Index page.
+ if (path.empty())
+ return "text/html";
+ // Print Preview data.
+ return "application/pdf";
+}
Property changes on: chrome/browser/dom_ui/print_preview_ui_html_source.cc
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « chrome/browser/dom_ui/print_preview_ui_html_source.h ('k') | chrome/browser/dom_ui/print_preview_ui_html_source_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698