diff options
author | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-03 17:14:48 +0000 |
---|---|---|
committer | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-03 17:14:48 +0000 |
commit | 451fd90d924b6fd4e6f208952b525cab2029cd6d (patch) | |
tree | 6cf9bec9c237224f6d70de9ea5c1cee7d31cd63f /chrome_frame | |
parent | 748d7a09fe3c109b5a829ebabdc97edd347f42e6 (diff) | |
download | chromium_src-451fd90d924b6fd4e6f208952b525cab2029cd6d.zip chromium_src-451fd90d924b6fd4e6f208952b525cab2029cd6d.tar.gz chromium_src-451fd90d924b6fd4e6f208952b525cab2029cd6d.tar.bz2 |
Use ScopedCOMInitializer in more places. While this doesn't always simplify code, it does mean we do consistent logging and error-checking at all these sites.
BUG=none
TEST=none
Review URL: https://codereview.chromium.org/11050009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@159908 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome_frame')
-rw-r--r-- | chrome_frame/test/reliability/reliability_test_suite.h | 18 | ||||
-rw-r--r-- | chrome_frame/update_launcher.cc | 14 | ||||
-rw-r--r-- | chrome_frame/urlmon_url_request.cc | 4 | ||||
-rw-r--r-- | chrome_frame/urlmon_url_request.h | 11 | ||||
-rw-r--r-- | chrome_frame/utils.h | 21 |
5 files changed, 43 insertions, 25 deletions
diff --git a/chrome_frame/test/reliability/reliability_test_suite.h b/chrome_frame/test/reliability/reliability_test_suite.h index e245ba5..af58003 100644 --- a/chrome_frame/test/reliability/reliability_test_suite.h +++ b/chrome_frame/test/reliability/reliability_test_suite.h @@ -5,8 +5,7 @@ #ifndef CHROME_FRAME_TEST_RELIABILITY_RELIABILITY_TEST_SUITE_H_ #define CHROME_FRAME_TEST_RELIABILITY_RELIABILITY_TEST_SUITE_H_ -#include <objbase.h> - +#include "base/win/scoped_com_initializer.h" #include "chrome_frame/test/reliability/page_load_test.h" #include "chrome/test/ui/ui_test_suite.h" @@ -15,17 +14,22 @@ class ReliabilityTestSuite : public UITestSuite { ReliabilityTestSuite(int argc, char** argv) : UITestSuite(argc, argv) { } - protected: - virtual void Initialize() { - CoInitializeEx(NULL, COINIT_MULTITHREADED); + private: + virtual void Initialize() OVERRIDE { + com_initializer_.reset(new base::win::ScopedCOMInitializer( + base::win::ScopedCOMInitializer::kMTA)); SetPageRange(*CommandLine::ForCurrentProcess()); UITestSuite::Initialize(); } - virtual void Shutdown() { - CoUninitialize(); + virtual void Shutdown() OVERRIDE { UITestSuite::Shutdown(); + com_initializer_.reset(); } + + scoped_ptr<base::win::ScopedCOMInitializer> com_initializer_; + + DISALLOW_COPY_AND_ASSIGN(ReliabilityTestSuite); }; #endif // CHROME_FRAME_TEST_RELIABILITY_RELIABILITY_TEST_SUITE_H_ diff --git a/chrome_frame/update_launcher.cc b/chrome_frame/update_launcher.cc index b2d23123..439626d 100644 --- a/chrome_frame/update_launcher.cc +++ b/chrome_frame/update_launcher.cc @@ -7,6 +7,7 @@ #include <windows.h> #include <Shellapi.h> +#include "base/win/scoped_com_initializer.h" #include "google_update/google_update_idl.h" namespace { @@ -54,15 +55,14 @@ std::wstring GetUpdateCommandFromArguments(const wchar_t* command_line) { DWORD LaunchUpdateCommand(const std::wstring& command) { DWORD exit_code = kLaunchFailureExitCode; - HRESULT hr = ::CoInitialize(NULL); - - if (SUCCEEDED(hr)) { + base::win::ScopedCOMInitializer com_initializer; + if (com_initializer.succeeded()) { IProcessLauncher* ipl = NULL; HANDLE process = NULL; - hr = ::CoCreateInstance(__uuidof(ProcessLauncherClass), NULL, - CLSCTX_ALL, __uuidof(IProcessLauncher), - reinterpret_cast<void**>(&ipl)); + HRESULT hr = ::CoCreateInstance(__uuidof(ProcessLauncherClass), NULL, + CLSCTX_ALL, __uuidof(IProcessLauncher), + reinterpret_cast<void**>(&ipl)); if (SUCCEEDED(hr)) { ULONG_PTR phandle = NULL; @@ -80,8 +80,6 @@ DWORD LaunchUpdateCommand(const std::wstring& command) { ::CloseHandle(process); if (ipl) ipl->Release(); - - ::CoUninitialize(); } return exit_code; diff --git a/chrome_frame/urlmon_url_request.cc b/chrome_frame/urlmon_url_request.cc index bf441b3..535debb 100644 --- a/chrome_frame/urlmon_url_request.cc +++ b/chrome_frame/urlmon_url_request.cc @@ -1455,9 +1455,9 @@ UrlmonUrlRequestManager::ResourceFetcherThread::~ResourceFetcherThread() { } void UrlmonUrlRequestManager::ResourceFetcherThread::Init() { - CoInitialize(NULL); + com_initializer_.reset(new base::win::ScopedCOMInitializer()); } void UrlmonUrlRequestManager::ResourceFetcherThread::CleanUp() { - CoUninitialize(); + com_initializer_.reset(); } diff --git a/chrome_frame/urlmon_url_request.h b/chrome_frame/urlmon_url_request.h index b74b881..94027ff 100644 --- a/chrome_frame/urlmon_url_request.h +++ b/chrome_frame/urlmon_url_request.h @@ -16,6 +16,12 @@ #include "chrome_frame/urlmon_moniker.h" #include "chrome_frame/utils.h" +namespace base { +namespace win { +class ScopedCOMInitializer; +} +} + class UrlmonUrlRequest; class UrlmonUrlRequestManager @@ -30,6 +36,11 @@ class UrlmonUrlRequestManager virtual void Init(); virtual void CleanUp(); + + private: + scoped_ptr<base::win::ScopedCOMInitializer> com_initializer_; + + DISALLOW_COPY_AND_ASSIGN(ResourceFetcherThread); }; // Contains the privacy information for all requests issued by this instance. diff --git a/chrome_frame/utils.h b/chrome_frame/utils.h index a741b65..389a8f5 100644 --- a/chrome_frame/utils.h +++ b/chrome_frame/utils.h @@ -17,6 +17,7 @@ #include "base/metrics/histogram.h" #include "base/string16.h" #include "base/threading/thread.h" +#include "base/win/scoped_com_initializer.h" #include "base/win/scoped_comptr.h" #include "googleurl/src/gurl.h" #include "ui/gfx/rect.h" @@ -399,22 +400,26 @@ STDMETHODIMP QueryInterfaceIfDelegateSupports(void* obj, REFIID iid, class STAThread : public base::Thread { public: explicit STAThread(const char *name) : Thread(name) {} - ~STAThread() { + virtual ~STAThread() { Stop(); } + bool Start() { return StartWithOptions(Options(MessageLoop::TYPE_UI, 0)); } - protected: - // Called just prior to starting the message loop - virtual void Init() { - ::CoInitialize(0); + + private: + virtual void Init() OVERRIDE { + com_initializer_.reset(new base::win::ScopedCOMInitializer()); } - // Called just after the message loop ends - virtual void CleanUp() { - ::CoUninitialize(); + virtual void CleanUp() OVERRIDE { + com_initializer_.reset(); } + + scoped_ptr<base::win::ScopedCOMInitializer> com_initializer_; + + DISALLOW_COPY_AND_ASSIGN(STAThread); }; std::wstring GuidToString(const GUID& guid); |