Index: webkit/activex_shim/web_activex_site.h |
=================================================================== |
--- webkit/activex_shim/web_activex_site.h (revision 25626) |
+++ webkit/activex_shim/web_activex_site.h (working copy) |
@@ -1,225 +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. |
- |
-#ifndef WEBKIT_ACTIVEX_SHIM_WEB_ACTIVEX_SITE_H__ |
-#define WEBKIT_ACTIVEX_SHIM_WEB_ACTIVEX_SITE_H__ |
- |
-#include <objsafe.h> |
-#include <map> |
-#include <vector> |
- |
-#include "base/scoped_comptr_win.h" |
-#include "webkit/activex_shim/activex_util.h" |
- |
-namespace activex_shim { |
- |
-class WebActiveXContainer; |
-class ActiveXPlugin; |
- |
-// Control creation parameters |
-struct ControlParam { |
- ControlParam(const std::wstring& new_name, const std::wstring& new_value) { |
- name = new_name; |
- value = new_value; |
- } |
- ControlParam() { } |
- std::wstring name; |
- std::wstring value; |
-}; |
- |
-// ActiveX control site to receive requests etc from the ActiveX control, |
-// and interact the container to host a control. |
-// Implemented interfaces: |
-// IDispatch: |
-// Required for ambient properties. |
-// IOleClientSite: |
-// Required interface. |
-// IOleControlSite: |
-// Required interface. |
-// IOleInPlaceSiteWindowless: |
-// Required for windowless activation. |
-// IServiceProvider: |
-// Some controls use this interface to get interface to the IBindHost, |
-// IWebBrowserApp interfaces. e.g., Flash needs the IBindHost to create |
-// a moniker to the movie. Thus this is a required interface. |
-// IPropertyBag: |
-// If the control supports IPersistPropertyBag, we could use this interface |
-// to initialize the control with param values. |
-class WebActiveXSite : public MinimumIDispatchImpl, |
- public IOleClientSite, |
- public IOleControlSite, |
- public IOleInPlaceSiteWindowless, |
- public IServiceProvider, |
- public IPropertyBag, |
- public IPropertyBag2 { |
- public: |
- WebActiveXSite(); |
- // It's necessary to make it virtual because we do not directly create |
- // this object. Instead we usually create NoRefIUnknownImpl<WebActiveXSite> |
- virtual ~WebActiveXSite(); |
- |
- // Container calls this to init a site. The container should assume passing |
- // the ownership of IUnknown to site, and not try to release control there |
- // after. Site will release control in FinalRelease. |
- void Init(WebActiveXContainer* container, IUnknown* control); |
- // Deactive and release ActiveX control. Cleanup everything. |
- void FinalRelease(); |
- // Sets the extent of the control, params and inplace activates it. |
- HRESULT ActivateControl(int x, int y, int width, int height, |
- const std::vector<ControlParam>& params); |
- // A simplified version of calling control's DoVerb. |
- HRESULT DoVerb(long verb); |
- // Changes the position/size of the control. The container/plugin is |
- // responsible to call this everytime the control's position/size changed. |
- void SetRect(const RECT* rect); |
- |
- // IUnknown |
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, |
- void** object); |
- |
- // IOleClientSite |
- virtual HRESULT STDMETHODCALLTYPE SaveObject(); |
- virtual HRESULT STDMETHODCALLTYPE GetMoniker( |
- DWORD assign, |
- DWORD which_moniker, |
- IMoniker** moniker); |
- virtual HRESULT STDMETHODCALLTYPE GetContainer(IOleContainer** container); |
- virtual HRESULT STDMETHODCALLTYPE ShowObject(); |
- virtual HRESULT STDMETHODCALLTYPE OnShowWindow(BOOL show); |
- virtual HRESULT STDMETHODCALLTYPE RequestNewObjectLayout(); |
- |
- // IOleControlSite |
- virtual HRESULT STDMETHODCALLTYPE OnControlInfoChanged(); |
- virtual HRESULT STDMETHODCALLTYPE LockInPlaceActive(BOOL lock); |
- virtual HRESULT STDMETHODCALLTYPE GetExtendedControl(IDispatch** disp); |
- virtual HRESULT STDMETHODCALLTYPE TransformCoords(POINTL* ptl_himetric, |
- POINTF* ptf_container, |
- DWORD flags); |
- virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(MSG* msg, |
- DWORD modifiers); |
- virtual HRESULT STDMETHODCALLTYPE OnFocus(BOOL got_focus); |
- virtual HRESULT STDMETHODCALLTYPE ShowPropertyFrame(); |
- |
- // IOleWindow |
- virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND* wnd); |
- virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL enter_mode); |
- |
- // IOleInPlaceSite |
- virtual HRESULT STDMETHODCALLTYPE CanInPlaceActivate(); |
- virtual HRESULT STDMETHODCALLTYPE OnInPlaceActivate(); |
- virtual HRESULT STDMETHODCALLTYPE OnUIActivate(); |
- virtual HRESULT STDMETHODCALLTYPE GetWindowContext( |
- IOleInPlaceFrame** frame, |
- IOleInPlaceUIWindow** doc, |
- LPRECT pos, |
- LPRECT clip, |
- LPOLEINPLACEFRAMEINFO frame_info); |
- virtual HRESULT STDMETHODCALLTYPE Scroll(SIZE scroll_extant); |
- virtual HRESULT STDMETHODCALLTYPE OnUIDeactivate(BOOL undoable); |
- virtual HRESULT STDMETHODCALLTYPE OnInPlaceDeactivate(); |
- virtual HRESULT STDMETHODCALLTYPE DiscardUndoState(); |
- virtual HRESULT STDMETHODCALLTYPE DeactivateAndUndo(); |
- virtual HRESULT STDMETHODCALLTYPE OnPosRectChange(LPCRECT pos); |
- |
- // IOleInPlaceSiteEx |
- virtual HRESULT STDMETHODCALLTYPE OnInPlaceActivateEx( |
- BOOL* no_redraw, |
- DWORD flags); |
- virtual HRESULT STDMETHODCALLTYPE OnInPlaceDeactivateEx(BOOL no_redraw); |
- virtual HRESULT STDMETHODCALLTYPE RequestUIActivate(); |
- |
- // IOleInPlaceSiteWindowless |
- virtual HRESULT STDMETHODCALLTYPE CanWindowlessActivate(); |
- virtual HRESULT STDMETHODCALLTYPE GetCapture(); |
- virtual HRESULT STDMETHODCALLTYPE SetCapture(BOOL capture); |
- virtual HRESULT STDMETHODCALLTYPE GetFocus(); |
- virtual HRESULT STDMETHODCALLTYPE SetFocus(BOOL focus); |
- virtual HRESULT STDMETHODCALLTYPE GetDC( |
- LPCRECT rect, |
- DWORD flags, |
- HDC* dc); |
- virtual HRESULT STDMETHODCALLTYPE ReleaseDC(HDC dc); |
- virtual HRESULT STDMETHODCALLTYPE InvalidateRect( |
- LPCRECT rect, |
- BOOL erase); |
- virtual HRESULT STDMETHODCALLTYPE InvalidateRgn( |
- HRGN rgn, |
- BOOL erase); |
- virtual HRESULT STDMETHODCALLTYPE ScrollRect( |
- INT dx, |
- INT dy, |
- LPCRECT scroll, |
- LPCRECT clip); |
- virtual HRESULT STDMETHODCALLTYPE AdjustRect(LPRECT rc); |
- virtual HRESULT STDMETHODCALLTYPE OnDefWindowMessage( |
- UINT msg, |
- WPARAM wparam, |
- LPARAM lparam, |
- LRESULT* result); |
- |
- // IServiceProvider |
- virtual HRESULT STDMETHODCALLTYPE QueryService( |
- REFGUID guid, |
- REFIID riid, |
- void** object); |
- |
- // IPropertyBag |
- virtual HRESULT STDMETHODCALLTYPE Read(LPCOLESTR prop_name, VARIANT* var, |
- IErrorLog* err_log); |
- virtual HRESULT STDMETHODCALLTYPE Write(LPCOLESTR prop_name, VARIANT* var); |
- |
- // IPropertyBag2 |
- virtual HRESULT STDMETHODCALLTYPE Read(ULONG c_properties, |
- PROPBAG2* prop_bag, |
- IErrorLog* err_log, |
- VARIANT* value, |
- HRESULT* error); |
- virtual HRESULT STDMETHODCALLTYPE Write(ULONG c_properties, |
- PROPBAG2* prop_bag, |
- VARIANT* value); |
- virtual HRESULT STDMETHODCALLTYPE CountProperties(ULONG* c_properties); |
- virtual HRESULT STDMETHODCALLTYPE GetPropertyInfo(ULONG iproperty, |
- ULONG c_properties, |
- PROPBAG2* prop_bag, |
- ULONG* properties_returned); |
- virtual HRESULT STDMETHODCALLTYPE LoadObject(LPCOLESTR pstr_name, |
- DWORD hint, |
- IUnknown* unk_object, |
- IErrorLog* err_log); |
- |
- friend WebActiveXContainer; |
- friend ActiveXPlugin; |
- |
- private: |
- // Call IOleObject::SetExtent to change the size of the control. width and |
- // height should be in pixels. |
- HRESULT SetExtent(int width, int height); |
- |
- WebActiveXContainer* container_; |
- // Theorectically the control could support only IUnknown interface. This is |
- // the minimum requirement. |
- ScopedComPtr<IUnknown> control_; |
- // These are all optional interfaces and they could be NULL even if we have |
- // created the control successfully. |
- ScopedComPtr<IDispatch> dispatch_; |
- ScopedComPtr<IOleObject> ole_object_; |
- ScopedComPtr<IOleInPlaceObject> inplace_object_; |
- ScopedComPtr<IViewObject> view_object_; |
- ScopedComPtr<IOleInPlaceObjectWindowless> inplace_object_windowless_; |
- RECT rect_; |
- // We need to remember whether we are activated so we can decide whether to |
- // deactivate during destruction. |
- bool inplace_activated_; |
- bool has_capture_; |
- // We need to save the initial properties so that during control |
- // initialization, the control can query us (IPropertyBag) for those |
- // properties. |
- std::vector<ControlParam> initial_params_; |
- |
- DISALLOW_EVIL_CONSTRUCTORS(WebActiveXSite); |
-}; |
- |
-} // namespace activex_shim |
- |
-#endif // #ifndef WEBKIT_ACTIVEX_SHIM_WEB_ACTIVEX_SITE_H__ |