summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/automation/dom_automation_controller.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/renderer/automation/dom_automation_controller.cc')
-rw-r--r--chrome/renderer/automation/dom_automation_controller.cc144
1 files changed, 0 insertions, 144 deletions
diff --git a/chrome/renderer/automation/dom_automation_controller.cc b/chrome/renderer/automation/dom_automation_controller.cc
deleted file mode 100644
index 81b2be6..0000000
--- a/chrome/renderer/automation/dom_automation_controller.cc
+++ /dev/null
@@ -1,144 +0,0 @@
-// Copyright (c) 2011 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/renderer/automation/dom_automation_controller.h"
-
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/json/json_value_serializer.h"
-#include "base/string_util.h"
-#include "chrome/common/render_messages.h"
-
-DomAutomationController::DomAutomationController()
- : sender_(NULL),
- routing_id_(MSG_ROUTING_NONE),
- automation_id_(MSG_ROUTING_NONE) {
- BindCallback("send", base::Bind(&DomAutomationController::Send,
- base::Unretained(this)));
- BindCallback("setAutomationId",
- base::Bind(&DomAutomationController::SetAutomationId,
- base::Unretained(this)));
- BindCallback("sendJSON", base::Bind(&DomAutomationController::SendJSON,
- base::Unretained(this)));
-}
-
-void DomAutomationController::Send(const CppArgumentList& args,
- CppVariant* result) {
- if (args.size() != 1) {
- result->SetNull();
- return;
- }
-
- if (automation_id_ == MSG_ROUTING_NONE) {
- result->SetNull();
- return;
- }
-
- if (!sender_) {
- NOTREACHED();
- result->SetNull();
- return;
- }
-
- std::string json;
- JSONStringValueSerializer serializer(&json);
- scoped_ptr<Value> value;
-
- // Warning: note that JSON officially requires the root-level object to be
- // an object (e.g. {foo:3}) or an array, while here we're serializing
- // strings, bools, etc. to "JSON". This only works because (a) the JSON
- // writer is lenient, and (b) on the receiving side we wrap the JSON string
- // in square brackets, converting it to an array, then parsing it and
- // grabbing the 0th element to get the value out.
- switch (args[0].type) {
- case NPVariantType_String: {
- value.reset(Value::CreateStringValue(args[0].ToString()));
- break;
- }
- case NPVariantType_Bool: {
- value.reset(Value::CreateBooleanValue(args[0].ToBoolean()));
- break;
- }
- case NPVariantType_Int32: {
- value.reset(Value::CreateIntegerValue(args[0].ToInt32()));
- break;
- }
- case NPVariantType_Double: {
- // The value that is sent back is an integer while it is treated
- // as a double in this binding. The reason being that KJS treats
- // any number value as a double. Refer for more details,
- // chrome/third_party/webkit/src/JavaScriptCore/bindings/c/c_utility.cpp
- value.reset(Value::CreateIntegerValue(args[0].ToInt32()));
- break;
- }
- default: {
- result->SetNull();
- return;
- }
- }
-
- if (!serializer.Serialize(*value)) {
- result->SetNull();
- return;
- }
-
- bool succeeded = sender_->Send(
- new ChromeViewHostMsg_DomOperationResponse(routing_id_,
- json,
- automation_id_));
- result->Set(succeeded);
-
- automation_id_ = MSG_ROUTING_NONE;
-
-}
-
-void DomAutomationController::SendJSON(const CppArgumentList& args,
- CppVariant* result) {
- if (args.size() != 1) {
- result->SetNull();
- return;
- }
-
- if (automation_id_ == MSG_ROUTING_NONE) {
- result->SetNull();
- return;
- }
-
- if (!sender_) {
- NOTREACHED();
- result->SetNull();
- return;
- }
-
- if (args[0].type != NPVariantType_String) {
- result->SetNull();
- return;
- }
-
- std::string json = args[0].ToString();
- result->Set(sender_->Send(
- new ChromeViewHostMsg_DomOperationResponse(routing_id_,
- json,
- automation_id_)));
-
- automation_id_ = MSG_ROUTING_NONE;
-}
-
-void DomAutomationController::SetAutomationId(
- const CppArgumentList& args, CppVariant* result) {
- if (args.size() != 1) {
- result->SetNull();
- return;
- }
-
- // The check here is for NumberType and not Int32 as
- // KJS::JSType only defines a NumberType (no Int32)
- if (!args[0].isNumber()) {
- result->SetNull();
- return;
- }
-
- automation_id_ = args[0].ToInt32();
- result->Set(true);
-}