| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "chrome/browser/automation/extension_port_container.h" | 5 #include "chrome/browser/automation/extension_port_container.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/json_reader.h" | 8 #include "base/json/json_reader.h" |
| 9 #include "base/json_writer.h" | 9 #include "base/json/json_writer.h" |
| 10 #include "base/values.h" | 10 #include "base/values.h" |
| 11 #include "chrome/browser/automation/automation_provider.h" | 11 #include "chrome/browser/automation/automation_provider.h" |
| 12 #include "chrome/browser/automation/extension_automation_constants.h" | 12 #include "chrome/browser/automation/extension_automation_constants.h" |
| 13 #include "chrome/browser/chrome_thread.h" | 13 #include "chrome/browser/chrome_thread.h" |
| 14 #include "chrome/browser/extensions/extension_message_service.h" | 14 #include "chrome/browser/extensions/extension_message_service.h" |
| 15 #include "chrome/browser/profile.h" | 15 #include "chrome/browser/profile.h" |
| 16 #include "chrome/browser/renderer_host/render_process_host.h" | 16 #include "chrome/browser/renderer_host/render_process_host.h" |
| 17 #include "chrome/browser/renderer_host/render_view_host.h" | 17 #include "chrome/browser/renderer_host/render_view_host.h" |
| 18 #include "chrome/common/notification_service.h" | 18 #include "chrome/common/notification_service.h" |
| 19 #include "chrome/common/render_messages.h" | 19 #include "chrome/common/render_messages.h" |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 | 85 |
| 86 void ExtensionPortContainer::SendConnectionResponse(int connection_id, | 86 void ExtensionPortContainer::SendConnectionResponse(int connection_id, |
| 87 int port_id) { | 87 int port_id) { |
| 88 // Compose the reply message. | 88 // Compose the reply message. |
| 89 scoped_ptr<DictionaryValue> msg_dict(new DictionaryValue()); | 89 scoped_ptr<DictionaryValue> msg_dict(new DictionaryValue()); |
| 90 msg_dict->SetInteger(ext::kAutomationRequestIdKey, ext::CHANNEL_OPENED); | 90 msg_dict->SetInteger(ext::kAutomationRequestIdKey, ext::CHANNEL_OPENED); |
| 91 msg_dict->SetInteger(ext::kAutomationConnectionIdKey, connection_id); | 91 msg_dict->SetInteger(ext::kAutomationConnectionIdKey, connection_id); |
| 92 msg_dict->SetInteger(ext::kAutomationPortIdKey, port_id); | 92 msg_dict->SetInteger(ext::kAutomationPortIdKey, port_id); |
| 93 | 93 |
| 94 std::string msg_json; | 94 std::string msg_json; |
| 95 JSONWriter::Write(msg_dict.get(), false, &msg_json); | 95 base::JSONWriter::Write(msg_dict.get(), false, &msg_json); |
| 96 | 96 |
| 97 PostResponseToExternalPort(msg_json); | 97 PostResponseToExternalPort(msg_json); |
| 98 } | 98 } |
| 99 | 99 |
| 100 bool ExtensionPortContainer::Send(IPC::Message *message) { | 100 bool ExtensionPortContainer::Send(IPC::Message *message) { |
| 101 DCHECK_EQ(MessageLoop::current()->type(), MessageLoop::TYPE_UI); | 101 DCHECK_EQ(MessageLoop::current()->type(), MessageLoop::TYPE_UI); |
| 102 | 102 |
| 103 IPC_BEGIN_MESSAGE_MAP(ExtensionPortContainer, *message) | 103 IPC_BEGIN_MESSAGE_MAP(ExtensionPortContainer, *message) |
| 104 IPC_MESSAGE_HANDLER(ViewMsg_ExtensionMessageInvoke, | 104 IPC_MESSAGE_HANDLER(ViewMsg_ExtensionMessageInvoke, |
| 105 OnExtensionMessageInvoke) | 105 OnExtensionMessageInvoke) |
| (...skipping 28 matching lines...) Expand all Loading... |
| 134 | 134 |
| 135 void ExtensionPortContainer::OnExtensionHandleMessage( | 135 void ExtensionPortContainer::OnExtensionHandleMessage( |
| 136 const std::string& message, int source_port_id) { | 136 const std::string& message, int source_port_id) { |
| 137 // Compose the reply message and fire it away. | 137 // Compose the reply message and fire it away. |
| 138 DictionaryValue msg_dict; | 138 DictionaryValue msg_dict; |
| 139 msg_dict.SetInteger(ext::kAutomationRequestIdKey, ext::POST_MESSAGE); | 139 msg_dict.SetInteger(ext::kAutomationRequestIdKey, ext::POST_MESSAGE); |
| 140 msg_dict.SetInteger(ext::kAutomationPortIdKey, port_id_); | 140 msg_dict.SetInteger(ext::kAutomationPortIdKey, port_id_); |
| 141 msg_dict.SetString(ext::kAutomationMessageDataKey, message); | 141 msg_dict.SetString(ext::kAutomationMessageDataKey, message); |
| 142 | 142 |
| 143 std::string msg_json; | 143 std::string msg_json; |
| 144 JSONWriter::Write(&msg_dict, false, &msg_json); | 144 base::JSONWriter::Write(&msg_dict, false, &msg_json); |
| 145 | 145 |
| 146 PostMessageToExternalPort(msg_json); | 146 PostMessageToExternalPort(msg_json); |
| 147 } | 147 } |
| 148 | 148 |
| 149 void ExtensionPortContainer::OnExtensionPortDisconnected(int source_port_id) { | 149 void ExtensionPortContainer::OnExtensionPortDisconnected(int source_port_id) { |
| 150 // Compose the disconnect message and fire it away. | 150 // Compose the disconnect message and fire it away. |
| 151 DictionaryValue msg_dict; | 151 DictionaryValue msg_dict; |
| 152 msg_dict.SetInteger(ext::kAutomationRequestIdKey, ext::CHANNEL_CLOSED); | 152 msg_dict.SetInteger(ext::kAutomationRequestIdKey, ext::CHANNEL_CLOSED); |
| 153 msg_dict.SetInteger(ext::kAutomationPortIdKey, port_id_); | 153 msg_dict.SetInteger(ext::kAutomationPortIdKey, port_id_); |
| 154 | 154 |
| 155 std::string msg_json; | 155 std::string msg_json; |
| 156 JSONWriter::Write(&msg_dict, false, &msg_json); | 156 base::JSONWriter::Write(&msg_dict, false, &msg_json); |
| 157 | 157 |
| 158 PostMessageToExternalPort(msg_json); | 158 PostMessageToExternalPort(msg_json); |
| 159 } | 159 } |
| 160 | 160 |
| 161 bool ExtensionPortContainer::InterceptMessageFromExternalHost( | 161 bool ExtensionPortContainer::InterceptMessageFromExternalHost( |
| 162 const std::string& message, const std::string& origin, | 162 const std::string& message, const std::string& origin, |
| 163 const std::string& target, AutomationProvider* automation, | 163 const std::string& target, AutomationProvider* automation, |
| 164 RenderViewHost *view_host, int tab_handle) { | 164 RenderViewHost *view_host, int tab_handle) { |
| 165 if (target != ext::kAutomationPortRequestTarget) | 165 if (target != ext::kAutomationPortRequestTarget) |
| 166 return false; | 166 return false; |
| 167 | 167 |
| 168 if (origin != ext::kAutomationOrigin) { | 168 if (origin != ext::kAutomationOrigin) { |
| 169 // TODO(siggi): Should we block the message on wrong origin? | 169 // TODO(siggi): Should we block the message on wrong origin? |
| 170 LOG(WARNING) << "Wrong origin on automation port message " << origin; | 170 LOG(WARNING) << "Wrong origin on automation port message " << origin; |
| 171 } | 171 } |
| 172 | 172 |
| 173 scoped_ptr<Value> message_value(JSONReader::Read(message, false)); | 173 scoped_ptr<Value> message_value(base::JSONReader::Read(message, false)); |
| 174 DCHECK(message_value->IsType(Value::TYPE_DICTIONARY)); | 174 DCHECK(message_value->IsType(Value::TYPE_DICTIONARY)); |
| 175 if (!message_value->IsType(Value::TYPE_DICTIONARY)) | 175 if (!message_value->IsType(Value::TYPE_DICTIONARY)) |
| 176 return true; | 176 return true; |
| 177 | 177 |
| 178 DictionaryValue* message_dict = | 178 DictionaryValue* message_dict = |
| 179 reinterpret_cast<DictionaryValue*>(message_value.get()); | 179 reinterpret_cast<DictionaryValue*>(message_value.get()); |
| 180 | 180 |
| 181 int command = -1; | 181 int command = -1; |
| 182 bool got_value = message_dict->GetInteger(ext::kAutomationRequestIdKey, | 182 bool got_value = message_dict->GetInteger(ext::kAutomationRequestIdKey, |
| 183 &command); | 183 &command); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 // This will delete the port and notify the other end of the disconnect. | 246 // This will delete the port and notify the other end of the disconnect. |
| 247 automation->RemovePortContainer(port); | 247 automation->RemovePortContainer(port); |
| 248 } | 248 } |
| 249 } else { | 249 } else { |
| 250 // We don't expect other messages here. | 250 // We don't expect other messages here. |
| 251 NOTREACHED(); | 251 NOTREACHED(); |
| 252 } | 252 } |
| 253 | 253 |
| 254 return true; | 254 return true; |
| 255 } | 255 } |
| OLD | NEW |