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 @@ ...@@ -12,6 +12,7 @@
#include "chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_delegate.h" #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_context.h"
#include "content/public/browser/browser_thread.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/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_guest.h"
#include "extensions/browser/guest_view/web_view/web_view_permission_helper.h" #include "extensions/browser/guest_view/web_view/web_view_permission_helper.h"
...@@ -79,6 +80,15 @@ WebViewPermissionHelperDelegate* ChromeExtensionsAPIClient:: ...@@ -79,6 +80,15 @@ WebViewPermissionHelperDelegate* ChromeExtensionsAPIClient::
return new ChromeWebViewPermissionHelperDelegate(web_view_permission_helper); 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() { void ChromeExtensionsAPIClient::RegisterGuestViewTypes() {
ExtensionOptionsGuest::Register(); ExtensionOptionsGuest::Register();
} }
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#define CHROME_BROWSER_EXTENSIONS_API_CHROME_EXTENSIONS_API_CLIENT_H_ #define CHROME_BROWSER_EXTENSIONS_API_CHROME_EXTENSIONS_API_CLIENT_H_
#include "base/compiler_specific.h" #include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "extensions/browser/api/extensions_api_client.h" #include "extensions/browser/api/extensions_api_client.h"
namespace extensions { namespace extensions {
...@@ -38,9 +39,12 @@ class ChromeExtensionsAPIClient : public ExtensionsAPIClient { ...@@ -38,9 +39,12 @@ class ChromeExtensionsAPIClient : public ExtensionsAPIClient {
virtual WebViewPermissionHelperDelegate* virtual WebViewPermissionHelperDelegate*
CreateWebViewPermissionHelperDelegate( CreateWebViewPermissionHelperDelegate(
WebViewPermissionHelper* web_view_permission_helper) const OVERRIDE; WebViewPermissionHelper* web_view_permission_helper) const OVERRIDE;
virtual device::HidService* GetHidService() OVERRIDE;
virtual void RegisterGuestViewTypes() OVERRIDE; virtual void RegisterGuestViewTypes() OVERRIDE;
private: private:
scoped_ptr<device::HidService> hid_service_;
DISALLOW_COPY_AND_ASSIGN(ChromeExtensionsAPIClient); DISALLOW_COPY_AND_ASSIGN(ChromeExtensionsAPIClient);
}; };
......
...@@ -73,8 +73,7 @@ class HidConnectionTest : public testing::Test { ...@@ -73,8 +73,7 @@ class HidConnectionTest : public testing::Test {
if (!UsbTestGadget::IsTestEnabled()) return; if (!UsbTestGadget::IsTestEnabled()) return;
message_loop_.reset(new base::MessageLoopForIO()); message_loop_.reset(new base::MessageLoopForIO());
service_.reset(HidService::GetInstance( service_.reset(HidService::Create(message_loop_->message_loop_proxy()));
message_loop_->message_loop_proxy()));
ASSERT_TRUE(service_); ASSERT_TRUE(service_);
test_gadget_ = UsbTestGadget::Claim(); test_gadget_ = UsbTestGadget::Claim();
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
#include "base/lazy_instance.h" #include "base/lazy_instance.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/memory/scoped_vector.h" #include "base/memory/scoped_vector.h"
#include "base/message_loop/message_loop.h"
#include "base/stl_util.h" #include "base/stl_util.h"
#include "base/threading/thread_restrictions.h" #include "base/threading/thread_restrictions.h"
...@@ -21,55 +20,17 @@ ...@@ -21,55 +20,17 @@
namespace device { namespace device {
namespace { HidService* HidService::Create(
// 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(
scoped_refptr<base::MessageLoopProxy> ui_message_loop) { scoped_refptr<base::MessageLoopProxy> ui_message_loop) {
if (g_service == NULL) {
#if defined(OS_LINUX) && defined(USE_UDEV) #if defined(OS_LINUX) && defined(USE_UDEV)
g_service = new HidServiceLinux(ui_message_loop); return new HidServiceLinux(ui_message_loop);
#elif defined(OS_MACOSX) #elif defined(OS_MACOSX)
g_service = new HidServiceMac(); return new HidServiceMac();
#elif defined(OS_WIN) #elif defined(OS_WIN)
g_service = new HidServiceWin(); return new HidServiceWin();
#else
return NULL;
#endif #endif
if (g_service != NULL) {
HidServiceDestroyer* destroyer = new HidServiceDestroyer(g_service);
base::MessageLoop::current()->AddDestructionObserver(destroyer);
}
}
return g_service;
} }
HidService::~HidService() { HidService::~HidService() {
......
...@@ -20,7 +20,7 @@ class HidConnection; ...@@ -20,7 +20,7 @@ class HidConnection;
class HidService { class HidService {
public: public:
static HidService* GetInstance( static HidService* Create(
scoped_refptr<base::MessageLoopProxy> ui_message_loop); scoped_refptr<base::MessageLoopProxy> ui_message_loop);
virtual ~HidService(); virtual ~HidService();
......
...@@ -13,8 +13,8 @@ namespace device { ...@@ -13,8 +13,8 @@ namespace device {
TEST(HidServiceTest, Create) { TEST(HidServiceTest, Create) {
base::MessageLoopForIO message_loop; base::MessageLoopForIO message_loop;
HidService* service = HidService::GetInstance( scoped_ptr<HidService> service(
message_loop.message_loop_proxy()); HidService::Create(message_loop.message_loop_proxy()));
ASSERT_TRUE(service); ASSERT_TRUE(service);
std::vector<HidDeviceInfo> devices; std::vector<HidDeviceInfo> devices;
......
...@@ -45,6 +45,12 @@ AppViewGuestDelegate* ExtensionsAPIClient::CreateAppViewGuestDelegate() const { ...@@ -45,6 +45,12 @@ AppViewGuestDelegate* ExtensionsAPIClient::CreateAppViewGuestDelegate() const {
return NULL; 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( WebViewGuestDelegate* ExtensionsAPIClient::CreateWebViewGuestDelegate(
WebViewGuest* web_view_guest) const { WebViewGuest* web_view_guest) const {
return NULL; return NULL;
......
...@@ -19,6 +19,10 @@ namespace content { ...@@ -19,6 +19,10 @@ namespace content {
class BrowserContext; class BrowserContext;
} }
namespace device {
class HidService;
}
namespace extensions { namespace extensions {
class AppViewGuestDelegate; class AppViewGuestDelegate;
...@@ -72,6 +76,9 @@ class ExtensionsAPIClient { ...@@ -72,6 +76,9 @@ class ExtensionsAPIClient {
// Creates the AppViewGuestDelegate. // Creates the AppViewGuestDelegate.
virtual AppViewGuestDelegate* CreateAppViewGuestDelegate() const; 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 // Returns a delegate for some of WebViewGuest's behavior. The caller owns the
// returned WebViewGuestDelegate. // returned WebViewGuestDelegate.
virtual WebViewGuestDelegate* CreateWebViewGuestDelegate ( virtual WebViewGuestDelegate* CreateWebViewGuestDelegate (
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "device/hid/hid_device_info.h" #include "device/hid/hid_device_info.h"
#include "device/hid/hid_service.h" #include "device/hid/hid_service.h"
#include "extensions/browser/api/api_resource_manager.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/api/hid.h"
#include "extensions/common/permissions/permissions_data.h" #include "extensions/common/permissions/permissions_data.h"
#include "extensions/common/permissions/usb_device_permission.h" #include "extensions/common/permissions/usb_device_permission.h"
...@@ -126,9 +127,7 @@ void HidConnectFunction::AsyncWorkStart() { ...@@ -126,9 +127,7 @@ void HidConnectFunction::AsyncWorkStart() {
return; return;
} }
HidService* hid_service = HidService::GetInstance( HidService* hid_service = ExtensionsAPIClient::Get()->GetHidService();
content::BrowserThread::GetMessageLoopProxyForThread(
content::BrowserThread::UI));
DCHECK(hid_service); DCHECK(hid_service);
scoped_refptr<HidConnection> connection = scoped_refptr<HidConnection> connection =
hid_service->Connect(device_info.device_id); hid_service->Connect(device_info.device_id);
......
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
#include <vector> #include <vector>
#include "base/lazy_instance.h" #include "base/lazy_instance.h"
#include "content/public/browser/browser_thread.h"
#include "device/hid/hid_service.h" #include "device/hid/hid_service.h"
#include "extensions/browser/api/extensions_api_client.h"
using device::HidService; using device::HidService;
using device::HidUsageAndPage; using device::HidUsageAndPage;
...@@ -17,10 +17,7 @@ using device::HidUsageAndPage; ...@@ -17,10 +17,7 @@ using device::HidUsageAndPage;
namespace extensions { namespace extensions {
HidDeviceManager::HidDeviceManager(content::BrowserContext* context) HidDeviceManager::HidDeviceManager(content::BrowserContext* context)
: next_resource_id_(0), : next_resource_id_(0) {}
ui_message_loop_(content::BrowserThread::GetMessageLoopProxyForThread(
content::BrowserThread::UI)) {
}
HidDeviceManager::~HidDeviceManager() {} HidDeviceManager::~HidDeviceManager() {}
...@@ -37,7 +34,7 @@ scoped_ptr<base::ListValue> HidDeviceManager::GetApiDevices( ...@@ -37,7 +34,7 @@ scoped_ptr<base::ListValue> HidDeviceManager::GetApiDevices(
uint16_t product_id) { uint16_t product_id) {
UpdateDevices(); UpdateDevices();
HidService* hid_service = HidService::GetInstance(ui_message_loop_); HidService* hid_service = ExtensionsAPIClient::Get()->GetHidService();
DCHECK(hid_service); DCHECK(hid_service);
base::ListValue* api_devices = new base::ListValue(); base::ListValue* api_devices = new base::ListValue();
for (ResourceIdToDeviceIdMap::const_iterator device_iter = for (ResourceIdToDeviceIdMap::const_iterator device_iter =
...@@ -100,7 +97,7 @@ scoped_ptr<base::ListValue> HidDeviceManager::GetApiDevices( ...@@ -100,7 +97,7 @@ scoped_ptr<base::ListValue> HidDeviceManager::GetApiDevices(
bool HidDeviceManager::GetDeviceInfo(int resource_id, bool HidDeviceManager::GetDeviceInfo(int resource_id,
device::HidDeviceInfo* device_info) { device::HidDeviceInfo* device_info) {
UpdateDevices(); UpdateDevices();
HidService* hid_service = HidService::GetInstance(ui_message_loop_); HidService* hid_service = ExtensionsAPIClient::Get()->GetHidService();
DCHECK(hid_service); DCHECK(hid_service);
ResourceIdToDeviceIdMap::const_iterator device_iter = ResourceIdToDeviceIdMap::const_iterator device_iter =
...@@ -113,7 +110,7 @@ bool HidDeviceManager::GetDeviceInfo(int resource_id, ...@@ -113,7 +110,7 @@ bool HidDeviceManager::GetDeviceInfo(int resource_id,
void HidDeviceManager::UpdateDevices() { void HidDeviceManager::UpdateDevices() {
thread_checker_.CalledOnValidThread(); thread_checker_.CalledOnValidThread();
HidService* hid_service = HidService::GetInstance(ui_message_loop_); HidService* hid_service = ExtensionsAPIClient::Get()->GetHidService();
DCHECK(hid_service); DCHECK(hid_service);
std::vector<device::HidDeviceInfo> devices; std::vector<device::HidDeviceInfo> devices;
......
...@@ -10,9 +10,7 @@ ...@@ -10,9 +10,7 @@
#include <map> #include <map>
#include "base/basictypes.h" #include "base/basictypes.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h" #include "base/memory/scoped_ptr.h"
#include "base/message_loop/message_loop_proxy.h"
#include "base/threading/thread_checker.h" #include "base/threading/thread_checker.h"
#include "device/hid/hid_device_info.h" #include "device/hid/hid_device_info.h"
#include "extensions/browser/browser_context_keyed_api_factory.h" #include "extensions/browser/browser_context_keyed_api_factory.h"
...@@ -55,8 +53,6 @@ class HidDeviceManager : public BrowserContextKeyedAPI { ...@@ -55,8 +53,6 @@ class HidDeviceManager : public BrowserContextKeyedAPI {
ResourceIdToDeviceIdMap device_ids_; ResourceIdToDeviceIdMap device_ids_;
DeviceIdToResourceIdMap resource_ids_; DeviceIdToResourceIdMap resource_ids_;
scoped_refptr<base::MessageLoopProxy> ui_message_loop_;
DISALLOW_COPY_AND_ASSIGN(HidDeviceManager); DISALLOW_COPY_AND_ASSIGN(HidDeviceManager);
}; };
......
...@@ -49,6 +49,8 @@ ...@@ -49,6 +49,8 @@
'app/shell_main_delegate.h', 'app/shell_main_delegate.h',
'browser/api/shell/shell_api.cc', 'browser/api/shell/shell_api.cc',
'browser/api/shell/shell_api.h', '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.cc',
'browser/default_shell_browser_main_delegate.h', 'browser/default_shell_browser_main_delegate.h',
'browser/desktop_controller.cc', '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 @@ ...@@ -9,13 +9,12 @@
#include "base/prefs/testing_pref_store.h" #include "base/prefs/testing_pref_store.h"
#include "components/pref_registry/pref_registry_syncable.h" #include "components/pref_registry/pref_registry_syncable.h"
#include "components/user_prefs/user_prefs.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/api/generated_api_registration.h"
#include "extensions/browser/app_sorting.h" #include "extensions/browser/app_sorting.h"
#include "extensions/browser/extension_function_registry.h" #include "extensions/browser/extension_function_registry.h"
#include "extensions/browser/extension_prefs.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/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_app_sorting.h"
#include "extensions/shell/browser/shell_extension_host_delegate.h" #include "extensions/shell/browser/shell_extension_host_delegate.h"
#include "extensions/shell/browser/shell_extension_system_factory.h" #include "extensions/shell/browser/shell_extension_system_factory.h"
...@@ -35,7 +34,7 @@ void RegisterPrefs(user_prefs::PrefRegistrySyncable* registry) { ...@@ -35,7 +34,7 @@ void RegisterPrefs(user_prefs::PrefRegistrySyncable* registry) {
ShellExtensionsBrowserClient::ShellExtensionsBrowserClient( ShellExtensionsBrowserClient::ShellExtensionsBrowserClient(
BrowserContext* context) BrowserContext* context)
: browser_context_(context), api_client_(new ExtensionsAPIClient) { : browser_context_(context), api_client_(new ShellExtensionsAPIClient) {
// Set up the preferences service. // Set up the preferences service.
base::PrefServiceFactory factory; base::PrefServiceFactory factory;
factory.set_user_prefs(new TestingPrefStore); 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