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

Unified Diff: chrome/browser/printing/print_dialog_cloud_win.cc

Issue 1414703003: Merge: Set document posting "cp-dialog-set-print-document" message. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2490
Patch Set: Created 5 years, 2 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/printing/print_dialog_cloud_win.cc
diff --git a/chrome/browser/printing/print_dialog_cloud_win.cc b/chrome/browser/printing/print_dialog_cloud_win.cc
index 1333f7cf9b0fb11c197f005603e612366b2a9732..8f8c6992bdaba91e24f04363fb1f6eba460c07c5 100644
--- a/chrome/browser/printing/print_dialog_cloud_win.cc
+++ b/chrome/browser/printing/print_dialog_cloud_win.cc
@@ -9,6 +9,7 @@
#include "base/command_line.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
+#include "base/json/json_writer.h"
#include "base/memory/ref_counted_memory.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
@@ -23,7 +24,9 @@
#include "components/google/core/browser/google_util.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
+#include "content/public/browser/message_port_provider.h"
#include "content/public/browser/render_frame_host.h"
+#include "content/public/common/message_port_types.h"
namespace print_dialog_cloud {
@@ -50,30 +53,32 @@ class PrintDataSetter : public content::WebContentsObserver {
header.append(";base64,");
base64_data.insert(0, header);
- InitPrintFunction(base::StringValue(base64_data),
- base::StringValue(print_job_title));
+ base::DictionaryValue message_data;
+ message_data.SetString("type", "dataUrl");
+ message_data.SetString("title", print_job_title);
+ message_data.SetString("content", base64_data);
+ std::string json_data;
+ base::JSONWriter::Write(message_data, &json_data);
+ message_data_ = L"cp-dialog-set-print-document::";
+ message_data_.append(base::UTF8ToUTF16(json_data));
}
private:
// Overridden from content::WebContentsObserver:
void DocumentLoadedInFrame(
content::RenderFrameHost* render_frame_host) override {
- if (cloud_devices::IsCloudPrintURL(web_contents()->GetURL()))
- render_frame_host->ExecuteJavaScript(print_function_);
+ GURL url = web_contents()->GetURL();
+ if (cloud_devices::IsCloudPrintURL(url)) {
+ base::string16 origin = base::UTF8ToUTF16(url.GetOrigin().spec());
+ content::MessagePortProvider::PostMessageToFrame(
+ web_contents(), origin, origin, message_data_,
+ std::vector<content::TransferredMessagePort>());
+ }
}
void WebContentsDestroyed() override { delete this; }
- void InitPrintFunction(const base::Value& arg1, const base::Value& arg2) {
- std::vector<const base::Value*> args;
- args.push_back(&arg1);
- args.push_back(&arg2);
- print_function_ =
- content::WebUI::GetJavascriptCall("printApp._printDataUrl", args);
- }
-
- base::string16 print_function_;
-
+ base::string16 message_data_;
DISALLOW_COPY_AND_ASSIGN(PrintDataSetter);
};
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698