Index: ui/accelerated_widget_mac/window_resize_helper_mac.cc |
diff --git a/content/browser/renderer_host/render_widget_resize_helper_mac.cc b/ui/accelerated_widget_mac/window_resize_helper_mac.cc |
similarity index 76% |
copy from content/browser/renderer_host/render_widget_resize_helper_mac.cc |
copy to ui/accelerated_widget_mac/window_resize_helper_mac.cc |
index 823c6848602586e12be00b7b75c18ccdbda1aa58..f36aa91dcc4680672acc5898746015f4ea19659b 100644 |
--- a/content/browser/renderer_host/render_widget_resize_helper_mac.cc |
+++ b/ui/accelerated_widget_mac/window_resize_helper_mac.cc |
@@ -1,16 +1,19 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Copyright 2015 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. |
-#include "content/browser/renderer_host/render_widget_resize_helper_mac.h" |
+#include "ui/accelerated_widget_mac/window_resize_helper_mac.h" |
#include <list> |
-#include "content/browser/gpu/gpu_process_host_ui_shim.h" |
-#include "content/browser/renderer_host/render_process_host_impl.h" |
-#include "content/public/browser/browser_thread.h" |
+#include "base/bind.h" |
+#include "base/callback.h" |
+#include "base/single_thread_task_runner.h" |
+#include "base/synchronization/lock.h" |
+#include "base/synchronization/waitable_event.h" |
+#include "base/threading/thread_restrictions.h" |
-namespace content { |
+namespace ui { |
namespace { |
class WrappedTask; |
@@ -53,8 +56,9 @@ class WrappedTask { |
// WaitForSingleWrappedTaskToRun call or through the target task runner. |
class PumpableTaskRunner : public base::SingleThreadTaskRunner { |
public: |
- explicit PumpableTaskRunner( |
- const EventTimedWaitCallback& event_timed_wait_callback); |
+ PumpableTaskRunner( |
+ const EventTimedWaitCallback& event_timed_wait_callback, |
+ const scoped_refptr<base::SingleThreadTaskRunner>& target_task_runner); |
// Enqueue WrappedTask and post it to |target_task_runner_|. |
bool EnqueueAndPostWrappedTask(const tracked_objects::Location& from_here, |
@@ -64,9 +68,6 @@ class PumpableTaskRunner : public base::SingleThreadTaskRunner { |
// Wait at most |max_delay| to run an enqueued task. |
bool WaitForSingleWrappedTaskToRun(const base::TimeDelta& max_delay); |
- // Remove a wrapped task from the queue. |
- void RemoveWrappedTaskFromQueue(WrappedTask* task); |
- |
// base::SingleThreadTaskRunner implementation: |
bool PostDelayedTask(const tracked_objects::Location& from_here, |
const base::Closure& task, |
@@ -103,19 +104,7 @@ class PumpableTaskRunner : public base::SingleThreadTaskRunner { |
DISALLOW_COPY_AND_ASSIGN(PumpableTaskRunner); |
}; |
-void HandleGpuIPC(int gpu_host_id, const IPC::Message& message) { |
- GpuProcessHostUIShim* host = GpuProcessHostUIShim::FromID(gpu_host_id); |
- if (host) |
- host->OnMessageReceived(message); |
-} |
- |
-void HandleRendererIPC(int render_process_id, const IPC::Message& message) { |
- RenderProcessHost* host = RenderProcessHost::FromID(render_process_id); |
- if (host) |
- host->OnMessageReceived(message); |
-} |
- |
-base::LazyInstance<RenderWidgetResizeHelper> g_render_widget_task_runner = |
+base::LazyInstance<WindowResizeHelperMac>::Leaky g_window_resize_helper = |
LAZY_INSTANCE_INITIALIZER; |
//////////////////////////////////////////////////////////////////////////////// |
@@ -181,11 +170,11 @@ void WrappedTask::RemoveFromTaskRunnerQueue() { |
// PumpableTaskRunner |
PumpableTaskRunner::PumpableTaskRunner( |
- const EventTimedWaitCallback& event_timed_wait_callback) |
+ const EventTimedWaitCallback& event_timed_wait_callback, |
+ const scoped_refptr<base::SingleThreadTaskRunner>& target_task_runner) |
: event_(false /* auto-reset */, false /* initially signalled */), |
event_timed_wait_callback_(event_timed_wait_callback), |
- target_task_runner_( |
- BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)) {} |
+ target_task_runner_(target_task_runner) {} |
PumpableTaskRunner::~PumpableTaskRunner() { |
// Because tasks hold a reference to the task runner, the task queue must |
@@ -289,57 +278,41 @@ bool PumpableTaskRunner::RunsTasksOnCurrentThread() const { |
} // namespace |
//////////////////////////////////////////////////////////////////////////////// |
-// RenderWidgetResizeHelper |
+// WindowResizeHelperMac |
-scoped_refptr<base::SingleThreadTaskRunner> |
-RenderWidgetResizeHelper::task_runner() const { |
+scoped_refptr<base::SingleThreadTaskRunner> WindowResizeHelperMac::task_runner() |
+ const { |
return task_runner_; |
} |
// static |
-RenderWidgetResizeHelper* RenderWidgetResizeHelper::Get() { |
- return g_render_widget_task_runner.Pointer(); |
+WindowResizeHelperMac* WindowResizeHelperMac::Get() { |
+ return g_window_resize_helper.Pointer(); |
} |
-bool RenderWidgetResizeHelper::WaitForSingleTaskToRun( |
- const base::TimeDelta& max_delay) { |
- PumpableTaskRunner* pumpable_task_runner = |
- reinterpret_cast<PumpableTaskRunner*>(task_runner_.get()); |
- return pumpable_task_runner->WaitForSingleWrappedTaskToRun(max_delay); |
+void WindowResizeHelperMac::Init( |
+ const scoped_refptr<base::SingleThreadTaskRunner>& target_task_runner) { |
+ DCHECK(!task_runner_); |
+ task_runner_ = new PumpableTaskRunner( |
+ base::Bind(&WindowResizeHelperMac::EventTimedWait), target_task_runner); |
} |
-void RenderWidgetResizeHelper::PostRendererProcessMsg(int render_process_id, |
- const IPC::Message& msg) { |
- PumpableTaskRunner* pumpable_task_runner = |
- reinterpret_cast<PumpableTaskRunner*>(task_runner_.get()); |
- pumpable_task_runner->EnqueueAndPostWrappedTask( |
- FROM_HERE, |
- new WrappedTask(base::Bind(HandleRendererIPC, render_process_id, msg), |
- base::TimeDelta()), |
- base::TimeDelta()); |
-} |
- |
-void RenderWidgetResizeHelper::PostGpuProcessMsg(int gpu_host_id, |
- const IPC::Message& msg) { |
+bool WindowResizeHelperMac::WaitForSingleTaskToRun( |
+ const base::TimeDelta& max_delay) { |
PumpableTaskRunner* pumpable_task_runner = |
- reinterpret_cast<PumpableTaskRunner*>(task_runner_.get()); |
- pumpable_task_runner->EnqueueAndPostWrappedTask( |
- FROM_HERE, new WrappedTask(base::Bind(HandleGpuIPC, gpu_host_id, msg), |
- base::TimeDelta()), |
- base::TimeDelta()); |
-} |
- |
-RenderWidgetResizeHelper::RenderWidgetResizeHelper() { |
- task_runner_ = new PumpableTaskRunner(base::Bind(&EventTimedWait)); |
+ static_cast<PumpableTaskRunner*>(task_runner_.get()); |
+ if (!pumpable_task_runner) |
+ return false; |
+ return pumpable_task_runner->WaitForSingleWrappedTaskToRun(max_delay); |
} |
-RenderWidgetResizeHelper::~RenderWidgetResizeHelper() {} |
+WindowResizeHelperMac::WindowResizeHelperMac() {} |
+WindowResizeHelperMac::~WindowResizeHelperMac() {} |
-// static |
-void RenderWidgetResizeHelper::EventTimedWait(base::WaitableEvent* event, |
- base::TimeDelta delay) { |
+void WindowResizeHelperMac::EventTimedWait(base::WaitableEvent* event, |
+ base::TimeDelta delay) { |
base::ThreadRestrictions::ScopedAllowWait allow_wait; |
event->TimedWait(delay); |
} |
-} // namespace content |
+} // namespace ui |