diff options
author | rockot <rockot@chromium.org> | 2014-09-05 01:02:44 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-09-05 08:05:55 +0000 |
commit | 1a51b92b7038b82a90c1a1944104eaf8c51a9e1c (patch) | |
tree | 9dde79f2e12d64897300d2c389725ab4d349f01f /extensions | |
parent | 243eec86f415a6624d8d41b0ea0393eda0b3a808 (diff) | |
download | chromium_src-1a51b92b7038b82a90c1a1944104eaf8c51a9e1c.zip chromium_src-1a51b92b7038b82a90c1a1944104eaf8c51a9e1c.tar.gz chromium_src-1a51b92b7038b82a90c1a1944104eaf8c51a9e1c.tar.bz2 |
Fix HidService lifetime issues
This reverts HidService to being a singleton instance for now.
BUG=401234
TBR=rpaquay
Review URL: https://codereview.chromium.org/523743005
Cr-Commit-Position: refs/heads/master@{#293464}
Diffstat (limited to 'extensions')
-rw-r--r-- | extensions/browser/api/extensions_api_client.cc | 6 | ||||
-rw-r--r-- | extensions/browser/api/extensions_api_client.h | 7 | ||||
-rw-r--r-- | extensions/browser/api/hid/DEPS | 1 | ||||
-rw-r--r-- | extensions/browser/api/hid/hid_api.cc | 4 | ||||
-rw-r--r-- | extensions/browser/api/hid/hid_device_manager.cc | 10 | ||||
-rw-r--r-- | extensions/browser/api/hid/hid_device_manager.h | 1 | ||||
-rw-r--r-- | extensions/shell/app_shell.gyp | 2 | ||||
-rw-r--r-- | extensions/shell/browser/api/shell_extensions_api_client.cc | 27 | ||||
-rw-r--r-- | extensions/shell/browser/api/shell_extensions_api_client.h | 28 | ||||
-rw-r--r-- | extensions/shell/browser/shell_device_client.cc | 7 | ||||
-rw-r--r-- | extensions/shell/browser/shell_device_client.h | 1 | ||||
-rw-r--r-- | extensions/shell/browser/shell_extensions_browser_client.cc | 4 |
12 files changed, 20 insertions, 78 deletions
diff --git a/extensions/browser/api/extensions_api_client.cc b/extensions/browser/api/extensions_api_client.cc index e797212..471e2b1 100644 --- a/extensions/browser/api/extensions_api_client.cc +++ b/extensions/browser/api/extensions_api_client.cc @@ -30,12 +30,6 @@ 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; diff --git a/extensions/browser/api/extensions_api_client.h b/extensions/browser/api/extensions_api_client.h index 5f1a8e3..9332dc6 100644 --- a/extensions/browser/api/extensions_api_client.h +++ b/extensions/browser/api/extensions_api_client.h @@ -19,10 +19,6 @@ namespace content { class BrowserContext; } -namespace device { -class HidService; -} - namespace extensions { class AppViewGuestDelegate; @@ -61,9 +57,6 @@ 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 ( diff --git a/extensions/browser/api/hid/DEPS b/extensions/browser/api/hid/DEPS index 76a0f69..7dc8543 100644 --- a/extensions/browser/api/hid/DEPS +++ b/extensions/browser/api/hid/DEPS @@ -1,3 +1,4 @@ include_rules = [ + "+device/core", "+device/hid", ] diff --git a/extensions/browser/api/hid/hid_api.cc b/extensions/browser/api/hid/hid_api.cc index 05f4720..99cf1bd 100644 --- a/extensions/browser/api/hid/hid_api.cc +++ b/extensions/browser/api/hid/hid_api.cc @@ -7,12 +7,12 @@ #include <string> #include <vector> +#include "device/core/device_client.h" #include "device/hid/hid_connection.h" #include "device/hid/hid_device_filter.h" #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 "net/base/io_buffer.h" @@ -143,7 +143,7 @@ void HidConnectFunction::AsyncWorkStart() { return; } - HidService* hid_service = ExtensionsAPIClient::Get()->GetHidService(); + HidService* hid_service = device::DeviceClient::Get()->GetHidService(); DCHECK(hid_service); scoped_refptr<HidConnection> connection = hid_service->Connect(device_info.device_id); diff --git a/extensions/browser/api/hid/hid_device_manager.cc b/extensions/browser/api/hid/hid_device_manager.cc index b57e2d9..1c25025 100644 --- a/extensions/browser/api/hid/hid_device_manager.cc +++ b/extensions/browser/api/hid/hid_device_manager.cc @@ -8,6 +8,7 @@ #include <vector> #include "base/lazy_instance.h" +#include "device/core/device_client.h" #include "device/hid/hid_device_filter.h" #include "device/hid/hid_service.h" #include "extensions/browser/api/extensions_api_client.h" @@ -21,7 +22,8 @@ using device::HidUsageAndPage; namespace extensions { HidDeviceManager::HidDeviceManager(content::BrowserContext* context) - : next_resource_id_(0) {} + : next_resource_id_(0) { +} HidDeviceManager::~HidDeviceManager() {} @@ -38,7 +40,7 @@ scoped_ptr<base::ListValue> HidDeviceManager::GetApiDevices( const std::vector<HidDeviceFilter>& filters) { UpdateDevices(); - HidService* hid_service = ExtensionsAPIClient::Get()->GetHidService(); + HidService* hid_service = device::DeviceClient::Get()->GetHidService(); DCHECK(hid_service); base::ListValue* api_devices = new base::ListValue(); for (ResourceIdToDeviceIdMap::const_iterator device_iter = @@ -106,7 +108,7 @@ scoped_ptr<base::ListValue> HidDeviceManager::GetApiDevices( bool HidDeviceManager::GetDeviceInfo(int resource_id, device::HidDeviceInfo* device_info) { UpdateDevices(); - HidService* hid_service = ExtensionsAPIClient::Get()->GetHidService(); + HidService* hid_service = device::DeviceClient::Get()->GetHidService(); DCHECK(hid_service); ResourceIdToDeviceIdMap::const_iterator device_iter = @@ -142,7 +144,7 @@ bool HidDeviceManager::HasPermission(const Extension* extension, void HidDeviceManager::UpdateDevices() { thread_checker_.CalledOnValidThread(); - HidService* hid_service = ExtensionsAPIClient::Get()->GetHidService(); + HidService* hid_service = device::DeviceClient::Get()->GetHidService(); DCHECK(hid_service); std::vector<device::HidDeviceInfo> devices; diff --git a/extensions/browser/api/hid/hid_device_manager.h b/extensions/browser/api/hid/hid_device_manager.h index a258be4..f204269 100644 --- a/extensions/browser/api/hid/hid_device_manager.h +++ b/extensions/browser/api/hid/hid_device_manager.h @@ -10,6 +10,7 @@ #include <map> #include "base/basictypes.h" +#include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/threading/thread_checker.h" #include "device/hid/hid_device_info.h" diff --git a/extensions/shell/app_shell.gyp b/extensions/shell/app_shell.gyp index 0eeb392..a1e00fa 100644 --- a/extensions/shell/app_shell.gyp +++ b/extensions/shell/app_shell.gyp @@ -50,8 +50,6 @@ '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', diff --git a/extensions/shell/browser/api/shell_extensions_api_client.cc b/extensions/shell/browser/api/shell_extensions_api_client.cc deleted file mode 100644 index a8e7d11..0000000 --- a/extensions/shell/browser/api/shell_extensions_api_client.cc +++ /dev/null @@ -1,27 +0,0 @@ -// 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 diff --git a/extensions/shell/browser/api/shell_extensions_api_client.h b/extensions/shell/browser/api/shell_extensions_api_client.h deleted file mode 100644 index 41f548f..0000000 --- a/extensions/shell/browser/api/shell_extensions_api_client.h +++ /dev/null @@ -1,28 +0,0 @@ -// 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_ diff --git a/extensions/shell/browser/shell_device_client.cc b/extensions/shell/browser/shell_device_client.cc index b3c8168..55b277b 100644 --- a/extensions/shell/browser/shell_device_client.cc +++ b/extensions/shell/browser/shell_device_client.cc @@ -6,6 +6,7 @@ #include "base/logging.h" #include "content/public/browser/browser_thread.h" +#include "device/hid/hid_service.h" #include "device/usb/usb_service.h" namespace extensions { @@ -20,4 +21,10 @@ device::UsbService* ShellDeviceClient::GetUsbService() { content::BrowserThread::UI)); } +device::HidService* ShellDeviceClient::GetHidService() { + return device::HidService::GetInstance( + content::BrowserThread::GetMessageLoopProxyForThread( + content::BrowserThread::UI)); +} + } diff --git a/extensions/shell/browser/shell_device_client.h b/extensions/shell/browser/shell_device_client.h index 862d609..c1ede48 100644 --- a/extensions/shell/browser/shell_device_client.h +++ b/extensions/shell/browser/shell_device_client.h @@ -21,6 +21,7 @@ class ShellDeviceClient : device::DeviceClient { // device::DeviceClient implementation virtual device::UsbService* GetUsbService() OVERRIDE; + virtual device::HidService* GetHidService() OVERRIDE; private: DISALLOW_COPY_AND_ASSIGN(ShellDeviceClient); diff --git a/extensions/shell/browser/shell_extensions_browser_client.cc b/extensions/shell/browser/shell_extensions_browser_client.cc index 84e757c..659f88f 100644 --- a/extensions/shell/browser/shell_extensions_browser_client.cc +++ b/extensions/shell/browser/shell_extensions_browser_client.cc @@ -9,12 +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/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" @@ -34,7 +34,7 @@ void RegisterPrefs(user_prefs::PrefRegistrySyncable* registry) { ShellExtensionsBrowserClient::ShellExtensionsBrowserClient( BrowserContext* context) - : browser_context_(context), api_client_(new ShellExtensionsAPIClient) { + : browser_context_(context), api_client_(new ExtensionsAPIClient) { // Set up the preferences service. base::PrefServiceFactory factory; factory.set_user_prefs(new TestingPrefStore); |