blob: 147df63660d6c56ee087a8c61ac53fce0938a818 [file] [log] [blame]
// 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/test/automation/extension_proxy.h"
#include "base/string_number_conversions.h"
#include "chrome/common/automation_messages.h"
#include "chrome/test/automation/automation_proxy.h"
#include "chrome/test/automation/browser_proxy.h"
#include "testing/gtest/include/gtest/gtest.h"
ExtensionProxy::ExtensionProxy(AutomationMessageSender* sender,
AutomationHandleTracker* tracker,
int handle)
: AutomationResourceProxy(tracker, sender, handle) {
}
bool ExtensionProxy::Uninstall() {
if (!is_valid())
return false;
bool success = false;
if (!sender_->Send(new AutomationMsg_UninstallExtension(handle_, &success)))
return false;
return success;
}
bool ExtensionProxy::Enable() {
if (!is_valid())
return false;
bool success = false;
if (!sender_->Send(new AutomationMsg_EnableExtension(handle_, &success)))
return false;
return success;
}
bool ExtensionProxy::Disable() {
if (!is_valid())
return false;
bool success = false;
if (!sender_->Send(new AutomationMsg_DisableExtension(handle_, &success)))
return false;
return success;
}
bool ExtensionProxy::ExecuteActionInActiveTabAsync(BrowserProxy* browser) {
if (!is_valid())
return false;
bool success = false;
if (!sender_->Send(new AutomationMsg_ExecuteExtensionActionInActiveTabAsync(
handle_, browser->handle(), &success)))
return false;
return success;
}
bool ExtensionProxy::MoveBrowserAction(int index) {
if (!is_valid())
return false;
bool success = false;
if (!sender_->Send(
new AutomationMsg_MoveExtensionBrowserAction(handle_, index, &success)))
return false;
return success;
}
bool ExtensionProxy::GetId(std::string* id) {
DCHECK(id);
return GetProperty(AUTOMATION_MSG_EXTENSION_ID, id);
}
bool ExtensionProxy::GetName(std::string* name) {
DCHECK(name);
return GetProperty(AUTOMATION_MSG_EXTENSION_NAME, name);
}
bool ExtensionProxy::GetVersion(std::string* version) {
DCHECK(version);
return GetProperty(AUTOMATION_MSG_EXTENSION_VERSION, version);
}
bool ExtensionProxy::GetBrowserActionIndex(int* index) {
DCHECK(index);
std::string index_string;
if (!GetProperty(AUTOMATION_MSG_EXTENSION_BROWSER_ACTION_INDEX,
&index_string))
return false;
// Do not modify |index| until we are sure we can get the value, just to be
// nice to the caller.
int converted_index;
if (!base::StringToInt(index_string, &converted_index)) {
LOG(ERROR) << "Received index string could not be converted to int: "
<< index_string;
return false;
}
*index = converted_index;
return true;
}
void ExtensionProxy::EnsureIdMatches(const std::string& expected_id) {
std::string id;
ASSERT_TRUE(GetId(&id));
ASSERT_EQ(expected_id, id);
}
void ExtensionProxy::EnsureNameMatches(const std::string& expected_name) {
std::string name;
ASSERT_TRUE(GetName(&name));
ASSERT_EQ(expected_name, name);
}
void ExtensionProxy::EnsureVersionMatches(const std::string& expected_version) {
std::string version;
ASSERT_TRUE(GetVersion(&version));
ASSERT_EQ(expected_version, version);
}
void ExtensionProxy::EnsureBrowserActionIndexMatches(int expected_index) {
int index;
ASSERT_TRUE(GetBrowserActionIndex(&index));
ASSERT_EQ(expected_index, index);
}
bool ExtensionProxy::GetProperty(AutomationMsg_ExtensionProperty type,
std::string* value) {
DCHECK(value);
if (!is_valid())
return false;
bool success = false;
if (!sender_->Send(new AutomationMsg_GetExtensionProperty(handle_, type,
&success, value)))
return false;
return success;
}