summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-10 18:09:12 +0000
committerjhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-10 18:09:12 +0000
commite28b0fbbcde1c08e4dfbff7d4bd8e1f292892b9c (patch)
treef95fb6c3e7fad45259ac16ca3c8fccc9fde5d312
parent8416157dd9a3e5bd61f605e1d420d8cf6a4ef9ca (diff)
downloadchromium_src-e28b0fbbcde1c08e4dfbff7d4bd8e1f292892b9c.zip
chromium_src-e28b0fbbcde1c08e4dfbff7d4bd8e1f292892b9c.tar.gz
chromium_src-e28b0fbbcde1c08e4dfbff7d4bd8e1f292892b9c.tar.bz2
Use Scoped[Bstr,ComPtr,Variant] instead of their ATL equivalents to reduce dependencies on ATL.
BUG=5027 TEST=none Review URL: http://codereview.chromium.org/200045 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25879 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--base/scoped_bstr_win.h6
-rw-r--r--base/scoped_variant_win.cc11
-rw-r--r--base/scoped_variant_win.h7
-rw-r--r--chrome/browser/autocomplete/autocomplete_accessibility.cc11
-rw-r--r--chrome/browser/browser_accessibility.cc12
-rw-r--r--chrome/browser/history/history_publisher_win.cc30
-rw-r--r--chrome/browser/importer/ie_importer.cc36
-rw-r--r--views/accessibility/view_accessibility.cc8
-rw-r--r--views/accessibility/view_accessibility_wrapper.cc2
-rw-r--r--views/accessibility/view_accessibility_wrapper.h3
-rw-r--r--views/controls/textfield/native_textfield_win.cc16
-rw-r--r--views/controls/textfield/native_textfield_win.h3
-rw-r--r--views/widget/widget_win.cc2
-rw-r--r--views/widget/widget_win.h3
14 files changed, 89 insertions, 61 deletions
diff --git a/base/scoped_bstr_win.h b/base/scoped_bstr_win.h
index 96979b5..04f27e1 100644
--- a/base/scoped_bstr_win.h
+++ b/base/scoped_bstr_win.h
@@ -5,13 +5,11 @@
#ifndef BASE_SCOPED_BSTR_WIN_H_
#define BASE_SCOPED_BSTR_WIN_H_
-#include "base/basictypes.h" // needed to pick up OS_WIN
-
-#include "base/logging.h"
-
#include <windows.h>
#include <oleauto.h>
+#include "base/logging.h"
+
// Manages a BSTR string pointer.
// The class interface is based on scoped_ptr.
class ScopedBstr {
diff --git a/base/scoped_variant_win.cc b/base/scoped_variant_win.cc
index 6593a477..dd4bceb 100644
--- a/base/scoped_variant_win.cc
+++ b/base/scoped_variant_win.cc
@@ -28,6 +28,12 @@ ScopedVariant::ScopedVariant(int value, VARTYPE vt) {
var_.lVal = value;
}
+ScopedVariant::ScopedVariant(double value, VARTYPE vt) {
+ DCHECK(vt == VT_R8 || vt == VT_DATE);
+ var_.vt = vt;
+ var_.dblVal = value;
+}
+
ScopedVariant::ScopedVariant(IDispatch* dispatch) {
var_.vt = VT_EMPTY;
Set(dispatch);
@@ -38,6 +44,11 @@ ScopedVariant::ScopedVariant(IUnknown* unknown) {
Set(unknown);
}
+ScopedVariant::ScopedVariant(SAFEARRAY* safearray) {
+ var_.vt = VT_EMPTY;
+ Set(safearray);
+}
+
ScopedVariant::ScopedVariant(const VARIANT& var) {
var_.vt = VT_EMPTY;
Set(var);
diff --git a/base/scoped_variant_win.h b/base/scoped_variant_win.h
index 909e4da..4436ca9 100644
--- a/base/scoped_variant_win.h
+++ b/base/scoped_variant_win.h
@@ -40,12 +40,19 @@ class ScopedVariant {
// VARIANT.lVal (32 bit sized field).
explicit ScopedVariant(int value, VARTYPE vt = VT_I4);
+ // Creates a new double-precision type variant. |vt| must be either VT_R8
+ // or VT_DATE.
+ explicit ScopedVariant(double value, VARTYPE vt = VT_R8);
+
// VT_DISPATCH
explicit ScopedVariant(IDispatch* dispatch);
// VT_UNKNOWN
explicit ScopedVariant(IUnknown* unknown);
+ // SAFEARRAY
+ explicit ScopedVariant(SAFEARRAY* safearray);
+
// Copies the variant.
explicit ScopedVariant(const VARIANT& var);
diff --git a/chrome/browser/autocomplete/autocomplete_accessibility.cc b/chrome/browser/autocomplete/autocomplete_accessibility.cc
index 5a9c3c6..1344e4f 100644
--- a/chrome/browser/autocomplete/autocomplete_accessibility.cc
+++ b/chrome/browser/autocomplete/autocomplete_accessibility.cc
@@ -99,7 +99,7 @@ STDMETHODIMP AutocompleteAccessibility::get_accName(VARIANT var_id,
if (!temp_name.empty()) {
// Return name retrieved.
- *name = CComBSTR(temp_name.c_str()).Detach();
+ *name = SysAllocString(temp_name.c_str());
} else {
// If no name is found, return S_FALSE.
return S_FALSE;
@@ -127,20 +127,19 @@ STDMETHODIMP AutocompleteAccessibility::get_accValue(VARIANT var_id,
std::wstring temp_value;
if (var_id.lVal != CHILDID_SELF)
- return E_INVALIDARG;
+ return E_INVALIDARG;
// Edit box has no children, only handle self.
temp_value = edit_box_->GetText();
if (temp_value.empty())
- return S_FALSE;
+ return S_FALSE;
- // Return value retrieved.
- *value = CComBSTR(temp_value.c_str()).Detach();
+ // Return value retrieved.
+ *value = SysAllocString(temp_value.c_str());
DCHECK(*value);
return S_OK;
-
}
STDMETHODIMP AutocompleteAccessibility::get_accState(VARIANT var_id,
diff --git a/chrome/browser/browser_accessibility.cc b/chrome/browser/browser_accessibility.cc
index c2a65c1b..2bae8f4 100644
--- a/chrome/browser/browser_accessibility.cc
+++ b/chrome/browser/browser_accessibility.cc
@@ -254,7 +254,7 @@ STDMETHODIMP BrowserAccessibility::get_accDefaultAction(VARIANT var_id,
return S_FALSE;
}
- *def_action = CComBSTR(response().output_string.c_str()).Detach();
+ *def_action = SysAllocString(response().output_string.c_str());
DCHECK(*def_action);
return S_OK;
@@ -280,7 +280,7 @@ STDMETHODIMP BrowserAccessibility::get_accDescription(VARIANT var_id,
return S_FALSE;
}
- *desc = CComBSTR(response().output_string.c_str()).Detach();
+ *desc = SysAllocString(response().output_string.c_str());
DCHECK(*desc);
return S_OK;
@@ -342,7 +342,7 @@ STDMETHODIMP BrowserAccessibility::get_accHelp(VARIANT var_id, BSTR* help) {
return S_FALSE;
}
- *help = CComBSTR(response().output_string.c_str()).Detach();
+ *help = SysAllocString(response().output_string.c_str());
DCHECK(*help);
return S_OK;
@@ -368,7 +368,7 @@ STDMETHODIMP BrowserAccessibility::get_accKeyboardShortcut(VARIANT var_id,
return S_FALSE;
}
- *acc_key = CComBSTR(response().output_string.c_str()).Detach();
+ *acc_key = SysAllocString(response().output_string.c_str());
DCHECK(*acc_key);
return S_OK;
@@ -393,7 +393,7 @@ STDMETHODIMP BrowserAccessibility::get_accName(VARIANT var_id, BSTR* name) {
return S_FALSE;
}
- *name = CComBSTR(response().output_string.c_str()).Detach();
+ *name = SysAllocString(response().output_string.c_str());
DCHECK(*name);
return S_OK;
@@ -504,7 +504,7 @@ STDMETHODIMP BrowserAccessibility::get_accValue(VARIANT var_id, BSTR* value) {
return S_FALSE;
}
- *value = CComBSTR(response().output_string.c_str()).Detach();
+ *value = SysAllocString(response().output_string.c_str());
DCHECK(*value);
return S_OK;
diff --git a/chrome/browser/history/history_publisher_win.cc b/chrome/browser/history/history_publisher_win.cc
index 54e9da4..cbde619 100644
--- a/chrome/browser/history/history_publisher_win.cc
+++ b/chrome/browser/history/history_publisher_win.cc
@@ -10,7 +10,10 @@
#include <wtypes.h>
#include "base/registry.h"
+#include "base/scoped_bstr_win.h"
#include "base/scoped_comptr_win.h"
+#include "base/scoped_variant_win.h"
+#include "base/string_util.h"
#include "base/time.h"
#include "googleurl/src/gurl.h"
@@ -107,30 +110,29 @@ void HistoryPublisher::PublishDataToIndexers(const PageData& page_data)
CComSafeArray<unsigned char> thumbnail_arr;
if (page_data.thumbnail) {
- for(size_t i = 0; i < page_data.thumbnail->size(); ++i)
+ for (size_t i = 0; i < page_data.thumbnail->size(); ++i)
thumbnail_arr.Add((*page_data.thumbnail)[i]);
}
// Send data to registered indexers.
- for(size_t i = 0; i < indexers_.size(); ++i) {
- indexers_[i]->SendPageData(
- CComVariant(var_time, VT_DATE),
- CComBSTR(page_data.url.spec().c_str()),
- CComBSTR(page_data.html),
- CComBSTR(page_data.title),
- CComBSTR(page_data.thumbnail_format),
- CComVariant(thumbnail_arr.m_psa));
+ ScopedVariant time(var_time, VT_DATE);
+ ScopedBstr url(ASCIIToWide(page_data.url.spec()).c_str());
+ ScopedBstr html(page_data.html);
+ ScopedBstr title(page_data.title);
+ ScopedBstr format(ASCIIToWide(page_data.thumbnail_format).c_str());
+ ScopedVariant psa(thumbnail_arr.m_psa);
+ for (size_t i = 0; i < indexers_.size(); ++i) {
+ indexers_[i]->SendPageData(time, url, html, title, format, psa);
}
}
void HistoryPublisher::DeleteUserHistoryBetween(const base::Time& begin_time,
const base::Time& end_time)
const {
- double var_begin_time = TimeToUTCVariantTime(begin_time);
- double var_end_time = TimeToUTCVariantTime(end_time);
- for(size_t i = 0; i < indexers_.size(); ++i) {
- indexers_[i]->DeleteUserHistoryBetween(CComVariant(var_begin_time, VT_DATE),
- CComVariant(var_end_time, VT_DATE));
+ ScopedVariant var_begin_time(TimeToUTCVariantTime(begin_time), VT_DATE);
+ ScopedVariant var_end_time(TimeToUTCVariantTime(end_time), VT_DATE);
+ for (size_t i = 0; i < indexers_.size(); ++i) {
+ indexers_[i]->DeleteUserHistoryBetween(var_begin_time, var_end_time);
}
}
diff --git a/chrome/browser/importer/ie_importer.cc b/chrome/browser/importer/ie_importer.cc
index ac345a7..2d979ad 100644
--- a/chrome/browser/importer/ie_importer.cc
+++ b/chrome/browser/importer/ie_importer.cc
@@ -4,19 +4,23 @@
#include "chrome/browser/importer/ie_importer.h"
-#include <atlbase.h>
+#include <ole2.h>
#include <intshcut.h>
#include <pstore.h>
#include <shlobj.h>
#include <urlhist.h>
#include <algorithm>
+#include <map>
+#include <string>
+#include <vector>
#include "app/l10n_util.h"
#include "app/win_util.h"
#include "base/file_path.h"
#include "base/file_util.h"
#include "base/registry.h"
+#include "base/scoped_comptr_win.h"
#include "base/string_util.h"
#include "base/time.h"
#include "base/win_util.h"
@@ -69,7 +73,7 @@ void IEImporter::StartImport(ProfileInfo profile_info,
NotifyStarted();
- // Some IE settings (such as Protected Storage) is obtained via COM APIs.
+ // Some IE settings (such as Protected Storage) are obtained via COM APIs.
win_util::ScopedCOMInitializer com_initializer;
if ((items & HOME_PAGE) && !cancelled())
@@ -142,8 +146,8 @@ void IEImporter::ImportPasswordsIE6() {
return;
}
- CComPtr<IPStore> pstore;
- HRESULT result = PStoreCreateInstance(&pstore, 0, 0, 0);
+ ScopedComPtr<IPStore, &IID_IPStore> pstore;
+ HRESULT result = PStoreCreateInstance(pstore.Receive(), 0, 0, 0);
if (result != S_OK) {
FreeLibrary(pstorec_dll);
return;
@@ -152,9 +156,9 @@ void IEImporter::ImportPasswordsIE6() {
std::vector<AutoCompleteInfo> ac_list;
// Enumerates AutoComplete items in the protected database.
- CComPtr<IEnumPStoreItems> item;
+ ScopedComPtr<IEnumPStoreItems, &IID_IEnumPStoreItems> item;
result = pstore->EnumItems(0, &AutocompleteGUID,
- &AutocompleteGUID, 0, &item);
+ &AutocompleteGUID, 0, item.Receive());
if (result != PST_E_OK) {
pstore.Release();
FreeLibrary(pstorec_dll);
@@ -282,14 +286,14 @@ void IEImporter::ImportHistory() {
chrome::kFileScheme};
int total_schemes = arraysize(kSchemes);
- CComPtr<IUrlHistoryStg2> url_history_stg2;
+ ScopedComPtr<IUrlHistoryStg2> url_history_stg2;
HRESULT result;
- result = url_history_stg2.CoCreateInstance(CLSID_CUrlHistory, NULL,
- CLSCTX_INPROC_SERVER);
+ result = url_history_stg2.CreateInstance(CLSID_CUrlHistory, NULL,
+ CLSCTX_INPROC_SERVER);
if (FAILED(result))
return;
- CComPtr<IEnumSTATURL> enum_url;
- if (SUCCEEDED(result = url_history_stg2->EnumUrls(&enum_url))) {
+ ScopedComPtr<IEnumSTATURL> enum_url;
+ if (SUCCEEDED(result = url_history_stg2->EnumUrls(enum_url.Receive()))) {
std::vector<history::URLRow> rows;
STATURL stat_url;
ULONG fetched;
@@ -541,14 +545,14 @@ void IEImporter::ParseFavoritesFolder(const FavoritesInfo& info,
std::wstring IEImporter::ResolveInternetShortcut(const std::wstring& file) {
win_util::CoMemReleaser<wchar_t> url;
- CComPtr<IUniformResourceLocator> url_locator;
- HRESULT result = url_locator.CoCreateInstance(CLSID_InternetShortcut, NULL,
- CLSCTX_INPROC_SERVER);
+ ScopedComPtr<IUniformResourceLocator> url_locator;
+ HRESULT result = url_locator.CreateInstance(CLSID_InternetShortcut, NULL,
+ CLSCTX_INPROC_SERVER);
if (FAILED(result))
return std::wstring();
- CComPtr<IPersistFile> persist_file;
- result = url_locator.QueryInterface(&persist_file);
+ ScopedComPtr<IPersistFile> persist_file;
+ result = persist_file.QueryFrom(url_locator);
if (FAILED(result))
return std::wstring();
diff --git a/views/accessibility/view_accessibility.cc b/views/accessibility/view_accessibility.cc
index e375e10..03d03bb 100644
--- a/views/accessibility/view_accessibility.cc
+++ b/views/accessibility/view_accessibility.cc
@@ -326,7 +326,7 @@ STDMETHODIMP ViewAccessibility::get_accDefaultAction(VARIANT var_id,
GetAccessibleDefaultAction(&temp_action);
}
if (!temp_action.empty()) {
- *def_action = CComBSTR(temp_action.c_str()).Detach();
+ *def_action = SysAllocString(temp_action.c_str());
} else {
return S_FALSE;
}
@@ -350,7 +350,7 @@ STDMETHODIMP ViewAccessibility::get_accDescription(VARIANT var_id, BSTR* desc) {
view_->GetChildViewAt(var_id.lVal - 1)->GetTooltipText(0, 0, &temp_desc);
}
if (!temp_desc.empty()) {
- *desc = CComBSTR(temp_desc.c_str()).Detach();
+ *desc = SysAllocString(temp_desc.c_str());
} else {
return S_FALSE;
}
@@ -413,7 +413,7 @@ STDMETHODIMP ViewAccessibility::get_accKeyboardShortcut(VARIANT var_id,
GetAccessibleKeyboardShortcut(&temp_key);
}
if (!temp_key.empty()) {
- *acc_key = CComBSTR(temp_key.c_str()).Detach();
+ *acc_key = SysAllocString(temp_key.c_str());
} else {
return S_FALSE;
}
@@ -440,7 +440,7 @@ STDMETHODIMP ViewAccessibility::get_accName(VARIANT var_id, BSTR* name) {
}
if (!temp_name.empty()) {
// Return name retrieved.
- *name = CComBSTR(temp_name.c_str()).Detach();
+ *name = SysAllocString(temp_name.c_str());
} else {
// If view has no name, return S_FALSE.
return S_FALSE;
diff --git a/views/accessibility/view_accessibility_wrapper.cc b/views/accessibility/view_accessibility_wrapper.cc
index ff336ae..7e7f5a6 100644
--- a/views/accessibility/view_accessibility_wrapper.cc
+++ b/views/accessibility/view_accessibility_wrapper.cc
@@ -29,7 +29,7 @@ STDMETHODIMP ViewAccessibilityWrapper::CreateDefaultInstance(REFIID iid) {
if (!SUCCEEDED(hr) || !instance)
return E_FAIL;
- CComPtr<IAccessible> accessibility_instance(instance);
+ ScopedComPtr<IAccessible> accessibility_instance(instance);
if (!SUCCEEDED(instance->Initialize(view_)))
return E_FAIL;
diff --git a/views/accessibility/view_accessibility_wrapper.h b/views/accessibility/view_accessibility_wrapper.h
index 4390662..8ea1743 100644
--- a/views/accessibility/view_accessibility_wrapper.h
+++ b/views/accessibility/view_accessibility_wrapper.h
@@ -9,6 +9,7 @@
#include <oleacc.h>
#include "base/basictypes.h"
+#include "base/scoped_comptr_win.h"
namespace views {
class View;
@@ -44,7 +45,7 @@ class ViewAccessibilityWrapper {
private:
// Instance of accessibility information and handling for a View.
- CComPtr<IAccessible> accessibility_info_;
+ ScopedComPtr<IAccessible> accessibility_info_;
// View needed to initialize IAccessible.
views::View* view_;
diff --git a/views/controls/textfield/native_textfield_win.cc b/views/controls/textfield/native_textfield_win.cc
index e152dbe..15d6bd9 100644
--- a/views/controls/textfield/native_textfield_win.cc
+++ b/views/controls/textfield/native_textfield_win.cc
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <algorithm>
+
#include "app/l10n_util.h"
#include "app/l10n_util_win.h"
#include "app/win_util.h"
@@ -94,9 +96,9 @@ NativeTextfieldWin::NativeTextfieldWin(Textfield* textfield)
}
// Set up the text_object_model_.
- CComPtr<IRichEditOle> ole_interface;
+ ScopedComPtr<IRichEditOle, &IID_IRichEditOle> ole_interface;
ole_interface.Attach(GetOleInterface());
- text_object_model_ = ole_interface;
+ text_object_model_.QueryFrom(ole_interface);
}
NativeTextfieldWin::~NativeTextfieldWin() {
@@ -305,7 +307,9 @@ void NativeTextfieldWin::OnCut() {
ReplaceSel(L"", true);
}
-LRESULT NativeTextfieldWin::OnImeChar(UINT message, WPARAM wparam, LPARAM lparam) {
+LRESULT NativeTextfieldWin::OnImeChar(UINT message,
+ WPARAM wparam,
+ LPARAM lparam) {
// http://crbug.com/7707: a rich-edit control may crash when it receives a
// WM_IME_CHAR message while it is processing a WM_IME_COMPOSITION message.
// Since view controls don't need WM_IME_CHAR messages, we prevent WM_IME_CHAR
@@ -512,7 +516,7 @@ LRESULT NativeTextfieldWin::OnMouseWheel(UINT message, WPARAM w_param,
// applicable.
if (views::RerouteMouseWheel(m_hWnd, w_param, l_param))
return 0;
- return DefWindowProc(message, w_param, l_param);;
+ return DefWindowProc(message, w_param, l_param);
}
void NativeTextfieldWin::OnMouseMove(UINT keys, const CPoint& point) {
@@ -842,9 +846,9 @@ void NativeTextfieldWin::SetContainsMouse(bool contains_mouse) {
ITextDocument* NativeTextfieldWin::GetTextObjectModel() const {
if (!text_object_model_) {
- CComPtr<IRichEditOle> ole_interface;
+ ScopedComPtr<IRichEditOle, &IID_IRichEditOle> ole_interface;
ole_interface.Attach(GetOleInterface());
- text_object_model_ = ole_interface;
+ text_object_model_.QueryFrom(ole_interface);
}
return text_object_model_;
}
diff --git a/views/controls/textfield/native_textfield_win.h b/views/controls/textfield/native_textfield_win.h
index cab5981..e1e51d7 100644
--- a/views/controls/textfield/native_textfield_win.h
+++ b/views/controls/textfield/native_textfield_win.h
@@ -13,6 +13,7 @@
#include <tom.h> // For ITextDocument, a COM interface to CRichEditCtrl
#include <vsstyle.h>
+#include "base/scoped_comptr_win.h"
#include "views/controls/menu/simple_menu_model.h"
#include "views/controls/textfield/native_textfield_wrapper.h"
@@ -195,7 +196,7 @@ class NativeTextfieldWin
gfx::Insets content_insets_;
// This interface is useful for accessing the CRichEditCtrl at a low level.
- mutable CComQIPtr<ITextDocument> text_object_model_;
+ mutable ScopedComPtr<ITextDocument> text_object_model_;
// The position and the length of the ongoing composition string.
// These values are used for removing a composition string from a search
diff --git a/views/widget/widget_win.cc b/views/widget/widget_win.cc
index 1d8df95..8fbf31e 100644
--- a/views/widget/widget_win.cc
+++ b/views/widget/widget_win.cc
@@ -470,7 +470,7 @@ LRESULT WidgetWin::OnGetObject(UINT uMsg, WPARAM w_param, LPARAM l_param) {
return static_cast<LRESULT>(0L);
}
- CComPtr<IAccessible> accessibility_instance(instance);
+ ScopedComPtr<IAccessible> accessibility_instance(instance);
if (!SUCCEEDED(instance->Initialize(root_view_.get()))) {
// Return with failure.
diff --git a/views/widget/widget_win.h b/views/widget/widget_win.h
index 8174511..88a2a33 100644
--- a/views/widget/widget_win.h
+++ b/views/widget/widget_win.h
@@ -11,6 +11,7 @@
#include <atlmisc.h>
#include "base/message_loop.h"
+#include "base/scoped_comptr_win.h"
#include "base/system_monitor.h"
#include "base/window_impl.h"
#include "views/focus/focus_manager.h"
@@ -586,7 +587,7 @@ class WidgetWin : public base::WindowImpl,
int last_mouse_move_y_;
// Instance of accessibility information and handling for MSAA root
- CComPtr<IAccessible> accessibility_root_;
+ ScopedComPtr<IAccessible> accessibility_root_;
scoped_ptr<DefaultThemeProvider> default_theme_provider_;
};