| 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__
|
|
|