OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/dom_distiller/content/renderer/distiller_native_javascript.
h" | 5 #include "components/dom_distiller/content/renderer/distiller_native_javascript.
h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
11 #include "components/dom_distiller/content/common/distiller_javascript_service.m
ojom.h" | 11 #include "components/dom_distiller/content/common/distiller_javascript_service.m
ojom.h" |
12 #include "content/public/common/service_registry.h" | |
13 #include "content/public/renderer/render_frame.h" | 12 #include "content/public/renderer/render_frame.h" |
14 #include "gin/arguments.h" | 13 #include "gin/arguments.h" |
15 #include "gin/function_template.h" | 14 #include "gin/function_template.h" |
| 15 #include "services/shell/public/cpp/interface_provider.h" |
16 #include "third_party/WebKit/public/web/WebKit.h" | 16 #include "third_party/WebKit/public/web/WebKit.h" |
17 #include "third_party/WebKit/public/web/WebLocalFrame.h" | 17 #include "third_party/WebKit/public/web/WebLocalFrame.h" |
18 #include "v8/include/v8.h" | 18 #include "v8/include/v8.h" |
19 | 19 |
20 using blink::WebLocalFrame; | 20 using blink::WebLocalFrame; |
21 | 21 |
22 namespace dom_distiller { | 22 namespace dom_distiller { |
23 | 23 |
24 DistillerNativeJavaScript::DistillerNativeJavaScript( | 24 DistillerNativeJavaScript::DistillerNativeJavaScript( |
25 content::RenderFrame* render_frame) | 25 content::RenderFrame* render_frame) |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 const base::Callback<Sig> callback) { | 78 const base::Callback<Sig> callback) { |
79 // Get the isolate associated with this object. | 79 // Get the isolate associated with this object. |
80 v8::Isolate* isolate = javascript_object->GetIsolate(); | 80 v8::Isolate* isolate = javascript_object->GetIsolate(); |
81 javascript_object->Set( | 81 javascript_object->Set( |
82 gin::StringToSymbol(isolate, name), | 82 gin::StringToSymbol(isolate, name), |
83 gin::CreateFunctionTemplate(isolate, callback)->GetFunction()); | 83 gin::CreateFunctionTemplate(isolate, callback)->GetFunction()); |
84 } | 84 } |
85 | 85 |
86 void DistillerNativeJavaScript::EnsureServiceConnected() { | 86 void DistillerNativeJavaScript::EnsureServiceConnected() { |
87 if (!distiller_js_service_ || !distiller_js_service_.is_bound()) { | 87 if (!distiller_js_service_ || !distiller_js_service_.is_bound()) { |
88 render_frame_->GetServiceRegistry()->ConnectToRemoteService( | 88 render_frame_->GetRemoteInterfaces()->GetInterface( |
89 mojo::GetProxy(&distiller_js_service_)); | 89 &distiller_js_service_); |
90 } | 90 } |
91 } | 91 } |
92 | 92 |
93 std::string DistillerNativeJavaScript::DistillerEcho( | 93 std::string DistillerNativeJavaScript::DistillerEcho( |
94 const std::string& message) { | 94 const std::string& message) { |
95 EnsureServiceConnected(); | 95 EnsureServiceConnected(); |
96 // TODO(mdjones): It is possible and beneficial to have information | 96 // TODO(mdjones): It is possible and beneficial to have information |
97 // returned from the browser process with these calls. The problem | 97 // returned from the browser process with these calls. The problem |
98 // is waiting blocks this process. | 98 // is waiting blocks this process. |
99 distiller_js_service_->HandleDistillerEchoCall(message); | 99 distiller_js_service_->HandleDistillerEchoCall(message); |
100 | 100 |
101 return message; | 101 return message; |
102 } | 102 } |
103 | 103 |
104 v8::Local<v8::Object> GetOrCreateDistillerObject(v8::Isolate* isolate, | 104 v8::Local<v8::Object> GetOrCreateDistillerObject(v8::Isolate* isolate, |
105 v8::Local<v8::Object> global) { | 105 v8::Local<v8::Object> global) { |
106 v8::Local<v8::Object> distiller_obj; | 106 v8::Local<v8::Object> distiller_obj; |
107 v8::Local<v8::Value> distiller_value = | 107 v8::Local<v8::Value> distiller_value = |
108 global->Get(gin::StringToV8(isolate, "distiller")); | 108 global->Get(gin::StringToV8(isolate, "distiller")); |
109 if (distiller_value.IsEmpty() || !distiller_value->IsObject()) { | 109 if (distiller_value.IsEmpty() || !distiller_value->IsObject()) { |
110 distiller_obj = v8::Object::New(isolate); | 110 distiller_obj = v8::Object::New(isolate); |
111 global->Set(gin::StringToSymbol(isolate, "distiller"), distiller_obj); | 111 global->Set(gin::StringToSymbol(isolate, "distiller"), distiller_obj); |
112 } else { | 112 } else { |
113 distiller_obj = v8::Local<v8::Object>::Cast(distiller_value); | 113 distiller_obj = v8::Local<v8::Object>::Cast(distiller_value); |
114 } | 114 } |
115 return distiller_obj; | 115 return distiller_obj; |
116 } | 116 } |
117 | 117 |
118 } // namespace dom_distiller | 118 } // namespace dom_distiller |
OLD | NEW |