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