summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/history/history_publisher_win.cc38
-rw-r--r--chrome/browser/ui/views/accessibility/browser_views_accessibility_browsertest.cc129
-rw-r--r--chrome_frame/update_launcher.cc10
-rw-r--r--net/url_request/url_request_unittest.cc28
-rw-r--r--printing/backend/win_helper.cc46
-rw-r--r--ui/base/dialogs/base_shell_dialog_win.cc1
6 files changed, 116 insertions, 136 deletions
diff --git a/chrome/browser/history/history_publisher_win.cc b/chrome/browser/history/history_publisher_win.cc
index 51c72a6..ac04a87 100644
--- a/chrome/browser/history/history_publisher_win.cc
+++ b/chrome/browser/history/history_publisher_win.cc
@@ -20,36 +20,22 @@
namespace {
-// Instantiates a IChromeHistoryIndexer COM object. Takes a COM class id
-// in |name| and returns the object in |indexer|. Returns false if the
-// operation fails.
-bool CoCreateIndexerFromName(const wchar_t* name,
- IChromeHistoryIndexer** indexer) {
- CLSID clsid;
- HRESULT hr = CLSIDFromString(const_cast<wchar_t*>(name), &clsid);
- if (FAILED(hr))
- return false;
- hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC,
- __uuidof(IChromeHistoryIndexer),
- reinterpret_cast<void**>(indexer));
- if (FAILED(hr))
- return false;
- return true;
-}
-
// Instantiates the registered indexers from the registry |root| + |path| key
// and adds them to the |indexers| list.
-void AddRegisteredIndexers(HKEY root, const wchar_t* path,
+void AddRegisteredIndexers(
+ HKEY root,
+ const wchar_t* path,
std::vector< base::win::ScopedComPtr<IChromeHistoryIndexer> >* indexers) {
- IChromeHistoryIndexer* indexer;
- base::win::RegistryKeyIterator r_iter(root, path);
- while (r_iter.Valid()) {
- if (CoCreateIndexerFromName(r_iter.Name(), &indexer)) {
- indexers->push_back(
- base::win::ScopedComPtr<IChromeHistoryIndexer>(indexer));
- indexer->Release();
+ for (base::win::RegistryKeyIterator r_iter(root, path); r_iter.Valid();
+ ++r_iter) {
+ CLSID clsid;
+ if (FAILED(CLSIDFromString(const_cast<wchar_t*>(r_iter.Name()), &clsid)))
+ continue;
+ base::win::ScopedComPtr<IChromeHistoryIndexer> indexer;
+ if (SUCCEEDED(indexer.CreateInstance(clsid, NULL, CLSCTX_INPROC))) {
+ indexers->push_back(indexer);
+ indexer.Release();
}
- ++r_iter;
}
}
diff --git a/chrome/browser/ui/views/accessibility/browser_views_accessibility_browsertest.cc b/chrome/browser/ui/views/accessibility/browser_views_accessibility_browsertest.cc
index b785f00..b152c81 100644
--- a/chrome/browser/ui/views/accessibility/browser_views_accessibility_browsertest.cc
+++ b/chrome/browser/ui/views/accessibility/browser_views_accessibility_browsertest.cc
@@ -31,82 +31,87 @@ VARIANT id_self = {VT_I4, CHILDID_SELF};
class BrowserViewsAccessibilityTest : public InProcessBrowserTest {
public:
- BrowserViewsAccessibilityTest() {
- ui::win::CreateATLModuleIfNeeded();
- ::CoInitialize(NULL);
- }
+ BrowserViewsAccessibilityTest();
+ virtual ~BrowserViewsAccessibilityTest();
- ~BrowserViewsAccessibilityTest() {
- ::CoUninitialize();
- }
+ // Retrieves an instance of BrowserWindowTesting.
+ BrowserWindowTesting* GetBrowserWindowTesting();
- // Retrieves an instance of BrowserWindowTesting
- BrowserWindowTesting* GetBrowserWindowTesting() {
- BrowserWindow* browser_window = browser()->window();
+ // Retrieve an instance of BrowserView.
+ BrowserView* GetBrowserView();
- if (!browser_window)
- return NULL;
-
- return browser_window->GetBrowserWindowTesting();
- }
+ // Retrieves and initializes an instance of ToolbarView.
+ ToolbarView* GetToolbarView();
- // Retrieve an instance of BrowserView
- BrowserView* GetBrowserView() {
- return BrowserView::GetBrowserViewForBrowser(browser());
- }
+ // Retrieves and initializes an instance of BookmarkBarView.
+ BookmarkBarView* GetBookmarkBarView();
- // Retrieves and initializes an instance of ToolbarView.
- ToolbarView* GetToolbarView() {
- BrowserWindowTesting* browser_window_testing = GetBrowserWindowTesting();
+ // Retrieves and verifies the accessibility object for the given View.
+ void TestViewAccessibilityObject(views::View* view,
+ std::wstring name,
+ int32 role);
- if (!browser_window_testing)
- return NULL;
+ // Verifies MSAA Name and Role properties of the given IAccessible.
+ void TestAccessibilityInfo(IAccessible* acc_obj,
+ std::wstring name,
+ int32 role);
+};
- return browser_window_testing->GetToolbarView();
- }
+BrowserViewsAccessibilityTest::BrowserViewsAccessibilityTest() {
+ ui::win::CreateATLModuleIfNeeded();
+ ::CoInitialize(NULL);
+}
- // Retrieves and initializes an instance of BookmarkBarView.
- BookmarkBarView* GetBookmarkBarView() {
- BrowserWindowTesting* browser_window_testing = GetBrowserWindowTesting();
+BrowserViewsAccessibilityTest::~BrowserViewsAccessibilityTest() {
+ ::CoUninitialize();
+}
- if (!browser_window_testing)
- return NULL;
+BrowserWindowTesting* BrowserViewsAccessibilityTest::GetBrowserWindowTesting() {
+ BrowserWindow* browser_window = browser()->window();
+ return browser_window ? browser_window->GetBrowserWindowTesting() : NULL;
+}
- return browser_window_testing->GetBookmarkBarView();
- }
+BrowserView* BrowserViewsAccessibilityTest::GetBrowserView() {
+ return BrowserView::GetBrowserViewForBrowser(browser());
+}
- // Retrieves and verifies the accessibility object for the given View.
- void TestViewAccessibilityObject(views::View* view, std::wstring name,
- int32 role) {
- ASSERT_TRUE(NULL != view);
+ToolbarView* BrowserViewsAccessibilityTest::GetToolbarView() {
+ BrowserWindowTesting* browser_window_testing = GetBrowserWindowTesting();
+ return browser_window_testing ?
+ browser_window_testing->GetToolbarView() : NULL;
+}
- TestAccessibilityInfo(view->GetNativeViewAccessible(), name, role);
- }
+BookmarkBarView* BrowserViewsAccessibilityTest::GetBookmarkBarView() {
+ BrowserWindowTesting* browser_window_testing = GetBrowserWindowTesting();
+ return browser_window_testing ?
+ browser_window_testing->GetBookmarkBarView() : NULL;
+}
+void BrowserViewsAccessibilityTest::TestViewAccessibilityObject(
+ views::View* view,
+ std::wstring name,
+ int32 role) {
+ ASSERT_TRUE(view != NULL);
+ TestAccessibilityInfo(view->GetNativeViewAccessible(), name, role);
+}
- // Verifies MSAA Name and Role properties of the given IAccessible.
- void TestAccessibilityInfo(IAccessible* acc_obj, std::wstring name,
- int32 role) {
- // Verify MSAA Name property.
- BSTR acc_name;
-
- HRESULT hr = acc_obj->get_accName(id_self, &acc_name);
- ASSERT_EQ(S_OK, hr);
- EXPECT_STREQ(acc_name, name.c_str());
-
- // Verify MSAA Role property.
- VARIANT acc_role;
- ::VariantInit(&acc_role);
-
- hr = acc_obj->get_accRole(id_self, &acc_role);
- ASSERT_EQ(S_OK, hr);
- EXPECT_EQ(VT_I4, acc_role.vt);
- EXPECT_EQ(role, acc_role.lVal);
-
- ::VariantClear(&acc_role);
- ::SysFreeString(acc_name);
- }
-};
+void BrowserViewsAccessibilityTest::TestAccessibilityInfo(IAccessible* acc_obj,
+ std::wstring name,
+ int32 role) {
+ // Verify MSAA Name property.
+ BSTR acc_name;
+ ASSERT_EQ(S_OK, acc_obj->get_accName(id_self, &acc_name));
+ EXPECT_STREQ(name.c_str(), acc_name);
+ ::SysFreeString(acc_name);
+
+ // Verify MSAA Role property.
+ VARIANT acc_role;
+ ::VariantInit(&acc_role);
+ ASSERT_EQ(S_OK, acc_obj->get_accRole(id_self, &acc_role));
+ EXPECT_EQ(VT_I4, acc_role.vt);
+ EXPECT_EQ(role, acc_role.lVal);
+ ::VariantClear(&acc_role);
+}
// Retrieve accessibility object for main window and verify accessibility info.
IN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest,
diff --git a/chrome_frame/update_launcher.cc b/chrome_frame/update_launcher.cc
index 789e8db..b2d23123 100644
--- a/chrome_frame/update_launcher.cc
+++ b/chrome_frame/update_launcher.cc
@@ -21,13 +21,9 @@ const wchar_t kUpdateCommandFlag[] = L"--update-cmd";
// exit code, or kLaunchFailureExitCode if an error occurs in the waiting.
DWORD WaitForProcessExitCode(HANDLE handle) {
DWORD exit_code = 0;
-
- DWORD wait_result = ::WaitForSingleObject(handle, INFINITE);
-
- if (wait_result == WAIT_OBJECT_0 && ::GetExitCodeProcess(handle, &exit_code))
- return exit_code;
-
- return kLaunchFailureExitCode;
+ return ((::WaitForSingleObject(handle, INFINITE) == WAIT_OBJECT_0) &&
+ ::GetExitCodeProcess(handle, &exit_code)) ?
+ exit_code : kLaunchFailureExitCode;
}
} // namespace
diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc
index 2dbe023..d38c527 100644
--- a/net/url_request/url_request_unittest.cc
+++ b/net/url_request/url_request_unittest.cc
@@ -702,25 +702,19 @@ TEST_F(URLRequestTest, ResolveShortcutTest) {
std::wstring lnk_path = app_path.value() + L".lnk";
- HRESULT result;
- IShellLink* shell = NULL;
- IPersistFile* persist = NULL;
-
CoInitialize(NULL);
+
// Temporarily create a shortcut for test
- result = CoCreateInstance(CLSID_ShellLink, NULL,
- CLSCTX_INPROC_SERVER, IID_IShellLink,
- reinterpret_cast<LPVOID*>(&shell));
- ASSERT_TRUE(SUCCEEDED(result));
- result = shell->QueryInterface(IID_IPersistFile,
- reinterpret_cast<LPVOID*>(&persist));
- ASSERT_TRUE(SUCCEEDED(result));
- result = shell->SetPath(app_path.value().c_str());
- EXPECT_TRUE(SUCCEEDED(result));
- result = shell->SetDescription(L"ResolveShortcutTest");
- EXPECT_TRUE(SUCCEEDED(result));
- result = persist->Save(lnk_path.c_str(), TRUE);
- EXPECT_TRUE(SUCCEEDED(result));
+ IShellLink* shell = NULL;
+ ASSERT_TRUE(SUCCEEDED(CoCreateInstance(
+ CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink,
+ reinterpret_cast<LPVOID*>(&shell))));
+ IPersistFile* persist = NULL;
+ ASSERT_TRUE(SUCCEEDED(shell->QueryInterface(
+ IID_IPersistFile, reinterpret_cast<LPVOID*>(&persist))));
+ EXPECT_TRUE(SUCCEEDED(shell->SetPath(app_path.value().c_str())));
+ EXPECT_TRUE(SUCCEEDED(shell->SetDescription(L"ResolveShortcutTest")));
+ EXPECT_TRUE(SUCCEEDED(persist->Save(lnk_path.c_str(), TRUE)));
if (persist)
persist->Release();
if (shell)
diff --git a/printing/backend/win_helper.cc b/printing/backend/win_helper.cc
index 5980291..071ef54 100644
--- a/printing/backend/win_helper.cc
+++ b/printing/backend/win_helper.cc
@@ -239,29 +239,29 @@ HRESULT XPSModule::CloseProvider(HPTPROVIDER provider) {
}
ScopedXPSInitializer::ScopedXPSInitializer() : initialized_(false) {
- if (XPSModule::Init()) {
- // Calls to XPS APIs typically require the XPS provider to be opened with
- // PTOpenProvider. PTOpenProvider calls CoInitializeEx with
- // COINIT_MULTITHREADED. We have seen certain buggy HP printer driver DLLs
- // that call CoInitializeEx with COINIT_APARTMENTTHREADED in the context of
- // PTGetPrintCapabilities. This call fails but the printer driver calls
- // CoUninitialize anyway. This results in the apartment being torn down too
- // early and the msxml DLL being unloaded which in turn causes code in
- // unidrvui.dll to have a dangling pointer to an XML document which causes a
- // crash. To protect ourselves from such drivers we make sure we always have
- // an extra CoInitialize (calls to CoInitialize/CoUninitialize are
- // refcounted).
- HRESULT coinit_ret = CoInitializeEx(NULL, COINIT_MULTITHREADED);
- // If this succeeded we are done because the PTOpenProvider call will
- // provide the extra refcount on the apartment. If it failed because someone
- // already called CoInitializeEx with COINIT_APARTMENTTHREADED, we try
- // the other model to provide the additional refcount (since we don't know
- // which model buggy printer drivers will use).
- if (coinit_ret == RPC_E_CHANGED_MODE)
- coinit_ret = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
- DCHECK(SUCCEEDED(coinit_ret));
- initialized_ = true;
- }
+ if (!XPSModule::Init())
+ return;
+ // Calls to XPS APIs typically require the XPS provider to be opened with
+ // PTOpenProvider. PTOpenProvider calls CoInitializeEx with
+ // COINIT_MULTITHREADED. We have seen certain buggy HP printer driver DLLs
+ // that call CoInitializeEx with COINIT_APARTMENTTHREADED in the context of
+ // PTGetPrintCapabilities. This call fails but the printer driver calls
+ // CoUninitialize anyway. This results in the apartment being torn down too
+ // early and the msxml DLL being unloaded which in turn causes code in
+ // unidrvui.dll to have a dangling pointer to an XML document which causes a
+ // crash. To protect ourselves from such drivers we make sure we always have
+ // an extra CoInitialize (calls to CoInitialize/CoUninitialize are
+ // refcounted).
+ HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
+ // If this succeeded we are done because the PTOpenProvider call will provide
+ // the extra refcount on the apartment. If it failed because someone already
+ // called CoInitializeEx with COINIT_APARTMENTTHREADED, we try the other model
+ // to provide the additional refcount (since we don't know which model buggy
+ // printer drivers will use).
+ if (!SUCCEEDED(hr))
+ hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
+ DCHECK(SUCCEEDED(hr));
+ initialized_ = true;
}
ScopedXPSInitializer::~ScopedXPSInitializer() {
diff --git a/ui/base/dialogs/base_shell_dialog_win.cc b/ui/base/dialogs/base_shell_dialog_win.cc
index 077a8a1..8d6072d 100644
--- a/ui/base/dialogs/base_shell_dialog_win.cc
+++ b/ui/base/dialogs/base_shell_dialog_win.cc
@@ -19,7 +19,6 @@ class ShellDialogThread : public base::Thread {
protected:
void Init();
-
void CleanUp();
private: