Index: chrome_frame/com_message_event.cc |
diff --git a/chrome_frame/com_message_event.cc b/chrome_frame/com_message_event.cc |
deleted file mode 100644 |
index d122f8c9317808b4116ef0a99e0e90764bcbaeb5..0000000000000000000000000000000000000000 |
--- a/chrome_frame/com_message_event.cc |
+++ /dev/null |
@@ -1,161 +0,0 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome_frame/com_message_event.h" |
- |
-#include "base/logging.h" |
-#include "base/strings/string_util.h" |
-#include "base/strings/stringprintf.h" |
-#include "base/strings/utf_string_conversions.h" |
- |
-ComMessageEvent::ComMessageEvent() { |
-} |
- |
-ComMessageEvent::~ComMessageEvent() { |
-} |
- |
-bool ComMessageEvent::Initialize(IOleContainer* container, |
- const std::string& message, |
- const std::string& origin, |
- const std::string& event_type) { |
- DLOG_IF(WARNING, !container) << __FUNCTION__ << " no container"; |
- message_ = message; |
- origin_ = origin; |
- type_ = event_type; |
- |
- // May remain NULL if container not IE |
- base::win::ScopedComPtr<IHTMLEventObj> basic_event; |
- base::win::ScopedComPtr<IHTMLDocument2> doc; |
- |
- // Fetching doc may fail in non-IE containers |
- // and container might be NULL in some applications. |
- if (container) |
- container->QueryInterface(doc.Receive()); |
- if (doc) { |
- base::win::ScopedComPtr<IHTMLDocument4> doc4; |
- doc4.QueryFrom(doc); |
- DCHECK(doc4); // supported by IE5.5 and higher |
- if (doc4) { |
- // IHTMLEventObj5 is only supported in IE8 and later, so we provide our |
- // own (minimalistic) implementation of it. |
- doc4->createEventObject(NULL, basic_event.Receive()); |
- DCHECK(basic_event); |
- } |
- } |
- |
- basic_event_ = basic_event; |
- return true; |
-} |
- |
-STDMETHODIMP ComMessageEvent::GetTypeInfoCount(UINT* info) { |
- // Don't DCHECK as python scripts might still call this function |
- // inadvertently. |
- DLOG(WARNING) << "Not implemented: " << __FUNCTION__; |
- return E_NOTIMPL; |
-} |
- |
-STDMETHODIMP ComMessageEvent::GetTypeInfo(UINT which_info, LCID lcid, |
- ITypeInfo** type_info) { |
- DLOG(WARNING) << "Not implemented: " << __FUNCTION__; |
- return E_NOTIMPL; |
-} |
- |
-STDMETHODIMP ComMessageEvent::GetIDsOfNames(REFIID iid, LPOLESTR* names, |
- UINT count_names, LCID lcid, |
- DISPID* dispids) { |
- HRESULT hr = S_OK; |
- |
- // Note that since we're using LowerCaseEqualsASCII for string comparison, |
- // the second argument _must_ be all lower case. I.e. we cannot compare |
- // against L"messagePort" since it has a capital 'P'. |
- for (UINT i = 0; SUCCEEDED(hr) && i < count_names; ++i) { |
- const wchar_t* name_begin = names[i]; |
- const wchar_t* name_end = name_begin + wcslen(name_begin); |
- if (LowerCaseEqualsASCII(name_begin, name_end, "data")) { |
- dispids[i] = DISPID_MESSAGE_EVENT_DATA; |
- } else if (LowerCaseEqualsASCII(name_begin, name_end, "origin")) { |
- dispids[i] = DISPID_MESSAGE_EVENT_ORIGIN; |
- } else if (LowerCaseEqualsASCII(name_begin, name_end, "lasteventid")) { |
- dispids[i] = DISPID_MESSAGE_EVENT_LAST_EVENT_ID; |
- } else if (LowerCaseEqualsASCII(name_begin, name_end, "source")) { |
- dispids[i] = DISPID_MESSAGE_EVENT_SOURCE; |
- } else if (LowerCaseEqualsASCII(name_begin, name_end, "messageport")) { |
- dispids[i] = DISPID_MESSAGE_EVENT_MESSAGE_PORT; |
- } else if (LowerCaseEqualsASCII(name_begin, name_end, "type")) { |
- dispids[i] = DISPID_MESSAGE_EVENT_TYPE; |
- } else { |
- if (basic_event_) { |
- hr = basic_event_->GetIDsOfNames(IID_IDispatch, &names[i], 1, lcid, |
- &dispids[i]); |
- } else { |
- hr = DISP_E_MEMBERNOTFOUND; |
- } |
- |
- if (FAILED(hr)) { |
- DLOG(WARNING) << "member not found: " << names[i] |
- << base::StringPrintf(L"0x%08X", hr); |
- } |
- } |
- } |
- return hr; |
-} |
- |
-STDMETHODIMP ComMessageEvent::Invoke(DISPID dispid, REFIID iid, LCID lcid, |
- WORD flags, DISPPARAMS* params, |
- VARIANT* result, EXCEPINFO* excepinfo, |
- UINT* arg_err) { |
- HRESULT hr = DISP_E_MEMBERNOTFOUND; |
- switch (dispid) { |
- case DISPID_MESSAGE_EVENT_DATA: |
- hr = GetStringProperty(flags, base::UTF8ToWide(message_).c_str(), result); |
- break; |
- |
- case DISPID_MESSAGE_EVENT_ORIGIN: |
- hr = GetStringProperty(flags, base::UTF8ToWide(origin_).c_str(), result); |
- break; |
- |
- case DISPID_MESSAGE_EVENT_TYPE: |
- hr = GetStringProperty(flags, base::UTF8ToWide(type_).c_str(), result); |
- break; |
- |
- case DISPID_MESSAGE_EVENT_LAST_EVENT_ID: |
- hr = GetStringProperty(flags, L"", result); |
- break; |
- |
- case DISPID_MESSAGE_EVENT_SOURCE: |
- case DISPID_MESSAGE_EVENT_MESSAGE_PORT: |
- if (flags & DISPATCH_PROPERTYGET) { |
- result->vt = VT_NULL; |
- hr = S_OK; |
- } else { |
- hr = DISP_E_TYPEMISMATCH; |
- } |
- break; |
- |
- default: |
- if (basic_event_) { |
- hr = basic_event_->Invoke(dispid, iid, lcid, flags, params, result, |
- excepinfo, arg_err); |
- } |
- break; |
- } |
- |
- return hr; |
-} |
- |
-HRESULT ComMessageEvent::GetStringProperty(WORD flags, const wchar_t* value, |
- VARIANT* result) { |
- if (!result) |
- return E_INVALIDARG; |
- |
- HRESULT hr; |
- if (flags & DISPATCH_PROPERTYGET) { |
- result->vt = VT_BSTR; |
- result->bstrVal = ::SysAllocString(value); |
- hr = S_OK; |
- } else { |
- hr = DISP_E_TYPEMISMATCH; |
- } |
- return hr; |
-} |