summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_service.cc
diff options
context:
space:
mode:
authormiket@chromium.org <miket@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-30 02:31:14 +0000
committermiket@chromium.org <miket@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-30 02:31:14 +0000
commit2404a282786943958a5fce4cd111dfa538ae0a33 (patch)
tree76766187f6f5c6d26dde3dd46da3ec36b30f6a6e /chrome/browser/extensions/extension_service.cc
parentfcd3a7a671ecf2d5f46ea34787d27507a914d2f5 (diff)
downloadchromium_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.cc24
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();
}