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

Unified Diff: content/renderer/web_intents_host.cc

Issue 9186021: Update chromium code to use WebIntentRequest. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge to head Created 8 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
« no previous file with comments | « content/renderer/web_intents_host.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/web_intents_host.cc
diff --git a/content/renderer/web_intents_host.cc b/content/renderer/web_intents_host.cc
index 7d96f3d93f81e216c5a585af1757404ca9a8e345..0cd86ae43c8feccffa7fdf09312810daa9a58926 100644
--- a/content/renderer/web_intents_host.cc
+++ b/content/renderer/web_intents_host.cc
@@ -10,15 +10,20 @@
#include "content/renderer/render_view_impl.h"
#include "ipc/ipc_message.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebBindings.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebCString.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSerializedScriptValue.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebIntentRequest.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebCString.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebSerializedScriptValue.h"
#include "v8/include/v8.h"
#include "webkit/glue/cpp_bound_class.h"
+using WebKit::WebBindings;
using WebKit::WebCString;
+using WebKit::WebFrame;
+using WebKit::WebIntentRequest;
using WebKit::WebString;
+using WebKit::WebSerializedScriptValue;
// This class encapsulates the API the Intent object will expose to Javascript.
// It is made available to the Javascript runtime in the service page using
@@ -30,7 +35,7 @@ class WebIntentsHost::BoundDeliveredIntent : public CppBoundClass {
const string16& type,
const string16& data,
WebIntentsHost* parent,
- WebKit::WebFrame* frame) {
+ WebFrame* frame) {
action_ = WebString(action).utf8();
type_ = WebString(type).utf8();
parent_ = parent;
@@ -38,8 +43,8 @@ class WebIntentsHost::BoundDeliveredIntent : public CppBoundClass {
v8::HandleScope scope;
v8::Local<v8::Context> ctx = frame->mainWorldScriptContext();
v8::Context::Scope cscope(ctx);
- WebKit::WebSerializedScriptValue ssv =
- WebKit::WebSerializedScriptValue::fromString(WebString(data));
+ WebSerializedScriptValue ssv =
+ WebSerializedScriptValue::fromString(WebString(data));
// TODO(gbillock): use an exception handler instead? Need to
// pass back error state to caller? This is a pretty unexpected
// internal error...
@@ -48,9 +53,7 @@ class WebIntentsHost::BoundDeliveredIntent : public CppBoundClass {
v8::Local<v8::Value>::New(ssv.deserialize());
data_val_.reset(new CppVariant);
- WebKit::WebBindings::toNPVariant(data_obj,
- frame->windowObject(),
- data_val_.get());
+ WebBindings::toNPVariant(data_obj, frame->windowObject(), data_val_.get());
BindGetterCallback("action", base::Bind(&BoundDeliveredIntent::getAction,
base::Unretained(this)));
@@ -67,12 +70,12 @@ class WebIntentsHost::BoundDeliveredIntent : public CppBoundClass {
virtual ~BoundDeliveredIntent() {
}
- WebKit::WebString SerializeCppVariant(const CppVariant& val) {
+ WebString SerializeCppVariant(const CppVariant& val) {
v8::HandleScope scope;
- v8::Handle<v8::Value> v8obj = WebKit::WebBindings::toV8Value(&val);
+ v8::Handle<v8::Value> v8obj = WebBindings::toV8Value(&val);
- WebKit::WebSerializedScriptValue ssv =
- WebKit::WebSerializedScriptValue::serialize(v8obj);
+ WebSerializedScriptValue ssv =
+ WebSerializedScriptValue::serialize(v8obj);
if (ssv.isNull())
return WebKit::WebString();
@@ -81,8 +84,7 @@ class WebIntentsHost::BoundDeliveredIntent : public CppBoundClass {
void postResult(const CppArgumentList& args, CppVariant* retval) {
if (args.size() != 1) {
- WebKit::WebBindings::setException(
- NULL, "Must pass one argument to postResult");
+ WebBindings::setException(NULL, "Must pass one argument to postResult");
return;
}
@@ -92,8 +94,7 @@ class WebIntentsHost::BoundDeliveredIntent : public CppBoundClass {
void postFailure(const CppArgumentList& args, CppVariant* retval) {
if (args.size() != 1) {
- WebKit::WebBindings::setException(
- NULL, "Must pass one argument to postFailure");
+ WebBindings::setException(NULL, "Must pass one argument to postFailure");
return;
}
@@ -128,10 +129,19 @@ class WebIntentsHost::BoundDeliveredIntent : public CppBoundClass {
};
WebIntentsHost::WebIntentsHost(RenderViewImpl* render_view)
- : content::RenderViewObserver(render_view) {
+ : content::RenderViewObserver(render_view),
+ id_counter_(0) {
}
-WebIntentsHost::~WebIntentsHost() {}
+WebIntentsHost::~WebIntentsHost() {
+}
+
+int WebIntentsHost::RegisterWebIntent(
+ const WebIntentRequest& request) {
+ int id = id_counter_++;
+ intent_requests_[id] = request;
+ return id;
+}
bool WebIntentsHost::OnMessageReceived(const IPC::Message& message) {
bool handled = true;
@@ -151,13 +161,19 @@ void WebIntentsHost::OnWebIntentReply(
webkit_glue::WebIntentReplyType reply_type,
const WebKit::WebString& data,
int intent_id) {
+ std::map<int, WebIntentRequest>::iterator request =
+ intent_requests_.find(intent_id);
+ if (request == intent_requests_.end())
+ return;
+ WebIntentRequest intent_request = request->second;
+ intent_requests_.erase(request);
+ WebSerializedScriptValue value =
+ WebSerializedScriptValue::fromString(data);
if (reply_type == webkit_glue::WEB_INTENT_REPLY_SUCCESS) {
- render_view()->GetWebView()->mainFrame()->handleIntentResult(
- intent_id, data);
+ intent_request.postResult(value);
} else {
- render_view()->GetWebView()->mainFrame()->handleIntentFailure(
- intent_id, data);
+ intent_request.postFailure(value);
}
}
@@ -175,7 +191,7 @@ void WebIntentsHost::OnFailure(const WebKit::WebString& data) {
// should persist the data through redirects, and not deliver it to any
// sub-frames. TODO(gbillock): This policy needs to be fine-tuned and
// documented.
-void WebIntentsHost::DidClearWindowObject(WebKit::WebFrame* frame) {
+void WebIntentsHost::DidClearWindowObject(WebFrame* frame) {
if (intent_.get() == NULL || frame->top() != frame)
return;
« no previous file with comments | « content/renderer/web_intents_host.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698