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

Unified Diff: chrome/browser/automation/extension_port_container.cc

Issue 6756044: Remove extension automation support that was used only by CEEE. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge to head. Created 9 years, 8 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
Index: chrome/browser/automation/extension_port_container.cc
diff --git a/chrome/browser/automation/extension_port_container.cc b/chrome/browser/automation/extension_port_container.cc
deleted file mode 100644
index bdcbb7e6b314a6d2f5d983322c4dda9d7f0a32b0..0000000000000000000000000000000000000000
--- a/chrome/browser/automation/extension_port_container.cc
+++ /dev/null
@@ -1,258 +0,0 @@
-// Copyright (c) 2010 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 "chrome/browser/automation/extension_port_container.h"
-
-#include "base/logging.h"
-#include "base/json/json_reader.h"
-#include "base/json/json_writer.h"
-#include "base/values.h"
-#include "chrome/browser/automation/automation_provider.h"
-#include "chrome/browser/automation/extension_automation_constants.h"
-#include "chrome/browser/extensions/extension_message_service.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/common/automation_messages.h"
-#include "chrome/common/extensions/extension_messages.h"
-#include "content/browser/renderer_host/render_process_host.h"
-#include "content/browser/renderer_host/render_view_host.h"
-
-// TODO(siggi): Find a more structured way to read and write JSON messages.
-
-namespace ext = extension_automation_constants;
-
-ExtensionPortContainer::ExtensionPortContainer(AutomationProvider* automation,
- int tab_handle) :
- automation_(automation), service_(NULL), port_id_(-1),
- tab_handle_(tab_handle) {
- service_ = automation_->profile()->GetExtensionMessageService();
- DCHECK(service_);
-}
-
-ExtensionPortContainer::~ExtensionPortContainer() {
- DCHECK_EQ(MessageLoop::current()->type(), MessageLoop::TYPE_UI);
-
- if (port_id_ != -1)
- service_->CloseChannel(port_id_);
-}
-
-bool ExtensionPortContainer::PostResponseToExternalPort(
- const std::string& message) {
- return automation_->Send(
- new AutomationMsg_ForwardMessageToExternalHost(
- tab_handle_, message, ext::kAutomationOrigin,
- ext::kAutomationPortResponseTarget));
-}
-
-bool ExtensionPortContainer::PostMessageToExternalPort(
- const std::string& message) {
- return automation_->Send(
- new AutomationMsg_ForwardMessageToExternalHost(
- tab_handle_, message,
- ext::kAutomationOrigin,
- ext::kAutomationPortRequestTarget));
-}
-
-void ExtensionPortContainer::PostMessageFromExternalPort(
- const std::string &message) {
- service_->PostMessageFromRenderer(port_id_, message);
-}
-
-bool ExtensionPortContainer::Connect(const std::string &extension_id,
- int process_id,
- int routing_id,
- int connection_id,
- const std::string& channel_name,
- const std::string& tab_json) {
- DCHECK_EQ(MessageLoop::current()->type(), MessageLoop::TYPE_UI);
-
- port_id_ = service_->OpenSpecialChannelToExtension(
- extension_id, channel_name, tab_json, this);
- if (port_id_ == -1) {
- // In this case a disconnect message has been dispatched.
- return false;
- }
-
- SendConnectionResponse(connection_id, port_id_);
- return true;
-}
-
-void ExtensionPortContainer::SendConnectionResponse(int connection_id,
- int port_id) {
- // Compose the reply message.
- scoped_ptr<DictionaryValue> msg_dict(new DictionaryValue());
- msg_dict->SetInteger(ext::kAutomationRequestIdKey, ext::CHANNEL_OPENED);
- msg_dict->SetInteger(ext::kAutomationConnectionIdKey, connection_id);
- msg_dict->SetInteger(ext::kAutomationPortIdKey, port_id);
-
- std::string msg_json;
- base::JSONWriter::Write(msg_dict.get(), false, &msg_json);
-
- PostResponseToExternalPort(msg_json);
-}
-
-bool ExtensionPortContainer::Send(IPC::Message *message) {
- DCHECK_EQ(MessageLoop::current()->type(), MessageLoop::TYPE_UI);
-
- IPC_BEGIN_MESSAGE_MAP(ExtensionPortContainer, *message)
- IPC_MESSAGE_HANDLER(ExtensionMsg_MessageInvoke, OnExtensionMessageInvoke)
- IPC_MESSAGE_UNHANDLED_ERROR()
- IPC_END_MESSAGE_MAP()
-
- delete message;
- return true;
-}
-
-void ExtensionPortContainer::OnExtensionMessageInvoke(
- const std::string& extension_id,
- const std::string& function_name,
- const ListValue& args,
- const GURL& event_url) {
- if (function_name == ExtensionMessageService::kDispatchOnMessage) {
- DCHECK_EQ(args.GetSize(), 2u);
-
- std::string message;
- int source_port_id;
- if (args.GetString(0, &message) && args.GetInteger(1, &source_port_id))
- OnExtensionHandleMessage(message, source_port_id);
- } else if (function_name == ExtensionMessageService::kDispatchOnDisconnect) {
- DCHECK_EQ(args.GetSize(), 2u);
- int port_id;
- if (args.GetInteger(0, &port_id))
- OnExtensionPortDisconnected(port_id);
- } else if (function_name == ExtensionMessageService::kDispatchOnConnect) {
- // Do nothing.
- // TODO(siggi): implement
- } else {
- NOTREACHED() << function_name << " shouldn't be called.";
- }
-}
-
-void ExtensionPortContainer::OnExtensionHandleMessage(
- const std::string& message, int source_port_id) {
- // Compose the reply message and fire it away.
- DictionaryValue msg_dict;
- msg_dict.SetInteger(ext::kAutomationRequestIdKey, ext::POST_MESSAGE);
- msg_dict.SetInteger(ext::kAutomationPortIdKey, port_id_);
- msg_dict.SetString(ext::kAutomationMessageDataKey, message);
-
- std::string msg_json;
- base::JSONWriter::Write(&msg_dict, false, &msg_json);
-
- PostMessageToExternalPort(msg_json);
-}
-
-void ExtensionPortContainer::OnExtensionPortDisconnected(int source_port_id) {
- // Compose the disconnect message and fire it away.
- DictionaryValue msg_dict;
- msg_dict.SetInteger(ext::kAutomationRequestIdKey, ext::CHANNEL_CLOSED);
- msg_dict.SetInteger(ext::kAutomationPortIdKey, port_id_);
-
- std::string msg_json;
- base::JSONWriter::Write(&msg_dict, false, &msg_json);
-
- PostMessageToExternalPort(msg_json);
-}
-
-bool ExtensionPortContainer::InterceptMessageFromExternalHost(
- const std::string& message, const std::string& origin,
- const std::string& target, AutomationProvider* automation,
- RenderViewHost *view_host, int tab_handle) {
- if (target != ext::kAutomationPortRequestTarget)
- return false;
-
- if (origin != ext::kAutomationOrigin) {
- // TODO(siggi): Should we block the message on wrong origin?
- LOG(WARNING) << "Wrong origin on automation port message " << origin;
- }
-
- scoped_ptr<Value> message_value(base::JSONReader::Read(message, false));
- DCHECK(message_value->IsType(Value::TYPE_DICTIONARY));
- if (!message_value->IsType(Value::TYPE_DICTIONARY))
- return true;
-
- DictionaryValue* message_dict =
- reinterpret_cast<DictionaryValue*>(message_value.get());
-
- int command = -1;
- bool got_value = message_dict->GetInteger(ext::kAutomationRequestIdKey,
- &command);
- DCHECK(got_value);
- if (!got_value)
- return true;
-
- if (command == ext::OPEN_CHANNEL) {
- // Extract the "extension_id" and "connection_id" parameters.
- std::string extension_id;
- got_value = message_dict->GetString(ext::kAutomationExtensionIdKey,
- &extension_id);
- DCHECK(got_value);
- if (!got_value)
- return true;
-
- int connection_id;
- got_value = message_dict->GetInteger(ext::kAutomationConnectionIdKey,
- &connection_id);
- DCHECK(got_value);
- if (!got_value)
- return true;
-
- std::string channel_name;
- // Channel name is optional.
- message_dict->GetString(ext::kAutomationChannelNameKey, &channel_name);
-
- // Tab information is optional, try to retrieve it
- // and re-flatten it to a string.
- std::string tab_json("null");
- DictionaryValue* tab = NULL;
- if (message_dict->GetDictionary(ext::kAutomationTabJsonKey, &tab))
- base::JSONWriter::Write(tab, false, &tab_json);
-
- int routing_id = view_host->routing_id();
- // Create the extension port and connect it.
- scoped_ptr<ExtensionPortContainer> port(
- new ExtensionPortContainer(automation, tab_handle));
-
- int process_id = view_host->process()->id();
- if (port->Connect(extension_id, process_id, routing_id, connection_id,
- channel_name, tab_json)) {
- // We have a successful connection.
- automation->AddPortContainer(port.release());
- }
- } else if (command == ext::POST_MESSAGE) {
- int port_id = -1;
- got_value = message_dict->GetInteger(ext::kAutomationPortIdKey, &port_id);
- DCHECK(got_value);
- if (!got_value)
- return true;
-
- std::string data;
- got_value = message_dict->GetString(ext::kAutomationMessageDataKey, &data);
- DCHECK(got_value);
- if (!got_value)
- return true;
-
- ExtensionPortContainer* port = automation->GetPortContainer(port_id);
- DCHECK(port);
- if (port)
- port->PostMessageFromExternalPort(data);
- } else if (command == ext::CHANNEL_CLOSED) {
- int port_id = -1;
- got_value = message_dict->GetInteger(ext::kAutomationPortIdKey, &port_id);
- DCHECK(got_value);
- if (!got_value)
- return true;
-
- ExtensionPortContainer* port = automation->GetPortContainer(port_id);
- DCHECK(port);
- if (port) {
- // This will delete the port and notify the other end of the disconnect.
- automation->RemovePortContainer(port);
- }
- } else {
- // We don't expect other messages here.
- NOTREACHED();
- }
-
- return true;
-}
« no previous file with comments | « chrome/browser/automation/extension_port_container.h ('k') | chrome/browser/extensions/extension_function_dispatcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698