diff options
author | miket@chromium.org <miket@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-30 02:31:14 +0000 |
---|---|---|
committer | miket@chromium.org <miket@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-30 02:31:14 +0000 |
commit | 2404a282786943958a5fce4cd111dfa538ae0a33 (patch) | |
tree | 76766187f6f5c6d26dde3dd46da3ec36b30f6a6e /chrome/browser/extensions/extension_service.cc | |
parent | fcd3a7a671ecf2d5f46ea34787d27507a914d2f5 (diff) | |
download | chromium_src-2404a282786943958a5fce4cd111dfa538ae0a33.zip chromium_src-2404a282786943958a5fce4cd111dfa538ae0a33.tar.gz chromium_src-2404a282786943958a5fce4cd111dfa538ae0a33.tar.bz2 |
Implement serial API for Windows.
- Got it working using PlatformFile.
- Noticed threading-constraint violations; refactored APIResourceController to allow for its resources to exist on different threads, depending on the resource type.
- Wondered why I wasn't using PlatformFile for the POSIX version, which would have caused me to build the POSIX version on the file thread to being with.
- Fixed that.
- Once things were working, observed that serial was not yet using ArrayBuffer. Fixed that.
- Simplified ExtensionService's relationship with APIResourceController.
- Hardcode all platforms to set bitrate of 57600.
BUG=129391,129483
TEST=Widened scope of existing tests, manually tested with Arduino
Review URL: https://chromiumcodereview.appspot.com/10392181
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@139463 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_service.cc')
-rw-r--r-- | chrome/browser/extensions/extension_service.cc | 24 |
1 files changed, 7 insertions, 17 deletions
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc index 2b5391b..8747212 100644 --- a/chrome/browser/extensions/extension_service.cc +++ b/chrome/browser/extensions/extension_service.cc @@ -438,15 +438,6 @@ ExtensionService::~ExtensionService() { ExternalExtensionProviderInterface* provider = i->get(); provider->ServiceShutdown(); } - - if (api_resource_controller_) { - // If this check failed, then a unit test was using an APIResource but - // didn't provide the IO thread message loop needed for those resources to - // do their job (including destroying themselves at shutdown). - DCHECK(BrowserThread::IsMessageLoopValid(BrowserThread::IO)); - BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE, - api_resource_controller_); - } } void ExtensionService::InitEventRoutersAfterImport() { @@ -2551,16 +2542,15 @@ ExtensionService::NaClModuleInfoList::iterator extensions::APIResourceController* ExtensionService::api_resource_controller() { - // TODO(miket): Find a better place for this thing to live. It needs to be - // scoped such that it can be created and destroyed on the IO thread. - // - // To coexist with certain unit tests that don't have an IO thread message + // TODO(miket): Find a better place for this thing to live. Like every other + // piece of baggage on ExtensionService, it's scoped along with a Profile. + + // To coexist with certain unit tests that don't have a work-thread message // loop available at ExtensionService shutdown, we lazy-initialize this // object so that those cases neither create nor destroy an // APIResourceController. - CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - if (!api_resource_controller_) { - api_resource_controller_ = new extensions::APIResourceController(); + if (!api_resource_controller_.get()) { + api_resource_controller_.reset(new extensions::APIResourceController()); } - return api_resource_controller_; + return api_resource_controller_.get(); } |