Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Unified Diff: webkit/activex_shim/web_activex_container.cc

Issue 200031: Take out the activex control. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webkit/activex_shim/web_activex_container.h ('k') | webkit/activex_shim/web_activex_site.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/activex_shim/web_activex_container.cc
===================================================================
--- webkit/activex_shim/web_activex_container.cc (revision 25626)
+++ webkit/activex_shim/web_activex_container.cc (working copy)
@@ -1,351 +0,0 @@
-// Copyright (c) 2006-2008 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 "webkit/activex_shim/web_activex_container.h"
-
-#include "base/scoped_comptr_win.h"
-#include "webkit/activex_shim/activex_plugin.h"
-#include "webkit/activex_shim/activex_util.h"
-#include "webkit/activex_shim/npn_scripting.h"
-#include "webkit/activex_shim/npp_impl.h"
-#include "webkit/activex_shim/web_activex_site.h"
-
-namespace activex_shim {
-
-// WebActiveXContainer
-WebActiveXContainer::WebActiveXContainer()
- : plugin_(NULL),
- container_wnd_(NULL) {
-}
-
-WebActiveXContainer::~WebActiveXContainer() {
- // Don't do anything here. Do everything in FinalRelease.
-}
-
-void WebActiveXContainer::Init(ActiveXPlugin* plugin) {
- plugin_ = plugin;
-}
-
-void WebActiveXContainer::FinalRelease() {
- container_wnd_ = NULL;
- for (unsigned int i = 0; i < sites_.size(); i++) {
- delete sites_[i];
- }
- sites_.clear();
-}
-
-// IUnknown
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::QueryInterface(
- REFIID iid,
- void** object) {
- *object = NULL;
- if (iid == IID_IUnknown) {
- *object = static_cast<IUnknown*>(static_cast<IOleContainer*>(this));
- } else if (iid == IID_IDispatch) {
- *object = static_cast<IDispatch*>(static_cast<IHTMLDocument2Impl*>(this));
- } else if (iid == IID_IParseDisplayName) {
- *object = static_cast<IParseDisplayName*>(this);
- } else if (iid == IID_IOleContainer) {
- *object = static_cast<IOleContainer*>(this);
- } else if (iid == IID_IOleWindow) {
- *object = static_cast<IOleWindow*>(this);
- } else if (iid == IID_IOleInPlaceUIWindow) {
- *object = static_cast<IOleInPlaceUIWindow*>(this);
- } else if (iid == IID_IOleInPlaceFrame) {
- *object = static_cast<IOleInPlaceFrame*>(this);
- } else if (iid == IID_IHTMLDocument) {
- *object = static_cast<IHTMLDocument*>(this);
- } else if (iid == IID_IHTMLDocument2) {
- *object = static_cast<IHTMLDocument2*>(this);
- } else if (iid == IID_IWebBrowser) {
- *object = static_cast<IWebBrowser*>(this);
- } else if (iid == IID_IWebBrowserApp) {
- *object = static_cast<IWebBrowserApp*>(this);
- } else if (iid == IID_IWebBrowser2) {
- *object = static_cast<IWebBrowser2*>(this);
- } else if (iid == IID_IBindHost) {
- *object = static_cast<IBindHost*>(this);
- }
- TRACK_QUERY_INTERFACE(iid, *object != NULL);
- return (*object != NULL) ? S_OK : E_NOINTERFACE;
-}
-
-// IParseDisplayName
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::ParseDisplayName(
- IBindCtx* bc,
- LPOLESTR display_name,
- ULONG* cheaten,
- IMoniker** moniker) {
- TRACK_METHOD();
- // Do not support this.
- return E_NOTIMPL;
-}
-
-// IOleContainer
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::EnumObjects(DWORD flags,
- IEnumUnknown** ppenum) {
- TRACK_METHOD();
- // Do not support enumeration.
- return E_NOTIMPL;
-};
-
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::LockContainer(BOOL lock) {
- TRACK_METHOD();
- // Do not allow locking container.
- return E_NOTIMPL;
-};
-
-// IOleWindow
-
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::GetWindow(HWND* wnd) {
- TRACK_METHOD();
- *wnd = container_wnd();
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::ContextSensitiveHelp(
- BOOL enter_mode) {
- TRACK_METHOD();
- return E_NOTIMPL;
-}
-
-// IOleInPlaceUIWindow
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::GetBorder(LPRECT border) {
- TRACK_METHOD();
- // Does not allow tool bar etc.
- return INPLACE_E_NOTOOLSPACE;
-}
-
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::RequestBorderSpace(
- LPCBORDERWIDTHS border_widths) {
- TRACK_METHOD();
- return INPLACE_E_NOTOOLSPACE;
-}
-
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::SetBorderSpace(
- LPCBORDERWIDTHS border_widths) {
- TRACK_METHOD();
- return E_UNEXPECTED;
-}
-
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::SetActiveObject(
- IOleInPlaceActiveObject* active_object,
- LPCOLESTR obj_name) {
- TRACK_METHOD();
- // Ignore whatever.
- return S_OK;
-}
-
-// IOleInPlaceFrame
-
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::InsertMenus(
- HMENU hmenu_shared,
- LPOLEMENUGROUPWIDTHS menu_widths) {
- TRACK_METHOD();
- // No menu is allowed.
- return E_UNEXPECTED;
-}
-
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::SetMenu(
- HMENU hmenu_shared,
- HOLEMENU hole_menu,
- HWND active_object) {
- TRACK_METHOD();
- return E_UNEXPECTED;
-}
-
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::RemoveMenus(
- HMENU hmenu_shared) {
- TRACK_METHOD();
- return E_UNEXPECTED;
-}
-
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::SetStatusText(
- LPCOLESTR status_text) {
- TRACK_METHOD();
- return E_UNEXPECTED;
-}
-
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::EnableModeless(BOOL enable) {
- TRACK_METHOD();
- return E_UNEXPECTED;
-}
-
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::TranslateAccelerator(
- LPMSG msg,
- WORD id) {
- TRACK_METHOD();
- // TODO(ruijiang): Link it with browser message processing.
- // Returning S_FALSE means: The keystroke was not used.
- return S_FALSE;
-}
-
-// IHTMLDocument2
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::get_URL(BSTR* p) {
- TRACK_METHOD();
- std::wstring url = plugin_->GetCurrentURL();
- *p = SysAllocString(url.c_str());
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::get_cookie(BSTR* p) {
- TRACK_METHOD();
- *p = SysAllocString(plugin_->GetWindow().
- GetObjectProperty("document").GetStringProperty("cookie").c_str());
- return S_OK;
-}
-
-// IWebBrowser
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::Navigate(
- BSTR url,
- VARIANT* flags,
- VARIANT* target_frame_name,
- VARIANT* post_data,
- VARIANT* headers) {
- TRACK_METHOD();
- // TODO(ruijiang): See if we need to handle the optional params.
- plugin_->GetWindow().Invoke("open", "%s%s", url, L"_blank");
- return S_OK;
-}
-
-// IWebBrowserApp
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::get_LocationURL(
- BSTR* location_url) {
- return get_URL(location_url);
-}
-
-// IBindHost
-
-// Flash uses CreateMoniker to get the url of the movie its "movie" parameter
-// points to. We must implement this otherwise Flash will not work.
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::CreateMoniker(
- LPOLESTR szName,
- IBindCtx* bc,
- IMoniker** mk,
- DWORD reserved) {
- TRACK_METHOD();
- std::wstring url = plugin_->ResolveURL(szName);
- HRESULT hr = CreateURLMoniker(NULL, url.c_str(), mk);
- return hr;
-}
-
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::MonikerBindToStorage(
- IMoniker* mk,
- IBindCtx* bc,
- IBindStatusCallback* bsc,
- REFIID riid,
- void** obj) {
- // QuickTime uses this function to get the movie data from the container.
- TRACK_METHOD();
- IBindCtx* new_bc = NULL;
- // Logic is a little tricky here. When bc is passed in, we should use that;
- // otherwise we need to create a new one and release it after done.
- IBindCtx* bc_to_use = bc;
- if (bc == NULL) {
- CreateBindCtx(0, &new_bc);
- if (!new_bc)
- return E_FAIL;
- bc_to_use = new_bc;
- }
- // We must register the callback otherwise control will not know when new
- // data arrive.
- if (bsc)
- RegisterBindStatusCallback(bc_to_use, bsc, NULL, 0);
- HRESULT hr = mk->BindToStorage(bc_to_use, NULL, riid, obj);
- if (new_bc)
- new_bc->Release();
- return hr;
-}
-
-HRESULT STDMETHODCALLTYPE WebActiveXContainer::MonikerBindToObject(
- IMoniker* mk,
- IBindCtx* bc,
- IBindStatusCallback* bsc,
- REFIID riid,
- void** obj) {
- TRACK_METHOD();
- return E_NOTIMPL;
-}
-
-HRESULT WebActiveXContainer::CreateControlWithSite(const wchar_t* clsid) {
- HRESULT hr;
- CLSID id;
- hr = CLSIDFromString(const_cast<LPOLESTR>(clsid), &id);
- if (FAILED(hr))
- return hr;
-
- IUnknown* control;
- hr = CoCreateInstance(id, NULL, CLSCTX_INPROC_SERVER, __uuidof(IUnknown),
- (LPVOID*)&control);
- if (FAILED(hr))
- return hr;
-
- // First try to get the IObjectSafety interface and get/set options.
- // If failed then see if the object has registered itself as safe.
- unsigned long safety_flag = GetAndSetObjectSafetyOptions(control);
- if (!(safety_flag & SAFE_FOR_INITIALIZING) ||
- !(safety_flag & SAFE_FOR_SCRIPTING)) {
- safety_flag = GetRegisteredObjectSafetyOptions(id);
- if (!(safety_flag & SAFE_FOR_INITIALIZING) ||
- !(safety_flag & SAFE_FOR_SCRIPTING))
- return E_FAIL;
- }
-
- // Create client site and pass it to the control.
- WebActiveXSite* site = new NoRefIUnknownImpl<WebActiveXSite>;
- // From now on, we should assume site will take care of the lifecycle
- // of control.
- site->Init(this, control);
- control = NULL;
-
- sites_.push_back(site);
- return S_OK;
-}
-
-bool WebActiveXContainer::OnWindowMessage(UINT msg, WPARAM wparam,
- LPARAM lparam, LRESULT* result) {
- HRESULT hr;
- for (unsigned int i = 0; i < sites_.size(); i++) {
- WebActiveXSite* site = sites_[i];
- if (!site->control_)
- continue;
-
- ScopedComPtr<IOleInPlaceObjectWindowless> windowless;
- windowless.QueryFrom(site->control_);
- if (windowless == NULL)
- continue;
-
- if (msg == WM_MOUSEMOVE || msg == WM_LBUTTONDOWN || msg == WM_LBUTTONUP) {
- POINT pt;
- pt.x = LOWORD(lparam);
- pt.y = HIWORD(lparam);
- if (PtInRect(&site->rect_, pt)) {
- hr = windowless->OnWindowMessage(msg, wparam, lparam, result);
- if (hr == S_OK)
- return true;
- }
- }
- }
-
- // We did not consume the message. The caller can now process it.
- return false;
-}
-
-IUnknown* WebActiveXContainer::GetFirstControl() {
- if (sites_.size()) {
- return sites_[0]->control_;
- } else {
- return NULL;
- }
-}
-
-WebActiveXSite* WebActiveXContainer::GetFirstSite() {
- if (sites_.size()) {
- return sites_[0];
- } else {
- return NULL;
- }
-}
-
-} // namespace activex_shim
« no previous file with comments | « webkit/activex_shim/web_activex_container.h ('k') | webkit/activex_shim/web_activex_site.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698