| Index: chrome_frame/bho.h
|
| diff --git a/chrome_frame/bho.h b/chrome_frame/bho.h
|
| deleted file mode 100644
|
| index 6afeb6144d9fdbcdd86dd9b6ddac16f2882af127..0000000000000000000000000000000000000000
|
| --- a/chrome_frame/bho.h
|
| +++ /dev/null
|
| @@ -1,125 +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.
|
| -
|
| -#ifndef CHROME_FRAME_BHO_H_
|
| -#define CHROME_FRAME_BHO_H_
|
| -
|
| -#include <atlbase.h>
|
| -#include <atlcom.h>
|
| -#include <deletebrowsinghistory.h>
|
| -#include <exdisp.h>
|
| -#include <exdispid.h>
|
| -#include <mshtml.h>
|
| -#include <shdeprecated.h>
|
| -
|
| -#include <string>
|
| -
|
| -#include "chrome_frame/chrome_tab.h"
|
| -#include "chrome_frame/delete_chrome_history.h"
|
| -#include "chrome_frame/resource.h"
|
| -#include "chrome_frame/urlmon_moniker.h"
|
| -#include "chrome_frame/urlmon_url_request.h"
|
| -#include "grit/chrome_frame_resources.h"
|
| -
|
| -class DeleteChromeHistory;
|
| -
|
| -class PatchHelper {
|
| - public:
|
| - enum State { UNKNOWN, PATCH_IBROWSER, PATCH_PROTOCOL, PATCH_MONIKER };
|
| - PatchHelper() : state_(UNKNOWN) {
|
| - }
|
| -
|
| - State state() const {
|
| - return state_;
|
| - }
|
| -
|
| - // Returns true if protocols were patched, false if patching has already
|
| - // been done.
|
| - bool InitializeAndPatchProtocolsIfNeeded();
|
| -
|
| - void PatchBrowserService(IBrowserService* p);
|
| - void UnpatchIfNeeded();
|
| - protected:
|
| - State state_;
|
| -};
|
| -
|
| -// Single global variable
|
| -extern PatchHelper g_patch_helper;
|
| -
|
| -class ATL_NO_VTABLE Bho
|
| - : public CComObjectRootEx<CComSingleThreadModel>,
|
| - public CComCoClass<Bho, &CLSID_ChromeFrameBHO>,
|
| - public IObjectWithSiteImpl<Bho>,
|
| - public IDispEventSimpleImpl<0, Bho, &DIID_DWebBrowserEvents2>,
|
| - public NavigationManager {
|
| - public:
|
| - typedef HRESULT (STDMETHODCALLTYPE* IBrowserService_OnHttpEquiv_Fn)(
|
| - IBrowserService* browser, IShellView* shell_view, BOOL done,
|
| - VARIANT* in_arg, VARIANT* out_arg);
|
| -
|
| -DECLARE_GET_CONTROLLING_UNKNOWN()
|
| -DECLARE_REGISTRY_RESOURCEID(IDR_BHO)
|
| -DECLARE_NOT_AGGREGATABLE(Bho)
|
| -DECLARE_PROTECT_FINAL_CONSTRUCT()
|
| -
|
| -BEGIN_COM_MAP(Bho)
|
| - COM_INTERFACE_ENTRY(IObjectWithSite)
|
| - // When calling DeleteChromeHistory, ensure that only one instance
|
| - // is created to avoid mulitple message loops.
|
| - COM_INTERFACE_ENTRY_CACHED_TEAR_OFF(IID_IDeleteBrowsingHistory,
|
| - DeleteChromeHistory,
|
| - delete_chrome_history_.p)
|
| -END_COM_MAP()
|
| -
|
| -BEGIN_SINK_MAP(Bho)
|
| - SINK_ENTRY_INFO(0, DIID_DWebBrowserEvents2, DISPID_BEFORENAVIGATE2,
|
| - BeforeNavigate2, &kBeforeNavigate2Info)
|
| - SINK_ENTRY_INFO(0, DIID_DWebBrowserEvents2, DISPID_NAVIGATECOMPLETE2,
|
| - NavigateComplete2, &kNavigateComplete2Info)
|
| - SINK_ENTRY_INFO(0, DIID_DWebBrowserEvents2, DISPID_DOCUMENTCOMPLETE,
|
| - DocumentComplete, &kDocumentCompleteInfo)
|
| -END_SINK_MAP()
|
| -
|
| - Bho();
|
| -
|
| - HRESULT FinalConstruct();
|
| - void FinalRelease();
|
| -
|
| - // IObjectWithSite
|
| - STDMETHODIMP SetSite(IUnknown* site);
|
| -
|
| - // WebBrowser2 event sinks.
|
| - STDMETHOD(BeforeNavigate2)(IDispatch* dispatch, VARIANT* url, VARIANT* flags,
|
| - VARIANT* target_frame_name, VARIANT* post_data, VARIANT* headers,
|
| - VARIANT_BOOL* cancel);
|
| - STDMETHOD_(void, NavigateComplete2)(IDispatch* dispatch, VARIANT* url);
|
| - STDMETHOD_(void, DocumentComplete)(IDispatch* dispatch, VARIANT* url);
|
| -
|
| - // mshtml sends an IOleCommandTarget::Exec of OLECMDID_HTTPEQUIV
|
| - // (and OLECMDID_HTTPEQUIV_DONE) as soon as it parses a meta tag.
|
| - // It also sends contents of the meta tag as an argument. IEFrame
|
| - // handles this in IBrowserService::OnHttpEquiv. So this allows
|
| - // us to sniff the META tag by simply patching it. The renderer
|
| - // switching can be achieved by canceling original navigation
|
| - // and issuing a new one using IWebBrowser2->Navigate2.
|
| - static HRESULT STDMETHODCALLTYPE OnHttpEquiv(
|
| - IBrowserService_OnHttpEquiv_Fn original_httpequiv,
|
| - IBrowserService* browser, IShellView* shell_view, BOOL done,
|
| - VARIANT* in_arg, VARIANT* out_arg);
|
| -
|
| - static void ProcessOptInUrls(IWebBrowser2* browser, BSTR url);
|
| -
|
| - // COM_INTERFACE_ENTRY_CACHED_TEAR_OFF manages the raw pointer from CComPtr
|
| - // which base::win::ScopedComPtr doesn't expose.
|
| - CComPtr<IUnknown> delete_chrome_history_;
|
| -
|
| - protected:
|
| - bool PatchProtocolHandler(const CLSID& handler_clsid);
|
| -
|
| - static _ATL_FUNC_INFO kBeforeNavigate2Info;
|
| - static _ATL_FUNC_INFO kNavigateComplete2Info;
|
| - static _ATL_FUNC_INFO kDocumentCompleteInfo;
|
| -};
|
| -
|
| -#endif // CHROME_FRAME_BHO_H_
|
|
|