| Index: chrome_frame/test/win_event_receiver.h
|
| diff --git a/chrome_frame/test/win_event_receiver.h b/chrome_frame/test/win_event_receiver.h
|
| deleted file mode 100644
|
| index 66ad9eba8a692e48f4e9f7ab27b7f98b421d2c4c..0000000000000000000000000000000000000000
|
| --- a/chrome_frame/test/win_event_receiver.h
|
| +++ /dev/null
|
| @@ -1,146 +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_TEST_WIN_EVENT_RECEIVER_H_
|
| -#define CHROME_FRAME_TEST_WIN_EVENT_RECEIVER_H_
|
| -
|
| -#include <windows.h>
|
| -
|
| -#include <string>
|
| -#include <vector>
|
| -#include <utility>
|
| -
|
| -#include "base/memory/linked_ptr.h"
|
| -#include "base/win/object_watcher.h"
|
| -
|
| -struct FunctionStub;
|
| -
|
| -// Listens to WinEvents from the WinEventReceiver.
|
| -class WinEventListener {
|
| - public:
|
| - virtual ~WinEventListener() {}
|
| - // Called when an event has been received. |hwnd| is the window that generated
|
| - // the event, or null if no window is associated with the event.
|
| - virtual void OnEventReceived(DWORD event, HWND hwnd, LONG object_id,
|
| - LONG child_id) = 0;
|
| -};
|
| -
|
| -// Receives WinEvents and forwards them to its listener. The event types the
|
| -// listener wants to receive can be specified.
|
| -class WinEventReceiver {
|
| - public:
|
| - WinEventReceiver();
|
| - ~WinEventReceiver();
|
| -
|
| - // Sets the sole listener of this receiver. The listener will receive all
|
| - // WinEvents of the given event type. Any previous listener will be
|
| - // replaced. |listener| should not be NULL.
|
| - void SetListenerForEvent(WinEventListener* listener, DWORD event);
|
| -
|
| - // Same as above, but sets a range of events to listen for.
|
| - void SetListenerForEvents(WinEventListener* listener, DWORD event_min,
|
| - DWORD event_max);
|
| -
|
| - // Stops receiving events and forwarding them to the listener. It is
|
| - // permitted to call this even if the receiver has already been stopped.
|
| - void StopReceivingEvents();
|
| -
|
| - private:
|
| - bool InitializeHook(DWORD event_min, DWORD event_max);
|
| -
|
| - static void CALLBACK WinEventHook(WinEventReceiver* me, HWINEVENTHOOK hook,
|
| - DWORD event, HWND hwnd, LONG object_id, LONG child_id,
|
| - DWORD event_thread_id, DWORD event_time);
|
| -
|
| - WinEventListener* listener_;
|
| - HWINEVENTHOOK hook_;
|
| - FunctionStub* hook_stub_;
|
| -};
|
| -
|
| -// Receives notifications when a window is opened or closed.
|
| -class WindowObserver {
|
| - public:
|
| - virtual ~WindowObserver() {}
|
| - virtual void OnWindowOpen(HWND hwnd) = 0;
|
| - virtual void OnWindowClose(HWND hwnd) = 0;
|
| -};
|
| -
|
| -// Notifies observers when windows whose captions match specified patterns
|
| -// open or close. When a window opens, its caption is compared to the patterns
|
| -// associated with each observer. Observers registered with matching patterns
|
| -// are notified of the window's opening and will be notified when the same
|
| -// window is closed (including if the owning process terminates without closing
|
| -// the window).
|
| -//
|
| -// Changes to a window's caption while it is open do not affect the set of
|
| -// observers to be notified when it closes.
|
| -//
|
| -// Observers are not notified of the closing of windows that were already open
|
| -// when they were registered.
|
| -//
|
| -// Observers may call AddObserver and/or RemoveObserver during notifications.
|
| -//
|
| -// Each instance of this class must only be accessed from a single thread, and
|
| -// that thread must be running a message loop.
|
| -class WindowWatchdog : public WinEventListener {
|
| - public:
|
| - WindowWatchdog();
|
| - // Register |observer| to be notified when windows matching |caption_pattern|
|
| - // and/or |class_name_pattern| are opened or closed. A single observer may be
|
| - // registered multiple times.
|
| - // If a single window caption and/or class name matches multiple
|
| - // registrations of a single observer, the observer will be notified once per
|
| - // matching registration.
|
| - void AddObserver(WindowObserver* observer,
|
| - const std::string& caption_pattern,
|
| - const std::string& class_name_pattern);
|
| -
|
| - // Remove all registrations of |observer|. The |observer| will not be notified
|
| - // during or after this call.
|
| - void RemoveObserver(WindowObserver* observer);
|
| -
|
| - private:
|
| - class ProcessExitObserver;
|
| -
|
| - // The Delegate object is actually a ProcessExitObserver, but declaring
|
| - // it as such would require fully declaring the ProcessExitObserver class
|
| - // here in order for linked_ptr to access its destructor.
|
| - typedef std::pair<HWND, linked_ptr<base::win::ObjectWatcher::Delegate> >
|
| - OpenWindowEntry;
|
| - typedef std::vector<OpenWindowEntry> OpenWindowList;
|
| -
|
| - struct ObserverEntry {
|
| - WindowObserver* observer;
|
| - std::string caption_pattern;
|
| - std::string class_name_pattern;
|
| - OpenWindowList open_windows;
|
| - };
|
| -
|
| - typedef std::vector<ObserverEntry> ObserverEntryList;
|
| -
|
| - // WinEventListener implementation.
|
| - virtual void OnEventReceived(
|
| - DWORD event, HWND hwnd, LONG object_id, LONG child_id);
|
| -
|
| - static std::string GetWindowCaption(HWND hwnd);
|
| -
|
| - void HandleOnOpen(HWND hwnd);
|
| - void HandleOnClose(HWND hwnd);
|
| - void OnHwndProcessExited(HWND hwnd);
|
| -
|
| - // Returns true if the caption pattern and/or the class name pattern in the
|
| - // observer entry structure matches the caption and/or class name passed in.
|
| - bool MatchingWindow(const ObserverEntry& entry,
|
| - const std::string& caption,
|
| - const std::string& class_name);
|
| -
|
| - ObserverEntryList observers_;
|
| - WinEventReceiver win_event_receiver_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(WindowWatchdog);
|
| -};
|
| -
|
| -
|
| -
|
| -#endif // CHROME_FRAME_TEST_WIN_EVENT_RECEIVER_H_
|
|
|