// 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_DELETE_CHROME_HISTORY_H_ #define CHROME_FRAME_DELETE_CHROME_HISTORY_H_ #include <atlbase.h> #include <atlwin.h> #include <atlcom.h> #include <deletebrowsinghistory.h> #include "base/message_loop/message_loop.h" #include "chrome_frame/bho.h" #include "chrome_frame/chrome_frame_plugin.h" #include "chrome_frame/chrome_tab.h" #include "grit/chrome_frame_resources.h" class Bho; // DeleteChromeHistory: Implements IDeleteBrowsingHistory and // pumps cache clearing operations over automation. Blocks the UI // thread while operating. You have been warned. class ATL_NO_VTABLE DeleteChromeHistory : public CComTearOffObjectBase<Bho, CComSingleThreadModel>, public CWindowImpl<DeleteChromeHistory>, public ChromeFramePlugin<DeleteChromeHistory>, public IDeleteBrowsingHistory { public: DeleteChromeHistory(); ~DeleteChromeHistory(); HRESULT FinalConstruct(); DECLARE_CLASSFACTORY_SINGLETON(DeleteChromeHistory) BEGIN_COM_MAP(DeleteChromeHistory) COM_INTERFACE_ENTRY(IDeleteBrowsingHistory) END_COM_MAP() BEGIN_MSG_MAP(DeleteChromeHistory) CHAIN_MSG_MAP(ChromeFramePlugin<DeleteChromeHistory>) END_MSG_MAP() // IDeleteBrowsingHistory methods STDMETHOD(DeleteBrowsingHistory)(DWORD flags); protected: // ChromeFrameDelegate overrides virtual void OnAutomationServerReady(); virtual void OnAutomationServerLaunchFailed( AutomationLaunchResult reason, const std::string& server_version); virtual void GetProfilePath(const std::wstring& profile_name, base::FilePath* profile_path); private: unsigned long remove_mask_; base::MessageLoopForUI loop_; }; #endif // CHROME_FRAME_DELETE_CHROME_HISTORY_H_