Index: content/browser/intents/intent_injector.cc |
diff --git a/content/browser/intents/intent_injector.cc b/content/browser/intents/intent_injector.cc |
deleted file mode 100644 |
index 96e8d8719f7386de9db0bc44654b4d53135c71de..0000000000000000000000000000000000000000 |
--- a/content/browser/intents/intent_injector.cc |
+++ /dev/null |
@@ -1,130 +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/browser/intents/intent_injector.h" |
- |
-#include "base/bind.h" |
-#include "base/command_line.h" |
-#include "base/file_path.h" |
-#include "base/logging.h" |
-#include "base/string16.h" |
-#include "base/stringprintf.h" |
-#include "content/browser/child_process_security_policy_impl.h" |
-#include "content/browser/intents/web_intents_dispatcher_impl.h" |
-#include "content/browser/renderer_host/render_process_host_impl.h" |
-#include "content/browser/renderer_host/render_view_host_impl.h" |
-#include "content/browser/web_contents/web_contents_impl.h" |
-#include "content/common/intents_messages.h" |
-#include "content/public/common/content_switches.h" |
-#include "webkit/fileapi/file_system_util.h" |
-#include "webkit/fileapi/isolated_context.h" |
-#include "webkit/glue/web_intent_data.h" |
-#include "webkit/glue/web_intent_reply_data.h" |
- |
-namespace content { |
- |
-IntentInjector::IntentInjector(WebContents* web_contents) |
- : WebContentsObserver(web_contents), |
- intents_dispatcher_(NULL), |
- ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { |
- DCHECK(web_contents); |
-} |
- |
-IntentInjector::~IntentInjector() { |
-} |
- |
-void IntentInjector::WebContentsDestroyed(WebContents* contents) { |
- if (intents_dispatcher_) { |
- intents_dispatcher_->SendReply(webkit_glue::WebIntentReply( |
- webkit_glue::WEB_INTENT_SERVICE_CONTENTS_CLOSED, string16())); |
- } |
- |
- delete this; |
-} |
- |
-void IntentInjector::SourceWebContentsDestroyed(WebContents* contents) { |
- intents_dispatcher_ = NULL; |
-} |
- |
-void IntentInjector::SetIntent( |
- WebIntentsDispatcher* intents_dispatcher, |
- const webkit_glue::WebIntentData& intent) { |
- intents_dispatcher_ = intents_dispatcher; |
- intents_dispatcher_->RegisterReplyNotification( |
- base::Bind(&IntentInjector::OnSendReturnMessage, |
- weak_factory_.GetWeakPtr())); |
- source_intent_.reset(new webkit_glue::WebIntentData(intent)); |
- initial_url_ = web_contents()->GetPendingSiteInstance()->GetSiteURL(); |
-} |
- |
-void IntentInjector::Abandon() { |
- intents_dispatcher_ = NULL; |
- delete this; |
-} |
- |
-void IntentInjector::OnSendReturnMessage( |
- webkit_glue::WebIntentReplyType reply_type) { |
- intents_dispatcher_ = NULL; |
-} |
- |
-void IntentInjector::RenderViewCreated(RenderViewHost* render_view_host) { |
- if (source_intent_.get() == NULL || !web_contents()->GetRenderViewHost()) |
- return; |
- |
- // Only deliver the intent to the renderer if it has the same origin |
- // as the initial delivery target. |
- if (initial_url_.GetOrigin() != |
- render_view_host->GetSiteInstance()->GetSiteURL().GetOrigin()) { |
- return; |
- } |
- |
- // If we're passing a browser-originated blob, either directly or as part of a |
- // payload, grant read permission on the blob file to the delivered context. |
- if (source_intent_->data_type == webkit_glue::WebIntentData::BLOB || |
- (source_intent_->data_type == webkit_glue::WebIntentData::MIME_TYPE && |
- !source_intent_->blob_file.empty())) { |
- const int child_id = render_view_host->GetProcess()->GetID(); |
- ChildProcessSecurityPolicy* policy = |
- ChildProcessSecurityPolicy::GetInstance(); |
- if (!policy->CanReadFile(child_id, source_intent_->blob_file)) |
- policy->GrantReadFile(child_id, source_intent_->blob_file); |
- } else if (source_intent_->data_type == |
- webkit_glue::WebIntentData::FILESYSTEM) { |
- const int child_id = render_view_host->GetProcess()->GetID(); |
- base::FilePath path; |
- const bool valid = |
- fileapi::IsolatedContext::GetInstance()->GetRegisteredPath( |
- source_intent_->filesystem_id, &path); |
- DCHECK(valid); |
- ChildProcessSecurityPolicy* policy = |
- ChildProcessSecurityPolicy::GetInstance(); |
- if (!policy->CanReadFile(child_id, path)) |
- policy->GrantReadFile(child_id, path); |
- policy->GrantReadFileSystem(child_id, source_intent_->filesystem_id); |
- } |
- |
- render_view_host->Send(new IntentsMsg_SetWebIntentData( |
- render_view_host->GetRoutingID(), *(source_intent_.get()))); |
-} |
- |
-bool IntentInjector::OnMessageReceived(const IPC::Message& message) { |
- bool handled = true; |
- IPC_BEGIN_MESSAGE_MAP(IntentInjector, message) |
- IPC_MESSAGE_HANDLER(IntentsHostMsg_WebIntentReply, OnReply); |
- IPC_MESSAGE_UNHANDLED(handled = false) |
- IPC_END_MESSAGE_MAP() |
- return handled; |
-} |
- |
-void IntentInjector::OnReply(const webkit_glue::WebIntentReply& reply) { |
- if (!intents_dispatcher_) |
- return; |
- |
- // Ensure SendReplyMessage is only called once. |
- WebIntentsDispatcher* intents_dispatcher = intents_dispatcher_; |
- intents_dispatcher_ = NULL; |
- intents_dispatcher->SendReply(reply); |
-} |
- |
-} // namespace content |