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

Unified Diff: content/renderer/web_intents_host.cc

Issue 12225076: Delete most web intents code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 10 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') | content/renderer/web_intents_host_browsertest.cc » ('j') | 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
deleted file mode 100644
index 944e9c5fed508492ba69b68480dbb5635f7bf517..0000000000000000000000000000000000000000
--- a/content/renderer/web_intents_host.cc
+++ /dev/null
@@ -1,258 +0,0 @@
-// Copyright (c) 2012 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 "content/renderer/web_intents_host.h"
-
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/utf_string_conversions.h"
-#include "content/common/intents_messages.h"
-#include "content/public/renderer/v8_value_converter.h"
-#include "content/renderer/render_view_impl.h"
-#include "third_party/WebKit/Source/Platform/chromium/public/WebCString.h"
-#include "third_party/WebKit/Source/Platform/chromium/public/WebFileSystem.h"
-#include "third_party/WebKit/Source/Platform/chromium/public/WebString.h"
-#include "third_party/WebKit/Source/Platform/chromium/public/WebVector.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebBindings.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebBlob.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebDeliveredIntentClient.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebIntent.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebIntentRequest.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebSerializedScriptValue.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
-#include "webkit/fileapi/file_system_util.h"
-#include "webkit/glue/cpp_bound_class.h"
-
-using WebKit::WebBindings;
-using WebKit::WebBlob;
-using WebKit::WebCString;
-using WebKit::WebDeliveredIntentClient;
-using WebKit::WebFrame;
-using WebKit::WebIntent;
-using WebKit::WebIntentRequest;
-using WebKit::WebString;
-using WebKit::WebSerializedScriptValue;
-using WebKit::WebVector;
-
-namespace content {
-
-namespace {
-
-// Reads reply value, either from the data field, or the data_file field.
-WebSerializedScriptValue GetReplyValue(
- const webkit_glue::WebIntentReply& reply) {
- if (reply.data_file_size > -1) {
- // TODO(smckay): seralize the blob value in the web intent script
- // context. We simply don't know how to do this at this time.
- // The following code kills the renderer when we call toV8Value.
- // v8::HandleScope scope;
- // v8::Local<v8::Context> ctx = ....which context?
- // v8::Context::Scope cscope(ctx);
- // WebKit::WebBlob blob = WebBlob::createFromFile(
- // WebString::fromUTF8(reply.data_file.AsUTF8Unsafe()),
- // reply.data_file_size);
- // v8::Handle<v8::Value> value = blob.toV8Value();
- // return WebSerializedScriptValue::serialize(value);
- return WebSerializedScriptValue::fromString(
- ASCIIToUTF16(reply.data_file.AsUTF8Unsafe()));
- } else {
- return WebSerializedScriptValue::fromString(reply.data);
- }
-}
-
-} // namespace
-
-class DeliveredIntentClientImpl : public WebDeliveredIntentClient {
- public:
- explicit DeliveredIntentClientImpl(WebIntentsHost* host) : host_(host) {}
- virtual ~DeliveredIntentClientImpl() {}
-
- virtual void postResult(const WebSerializedScriptValue& data) const {
- host_->OnResult(data.toString());
- }
-
- virtual void postFailure(const WebSerializedScriptValue& data) const {
- host_->OnFailure(data.toString());
- }
-
- virtual void destroy() OVERRIDE {
- }
-
- private:
- WebIntentsHost* host_;
-};
-
-WebIntentsHost::WebIntentsHost(RenderViewImpl* render_view)
- : RenderViewObserver(render_view),
- id_counter_(0) {
-}
-
-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;
- IPC_BEGIN_MESSAGE_MAP(WebIntentsHost, message)
- IPC_MESSAGE_HANDLER(IntentsMsg_SetWebIntentData, OnSetIntent)
- IPC_MESSAGE_HANDLER(IntentsMsg_WebIntentReply, OnWebIntentReply);
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP()
- return handled;
-}
-
-void WebIntentsHost::OnSetIntent(const webkit_glue::WebIntentData& intent) {
- intent_.reset(new webkit_glue::WebIntentData(intent));
-}
-
-void WebIntentsHost::OnWebIntentReply(
- const webkit_glue::WebIntentReply& reply,
- 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);
-
- if (reply.type == webkit_glue::WEB_INTENT_REPLY_SUCCESS) {
- intent_request.postResult(GetReplyValue(reply));
- } else {
- intent_request.postFailure(
- WebSerializedScriptValue::fromString(reply.data));
- }
-}
-
-void WebIntentsHost::OnResult(const WebKit::WebString& data) {
- const webkit_glue::WebIntentReply reply(
- webkit_glue::WEB_INTENT_REPLY_SUCCESS, data);
- Send(new IntentsHostMsg_WebIntentReply(routing_id(), reply));
-}
-
-void WebIntentsHost::OnFailure(const WebKit::WebString& data) {
- const webkit_glue::WebIntentReply reply(
- webkit_glue::WEB_INTENT_REPLY_FAILURE, data);
- Send(new IntentsHostMsg_WebIntentReply(routing_id(), reply));
-}
-
-// We set the intent payload into all top-level frame window objects. This
-// should persist the data through redirects, and not deliver it to any
-// sub-frames.
-void WebIntentsHost::DidCreateScriptContext(WebKit::WebFrame* frame,
- v8::Handle<v8::Context> ctx,
- int extension_group,
- int world_id) {
- if (intent_.get() == NULL || frame->top() != frame)
- return;
-
- if (ctx != frame->mainWorldScriptContext())
- return;
-
- if (!delivered_intent_client_.get()) {
- delivered_intent_client_.reset(new DeliveredIntentClientImpl(this));
- }
-
- WebIntent web_intent = CreateWebIntent(frame, *intent_);
-
- if (!web_intent.action().isEmpty())
- frame->deliverIntent(web_intent, NULL, delivered_intent_client_.get());
-}
-
-WebIntent WebIntentsHost::CreateWebIntent(
- WebFrame* frame, const webkit_glue::WebIntentData& intent_data) {
- // Must be called with v8 scope held.
- DCHECK(v8::Context::InContext());
-
- // TODO(gbillock): Remove this block when we get rid of |extras|.
- WebVector<WebString> extras_keys(intent_data.extra_data.size());
- WebVector<WebString> extras_values(intent_data.extra_data.size());
- std::map<string16, string16>::const_iterator iter =
- intent_data.extra_data.begin();
- for (size_t i = 0; iter != intent_data.extra_data.end(); ++i, ++iter) {
- extras_keys[i] = iter->first;
- extras_values[i] = iter->second;
- }
-
- switch (intent_data.data_type) {
- case webkit_glue::WebIntentData::SERIALIZED: {
- return WebIntent::create(intent_data.action, intent_data.type,
- intent_data.data,
- extras_keys, extras_values);
- }
-
- case webkit_glue::WebIntentData::UNSERIALIZED: {
- v8::Local<v8::String> dataV8 = v8::String::New(
- reinterpret_cast<const uint16_t*>(
- intent_data.unserialized_data.data()),
- static_cast<int>(intent_data.unserialized_data.length()));
- WebSerializedScriptValue serialized_data =
- WebSerializedScriptValue::serialize(dataV8);
-
- return WebIntent::create(intent_data.action, intent_data.type,
- serialized_data.toString(),
- extras_keys, extras_values);
- }
-
- case webkit_glue::WebIntentData::BLOB: {
- web_blob_ = WebBlob::createFromFile(
- WebString::fromUTF8(intent_data.blob_file.AsUTF8Unsafe()),
- intent_data.blob_length);
- WebSerializedScriptValue serialized_data =
- WebSerializedScriptValue::serialize(web_blob_.toV8Value());
- return WebIntent::create(intent_data.action, intent_data.type,
- serialized_data.toString(),
- extras_keys, extras_values);
- }
-
- case webkit_glue::WebIntentData::FILESYSTEM: {
- const GURL origin = GURL(frame->document().securityOrigin().toString());
- const GURL root_url =
- fileapi::GetFileSystemRootURI(origin,
- fileapi::kFileSystemTypeIsolated);
- const std::string url = base::StringPrintf(
- "%s%s/%s/",
- root_url.spec().c_str(),
- intent_data.filesystem_id.c_str(),
- intent_data.root_name.c_str());
- // TODO(kmadhusu): This is a temporary hack to create a serializable file
- // system. Once we have a better way to create a serializable file system,
- // remove this hack.
- v8::Handle<v8::Value> filesystem_V8 = frame->createSerializableFileSystem(
- WebKit::WebFileSystem::TypeIsolated,
- WebKit::WebString::fromUTF8(intent_data.root_name),
- WebKit::WebString::fromUTF8(url));
- WebSerializedScriptValue serialized_data =
- WebSerializedScriptValue::serialize(filesystem_V8);
- return WebIntent::create(intent_data.action, intent_data.type,
- serialized_data.toString(),
- extras_keys, extras_values);
- }
-
- case webkit_glue::WebIntentData::MIME_TYPE: {
- scoped_ptr<V8ValueConverter> converter(
- V8ValueConverter::create());
- v8::Handle<v8::Value> valV8 = converter->ToV8Value(
- &intent_data.mime_data, v8::Context::GetCurrent());
-
- WebSerializedScriptValue serialized_data =
- WebSerializedScriptValue::serialize(valV8);
- return WebIntent::create(intent_data.action, intent_data.type,
- serialized_data.toString(),
- WebVector<WebString>(), WebVector<WebString>());
- }
- }
-
- NOTREACHED();
- return WebIntent();
-}
-
-} // namespace content
« no previous file with comments | « content/renderer/web_intents_host.h ('k') | content/renderer/web_intents_host_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698