Commit 80b00e57 authored by Albert J. Wong's avatar Albert J. Wong

Revert of Adding Select Action Bar Unit test case for input (patchset #3 of...

Revert of Adding Select Action Bar Unit test case for input (patchset #3 of https://codereview.chromium.org/506423003/)

Reason for revert:
Failed compile on Android builders.

Original issue's description:
> [Android] Add unit tests for SelectActionBar appearance
>
> The SelectActionBar currently lacks test coverage. Add several test
> cases covering the appearance of the bar when interacting with an input
> field.
>
> Committed: https://chromium.googlesource.com/chromium/src/+/0bc56569817a24acea46748c599d77b59157d84d

BR=jdduke@chromium.org,aurimas@chromium.org,ajith.v@samsung.com
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.chromium.org/514493004

Cr-Commit-Position: refs/heads/master@{#292276}
parent 500986e5
......@@ -12,6 +12,7 @@
#include "chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
#include "device/hid/hid_service.h"
#include "extensions/browser/guest_view/app_view/app_view_guest.h"
#include "extensions/browser/guest_view/web_view/web_view_guest.h"
#include "extensions/browser/guest_view/web_view/web_view_permission_helper.h"
......@@ -79,6 +80,15 @@ WebViewPermissionHelperDelegate* ChromeExtensionsAPIClient::
return new ChromeWebViewPermissionHelperDelegate(web_view_permission_helper);
}
device::HidService* ChromeExtensionsAPIClient::GetHidService() {
if (!hid_service_) {
hid_service_.reset(device::HidService::Create(
content::BrowserThread::GetMessageLoopProxyForThread(
content::BrowserThread::UI)));
}
return hid_service_.get();
}
void ChromeExtensionsAPIClient::RegisterGuestViewTypes() {
ExtensionOptionsGuest::Register();
}
......
......@@ -6,6 +6,7 @@
#define CHROME_BROWSER_EXTENSIONS_API_CHROME_EXTENSIONS_API_CLIENT_H_
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "extensions/browser/api/extensions_api_client.h"
namespace extensions {
......@@ -38,9 +39,12 @@ class ChromeExtensionsAPIClient : public ExtensionsAPIClient {
virtual WebViewPermissionHelperDelegate*
CreateWebViewPermissionHelperDelegate(
WebViewPermissionHelper* web_view_permission_helper) const OVERRIDE;
virtual device::HidService* GetHidService() OVERRIDE;
virtual void RegisterGuestViewTypes() OVERRIDE;
private:
scoped_ptr<device::HidService> hid_service_;
DISALLOW_COPY_AND_ASSIGN(ChromeExtensionsAPIClient);
};
......
......@@ -73,8 +73,7 @@ class HidConnectionTest : public testing::Test {
if (!UsbTestGadget::IsTestEnabled()) return;
message_loop_.reset(new base::MessageLoopForIO());
service_.reset(HidService::GetInstance(
message_loop_->message_loop_proxy()));
service_.reset(HidService::Create(message_loop_->message_loop_proxy()));
ASSERT_TRUE(service_);
test_gadget_ = UsbTestGadget::Claim();
......
......@@ -7,7 +7,6 @@
#include "base/lazy_instance.h"
#include "base/logging.h"
#include "base/memory/scoped_vector.h"
#include "base/message_loop/message_loop.h"
#include "base/stl_util.h"
#include "base/threading/thread_restrictions.h"
......@@ -21,55 +20,17 @@
namespace device {
namespace {
// TODO(rockot/reillyg): This is pretty awful all around. There is a combination
// of constraints here: HidService doesn't know about //content, it must be able
// to talk to the PermissionBrokerClient on ChromeOS (UI thread), and it's
// expected to live and die on the FILE thread (for now). Solution? Make it a
// singleton whose instance getter takes a UI message loop proxy, and let the
// lifetime of the HidService be managed by a MessageLoop::DestructionObserver.
//
// The right long-term solution is probably a mojo service. A tolerable
// medium-term solution is up for debate.
class HidServiceDestroyer : public base::MessageLoop::DestructionObserver {
public:
explicit HidServiceDestroyer(HidService* hid_service)
: hid_service_(hid_service) {}
virtual ~HidServiceDestroyer() {}
private:
// base::MessageLoop::DestructionObserver implementation.
virtual void WillDestroyCurrentMessageLoop() OVERRIDE {
base::MessageLoop::current()->RemoveDestructionObserver(this);
delete hid_service_;
delete this;
hid_service_ = NULL;
}
HidService* hid_service_;
};
HidService* g_service = NULL;
} // namespace
HidService* HidService::GetInstance(
HidService* HidService::Create(
scoped_refptr<base::MessageLoopProxy> ui_message_loop) {
if (g_service == NULL) {
#if defined(OS_LINUX) && defined(USE_UDEV)
g_service = new HidServiceLinux(ui_message_loop);
return new HidServiceLinux(ui_message_loop);
#elif defined(OS_MACOSX)
g_service = new HidServiceMac();
return new HidServiceMac();
#elif defined(OS_WIN)
g_service = new HidServiceWin();
return new HidServiceWin();
#else
return NULL;
#endif
if (g_service != NULL) {
HidServiceDestroyer* destroyer = new HidServiceDestroyer(g_service);
base::MessageLoop::current()->AddDestructionObserver(destroyer);
}
}
return g_service;
}
HidService::~HidService() {
......
......@@ -20,7 +20,7 @@ class HidConnection;
class HidService {
public:
static HidService* GetInstance(
static HidService* Create(
scoped_refptr<base::MessageLoopProxy> ui_message_loop);
virtual ~HidService();
......
......@@ -13,8 +13,8 @@ namespace device {
TEST(HidServiceTest, Create) {
base::MessageLoopForIO message_loop;
HidService* service = HidService::GetInstance(
message_loop.message_loop_proxy());
scoped_ptr<HidService> service(
HidService::Create(message_loop.message_loop_proxy()));
ASSERT_TRUE(service);
std::vector<HidDeviceInfo> devices;
......
......@@ -45,6 +45,12 @@ AppViewGuestDelegate* ExtensionsAPIClient::CreateAppViewGuestDelegate() const {
return NULL;
}
device::HidService* ExtensionsAPIClient::GetHidService() {
// This should never be called by clients which don't support the HID API.
NOTIMPLEMENTED();
return NULL;
}
WebViewGuestDelegate* ExtensionsAPIClient::CreateWebViewGuestDelegate(
WebViewGuest* web_view_guest) const {
return NULL;
......
......@@ -19,6 +19,10 @@ namespace content {
class BrowserContext;
}
namespace device {
class HidService;
}
namespace extensions {
class AppViewGuestDelegate;
......@@ -72,6 +76,9 @@ class ExtensionsAPIClient {
// Creates the AppViewGuestDelegate.
virtual AppViewGuestDelegate* CreateAppViewGuestDelegate() const;
// Returns the HidService instance for this embedder.
virtual device::HidService* GetHidService();
// Returns a delegate for some of WebViewGuest's behavior. The caller owns the
// returned WebViewGuestDelegate.
virtual WebViewGuestDelegate* CreateWebViewGuestDelegate (
......
......@@ -11,6 +11,7 @@
#include "device/hid/hid_device_info.h"
#include "device/hid/hid_service.h"
#include "extensions/browser/api/api_resource_manager.h"
#include "extensions/browser/api/extensions_api_client.h"
#include "extensions/common/api/hid.h"
#include "extensions/common/permissions/permissions_data.h"
#include "extensions/common/permissions/usb_device_permission.h"
......@@ -126,9 +127,7 @@ void HidConnectFunction::AsyncWorkStart() {
return;
}
HidService* hid_service = HidService::GetInstance(
content::BrowserThread::GetMessageLoopProxyForThread(
content::BrowserThread::UI));
HidService* hid_service = ExtensionsAPIClient::Get()->GetHidService();
DCHECK(hid_service);
scoped_refptr<HidConnection> connection =
hid_service->Connect(device_info.device_id);
......
......@@ -8,8 +8,8 @@
#include <vector>
#include "base/lazy_instance.h"
#include "content/public/browser/browser_thread.h"
#include "device/hid/hid_service.h"
#include "extensions/browser/api/extensions_api_client.h"
using device::HidService;
using device::HidUsageAndPage;
......@@ -17,10 +17,7 @@ using device::HidUsageAndPage;
namespace extensions {
HidDeviceManager::HidDeviceManager(content::BrowserContext* context)
: next_resource_id_(0),
ui_message_loop_(content::BrowserThread::GetMessageLoopProxyForThread(
content::BrowserThread::UI)) {
}
: next_resource_id_(0) {}
HidDeviceManager::~HidDeviceManager() {}
......@@ -37,7 +34,7 @@ scoped_ptr<base::ListValue> HidDeviceManager::GetApiDevices(
uint16_t product_id) {
UpdateDevices();
HidService* hid_service = HidService::GetInstance(ui_message_loop_);
HidService* hid_service = ExtensionsAPIClient::Get()->GetHidService();
DCHECK(hid_service);
base::ListValue* api_devices = new base::ListValue();
for (ResourceIdToDeviceIdMap::const_iterator device_iter =
......@@ -100,7 +97,7 @@ scoped_ptr<base::ListValue> HidDeviceManager::GetApiDevices(
bool HidDeviceManager::GetDeviceInfo(int resource_id,
device::HidDeviceInfo* device_info) {
UpdateDevices();
HidService* hid_service = HidService::GetInstance(ui_message_loop_);
HidService* hid_service = ExtensionsAPIClient::Get()->GetHidService();
DCHECK(hid_service);
ResourceIdToDeviceIdMap::const_iterator device_iter =
......@@ -113,7 +110,7 @@ bool HidDeviceManager::GetDeviceInfo(int resource_id,
void HidDeviceManager::UpdateDevices() {
thread_checker_.CalledOnValidThread();
HidService* hid_service = HidService::GetInstance(ui_message_loop_);
HidService* hid_service = ExtensionsAPIClient::Get()->GetHidService();
DCHECK(hid_service);
std::vector<device::HidDeviceInfo> devices;
......
......@@ -10,9 +10,7 @@
#include <map>
#include "base/basictypes.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "base/message_loop/message_loop_proxy.h"
#include "base/threading/thread_checker.h"
#include "device/hid/hid_device_info.h"
#include "extensions/browser/browser_context_keyed_api_factory.h"
......@@ -55,8 +53,6 @@ class HidDeviceManager : public BrowserContextKeyedAPI {
ResourceIdToDeviceIdMap device_ids_;
DeviceIdToResourceIdMap resource_ids_;
scoped_refptr<base::MessageLoopProxy> ui_message_loop_;
DISALLOW_COPY_AND_ASSIGN(HidDeviceManager);
};
......
......@@ -49,6 +49,8 @@
'app/shell_main_delegate.h',
'browser/api/shell/shell_api.cc',
'browser/api/shell/shell_api.h',
'browser/api/shell_extensions_api_client.cc',
'browser/api/shell_extensions_api_client.h',
'browser/default_shell_browser_main_delegate.cc',
'browser/default_shell_browser_main_delegate.h',
'browser/desktop_controller.cc',
......
// Copyright 2014 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 "extensions/shell/browser/api/shell_extensions_api_client.h"
#include "content/public/browser/browser_thread.h"
#include "device/hid/hid_service.h"
namespace extensions {
ShellExtensionsAPIClient::ShellExtensionsAPIClient() {
}
ShellExtensionsAPIClient::~ShellExtensionsAPIClient() {
}
device::HidService* ShellExtensionsAPIClient::GetHidService() {
if (!hid_service_) {
hid_service_.reset(device::HidService::Create(
content::BrowserThread::GetMessageLoopProxyForThread(
content::BrowserThread::UI)));
}
return hid_service_.get();
}
} // namespace extensions
// Copyright 2014 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.
#ifndef EXTENSIONS_SHELL_BROWSER_API_SHELL_EXTENSIONS_API_CLIENT_H_
#define EXTENSIONS_SHELL_BROWSER_API_SHELL_EXTENSIONS_API_CLIENT_H_
#include "base/memory/scoped_ptr.h"
#include "extensions/browser/api/extensions_api_client.h"
namespace extensions {
// Extra support for Chrome extensions APIs in app_shell.
class ShellExtensionsAPIClient : public ExtensionsAPIClient {
public:
ShellExtensionsAPIClient();
virtual ~ShellExtensionsAPIClient();
// ExtensionsAPIClient implementation.
virtual device::HidService* GetHidService() OVERRIDE;
private:
scoped_ptr<device::HidService> hid_service_;
};
} // namespace extensions
#endif // EXTENSIONS_SHELL_BROWSER_API_SHELL_EXTENSIONS_API_CLIENT_H_
......@@ -9,13 +9,12 @@
#include "base/prefs/testing_pref_store.h"
#include "components/pref_registry/pref_registry_syncable.h"
#include "components/user_prefs/user_prefs.h"
#include "extensions/browser/api/extensions_api_client.h"
#include "extensions/browser/api/generated_api_registration.h"
#include "extensions/browser/app_sorting.h"
#include "extensions/browser/extension_function_registry.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/common/api/generated_api.h"
#include "extensions/shell/browser/api/generated_api_registration.h"
#include "extensions/shell/browser/api/shell_extensions_api_client.h"
#include "extensions/shell/browser/shell_app_sorting.h"
#include "extensions/shell/browser/shell_extension_host_delegate.h"
#include "extensions/shell/browser/shell_extension_system_factory.h"
......@@ -35,7 +34,7 @@ void RegisterPrefs(user_prefs::PrefRegistrySyncable* registry) {
ShellExtensionsBrowserClient::ShellExtensionsBrowserClient(
BrowserContext* context)
: browser_context_(context), api_client_(new ExtensionsAPIClient) {
: browser_context_(context), api_client_(new ShellExtensionsAPIClient) {
// Set up the preferences service.
base::PrefServiceFactory factory;
factory.set_user_prefs(new TestingPrefStore);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment