| // 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; |
| } |