// Copyright (c) 2010 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_LOADER_H_
#define CHROME_FRAME_BHO_LOADER_H_
#include <windows.h>
// Forward.
class EventHooker;
// This class simulates BHO loading in an IE process. It watches for the
// creation of a specific window and then retrieves the web browser object
// for that window and simulates loading of the BHO.
class BHOLoader {
public:
BHOLoader();
~BHOLoader();
// Callback invoked on receipt of an accessibility event.
void OnHookEvent(DWORD event, HWND window);
// Call this to install event hooks that will trigger on window creation
// and reparenting. Returns true if the hooks are successfully installed,
// false otherwise.
bool StartHook();
// Call this to remove the event hooks that are installed by StartHook().
void StopHook();
// Retrieve the BHOLoader instance. Note that this is NOT thread-safe.
static BHOLoader* GetInstance();
private:
EventHooker* hooker_;
};
#endif // CHROME_FRAME_BHO_LOADER_H_