| Index: chrome_frame/chrome_frame_delegate.h
|
| diff --git a/chrome_frame/chrome_frame_delegate.h b/chrome_frame/chrome_frame_delegate.h
|
| deleted file mode 100644
|
| index d1edf2ff0f4da82428fceee8ba38d1f197a483a8..0000000000000000000000000000000000000000
|
| --- a/chrome_frame/chrome_frame_delegate.h
|
| +++ /dev/null
|
| @@ -1,169 +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_CHROME_FRAME_DELEGATE_H_
|
| -#define CHROME_FRAME_CHROME_FRAME_DELEGATE_H_
|
| -
|
| -#include <atlbase.h>
|
| -#include <atlwin.h>
|
| -#include <queue>
|
| -#include <string>
|
| -#include <vector>
|
| -
|
| -#include "base/callback.h"
|
| -#include "base/files/file_path.h"
|
| -#include "base/location.h"
|
| -#include "base/pending_task.h"
|
| -#include "base/synchronization/lock.h"
|
| -#include "chrome/common/automation_constants.h"
|
| -#include "ipc/ipc_message.h"
|
| -
|
| -class GURL;
|
| -struct ContextMenuModel;
|
| -
|
| -namespace net {
|
| -class URLRequestStatus;
|
| -}
|
| -
|
| -namespace gfx {
|
| -class Rect;
|
| -}
|
| -
|
| -// A common interface supported by all the browser specific ChromeFrame
|
| -// implementations.
|
| -class ChromeFrameDelegate {
|
| - public:
|
| - typedef HWND WindowType;
|
| -
|
| - virtual WindowType GetWindow() const = 0;
|
| - virtual void GetBounds(RECT* bounds) = 0;
|
| - virtual std::string GetDocumentUrl() = 0;
|
| - virtual void OnAutomationServerReady() = 0;
|
| - virtual void OnAutomationServerLaunchFailed(
|
| - AutomationLaunchResult reason, const std::string& server_version) = 0;
|
| - virtual bool OnMessageReceived(const IPC::Message& msg) = 0;
|
| - virtual void OnChannelError() = 0;
|
| -
|
| - // This remains in interface since we call it if Navigate()
|
| - // returns immediate error.
|
| - virtual void OnLoadFailed(int error_code, const std::string& url) = 0;
|
| -
|
| - // Returns true if this instance is alive and well for processing automation
|
| - // messages.
|
| - virtual bool IsValid() const = 0;
|
| -
|
| - protected:
|
| - virtual ~ChromeFrameDelegate() {}
|
| -};
|
| -
|
| -extern UINT kAutomationServerReady;
|
| -extern UINT kMessageFromChromeFrame;
|
| -
|
| -class ChromeFrameDelegateImpl : public ChromeFrameDelegate {
|
| - public:
|
| - virtual WindowType GetWindow() { return NULL; }
|
| - virtual void GetBounds(RECT* bounds) {}
|
| - virtual std::string GetDocumentUrl() { return std::string(); }
|
| - virtual void OnAutomationServerReady() {}
|
| - virtual void OnAutomationServerLaunchFailed(
|
| - AutomationLaunchResult reason, const std::string& server_version) {}
|
| - virtual void OnLoadFailed(int error_code, const std::string& url) {}
|
| - virtual bool OnMessageReceived(const IPC::Message& msg);
|
| - virtual void OnChannelError() {}
|
| -
|
| - static bool IsTabMessage(const IPC::Message& message);
|
| -
|
| - virtual bool IsValid() const {
|
| - return true;
|
| - }
|
| -};
|
| -
|
| -// This interface enables tasks to be marshaled to desired threads.
|
| -class TaskMarshaller { // NOLINT
|
| - public:
|
| - virtual void PostTask(const tracked_objects::Location& from_here,
|
| - const base::Closure& task) = 0;
|
| -};
|
| -
|
| -// T is expected to be something CWindowImpl derived, or at least to have
|
| -// PostMessage(UINT, WPARAM) method. Do not forget to CHAIN_MSG_MAP
|
| -template <class T> class TaskMarshallerThroughWindowsMessages
|
| - : public TaskMarshaller {
|
| - public:
|
| - TaskMarshallerThroughWindowsMessages() {}
|
| - virtual void PostTask(const tracked_objects::Location& posted_from,
|
| - const base::Closure& task) OVERRIDE {
|
| - T* this_ptr = static_cast<T*>(this);
|
| - if (this_ptr->IsWindow()) {
|
| - this_ptr->AddRef();
|
| - base::PendingTask* pending_task =
|
| - new base::PendingTask(posted_from, task);
|
| - PushTask(pending_task);
|
| - this_ptr->PostMessage(MSG_EXECUTE_TASK,
|
| - reinterpret_cast<WPARAM>(pending_task));
|
| - } else {
|
| - DVLOG(1) << "Dropping MSG_EXECUTE_TASK message for destroyed window.";
|
| - }
|
| - }
|
| -
|
| - protected:
|
| - ~TaskMarshallerThroughWindowsMessages() {
|
| - DeleteAllPendingTasks();
|
| - }
|
| -
|
| - void DeleteAllPendingTasks() {
|
| - base::AutoLock lock(lock_);
|
| - DVLOG_IF(1, !pending_tasks_.empty()) << "Destroying "
|
| - << pending_tasks_.size()
|
| - << " pending tasks";
|
| - while (!pending_tasks_.empty()) {
|
| - base::PendingTask* task = pending_tasks_.front();
|
| - pending_tasks_.pop();
|
| - delete task;
|
| - }
|
| - }
|
| -
|
| - BEGIN_MSG_MAP(PostMessageMarshaller)
|
| - MESSAGE_HANDLER(MSG_EXECUTE_TASK, ExecuteTask)
|
| - END_MSG_MAP()
|
| -
|
| - private:
|
| - enum { MSG_EXECUTE_TASK = WM_APP + 6 };
|
| - inline LRESULT ExecuteTask(UINT, WPARAM wparam, LPARAM,
|
| - BOOL& handled) { // NOLINT
|
| - base::PendingTask* pending_task =
|
| - reinterpret_cast<base::PendingTask*>(wparam);
|
| - if (pending_task && PopTask(pending_task)) {
|
| - pending_task->task.Run();
|
| - delete pending_task;
|
| - }
|
| -
|
| - T* this_ptr = static_cast<T*>(this);
|
| - this_ptr->Release();
|
| - return 0;
|
| - }
|
| -
|
| - inline void PushTask(base::PendingTask* pending_task) {
|
| - base::AutoLock lock(lock_);
|
| - pending_tasks_.push(pending_task);
|
| - }
|
| -
|
| - // If |pending_task| is front of the queue, removes the task and returns true,
|
| - // otherwise we assume this is an already destroyed task (but Window message
|
| - // had remained in the thread queue).
|
| - inline bool PopTask(base::PendingTask* pending_task) {
|
| - base::AutoLock lock(lock_);
|
| - if (!pending_tasks_.empty() && pending_task == pending_tasks_.front()) {
|
| - pending_tasks_.pop();
|
| - return true;
|
| - }
|
| -
|
| - return false;
|
| - }
|
| -
|
| - base::Lock lock_;
|
| - std::queue<base::PendingTask*> pending_tasks_;
|
| -};
|
| -
|
| -#endif // CHROME_FRAME_CHROME_FRAME_DELEGATE_H_
|
|
|