Chromium Code Reviews| Index: ui/aura/remote_root_window_host_win.cc |
| =================================================================== |
| --- ui/aura/remote_root_window_host_win.cc (revision 0) |
| +++ ui/aura/remote_root_window_host_win.cc (revision 0) |
| @@ -0,0 +1,159 @@ |
| +// Copyright (c) 2012 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 "ui/aura/remote_root_window_host_win.h" |
| + |
| +#include <windows.h> |
| + |
| +#include <algorithm> |
| + |
| +#include "base/message_loop.h" |
| +#include "ui/aura/client/capture_client.h" |
| +#include "ui/aura/env.h" |
| +#include "ui/aura/root_window.h" |
| +#include "ui/base/cursor/cursor_loader_win.h" |
| +#include "ui/base/events/event.h" |
| +#include "ui/base/view_prop.h" |
| + |
| +using std::max; |
| +using std::min; |
| + |
| +namespace aura { |
| + |
| +namespace { |
| + |
| +const char* kRootWindowHostWinKey = "__AURA_REMOTE_ROOT_WINDOW_HOST_WIN__"; |
| + |
| +} // namespace |
| + |
| +RemoteRootWindowHostWin* g_instance = NULL; |
| + |
| +RemoteRootWindowHostWin* RemoteRootWindowHostWin::Instance() { |
|
Ben Goodger (Google)
2012/10/04 15:48:30
This should be GetInstance() and create on first c
|
| + return g_instance; |
| +} |
| + |
| +RootWindow* RemoteRootWindowHostWin::CreateRootWindow( |
|
Ben Goodger (Google)
2012/10/04 15:48:30
This function can go away per my comment in the mu
cpu_(ooo_6.6-7.5)
2012/10/04 19:57:56
See my comment on the multi-display-manager file.
|
| + const gfx::Rect& bounds) { |
| + RootWindow::CreateParams params(bounds); |
| + g_instance = new RemoteRootWindowHostWin(NULL, bounds); |
| + params.host = g_instance; |
| + RootWindow* root = new RootWindow(params); |
| + g_instance->delegate_ = root; |
| + return root; |
| +} |
| + |
| +RemoteRootWindowHostWin::RemoteRootWindowHostWin( |
| + RootWindowHostDelegate* delegate, const gfx::Rect& bounds) |
| + : delegate_(delegate) { |
| + prop_.reset(new ui::ViewProp(NULL, kRootWindowHostWinKey, this)); |
| +} |
| + |
| +RemoteRootWindowHostWin::~RemoteRootWindowHostWin() { |
| +} |
| + |
| +RootWindow* RemoteRootWindowHostWin::GetRootWindow() { |
| + return delegate_->AsRootWindow(); |
| +} |
| + |
| +gfx::AcceleratedWidget RemoteRootWindowHostWin::GetAcceleratedWidget() { |
| + // TODO(cpu): This is bad. Chrome's compositor needs a valid window |
| + // initially and then later on we swap it. Since the compositor never |
| + // uses this initial window we tell ourselves this hack is ok to get |
| + // thing off the ground. |
| + return ::GetDesktopWindow(); |
| +} |
| + |
| +void RemoteRootWindowHostWin::Show() { |
| +} |
| + |
| +void RemoteRootWindowHostWin::Hide() { |
| + NOTIMPLEMENTED(); |
| +} |
| + |
| +void RemoteRootWindowHostWin::ToggleFullScreen() { |
| +} |
| + |
| +gfx::Rect RemoteRootWindowHostWin::GetBounds() const { |
| + gfx::Rect r(gfx::Point(0,0), aura::RootWindowHost::GetNativeScreenSize()); |
| + return r; |
| +} |
| + |
| +void RemoteRootWindowHostWin::SetBounds(const gfx::Rect& bounds) { |
| +} |
| + |
| +gfx::Point RemoteRootWindowHostWin::GetLocationOnNativeScreen() const { |
| + return gfx::Point(0, 0); |
| +} |
| + |
| +void RemoteRootWindowHostWin::SetCursor(gfx::NativeCursor native_cursor) { |
| +} |
| + |
| +void RemoteRootWindowHostWin::SetCapture() { |
| +} |
| + |
| +void RemoteRootWindowHostWin::ReleaseCapture() { |
| +} |
| + |
| +void RemoteRootWindowHostWin::ShowCursor(bool show) { |
| +} |
| + |
| +bool RemoteRootWindowHostWin::QueryMouseLocation(gfx::Point* location_return) { |
| + POINT pt; |
| + GetCursorPos(&pt); |
| + *location_return = |
| + gfx::Point(static_cast<int>(pt.x), static_cast<int>(pt.y)); |
| + return true; |
| +} |
| + |
| +bool RemoteRootWindowHostWin::ConfineCursorToRootWindow() { |
| + return true; |
| +} |
| + |
| +bool RemoteRootWindowHostWin::GrabSnapshot( |
| + const gfx::Rect& snapshot_bounds, |
| + std::vector<unsigned char>* png_representation) { |
| + NOTIMPLEMENTED(); |
| + return false; |
| +} |
| + |
| +void RemoteRootWindowHostWin::UnConfineCursor() { |
| +} |
| + |
| +void RemoteRootWindowHostWin::MoveCursorTo(const gfx::Point& location) { |
| +} |
| + |
| +void RemoteRootWindowHostWin::SetFocusWhenShown(bool focus_when_shown) { |
| + NOTIMPLEMENTED(); |
| +} |
| + |
| +void RemoteRootWindowHostWin::PostNativeEvent( |
| + const base::NativeEvent& native_event) { |
| +} |
| + |
| +void RemoteRootWindowHostWin::OnDeviceScaleFactorChanged( |
| + float device_scale_factor) { |
| + NOTIMPLEMENTED(); |
| +} |
| + |
| +void RemoteRootWindowHostWin::PrepareForShutdown() { |
| + NOTIMPLEMENTED(); |
| +} |
| + |
| +void RemoteRootWindowHostWin::OnMouseMoved(int x, int y, int extra) { |
| + gfx::Point location(x, y); |
| + ui::MouseEvent event(ui::ET_MOUSE_MOVED, location, location, 0); |
| + delegate_->OnHostMouseEvent(&event); |
| +} |
| + |
| +void RemoteRootWindowHostWin::OnMouseClick(int x, int y, int extra) { |
| + gfx::Point location(x, y); |
| + ui::EventType type = (extra == 1) ? |
| + ui::ET_MOUSE_PRESSED : ui::ET_MOUSE_RELEASED; |
| + ui::MouseEvent event(type, location, location, 0); |
| + event.SetClickCount(1); |
| + event.set_flags(ui::EF_LEFT_MOUSE_BUTTON); |
| + delegate_->OnHostMouseEvent(&event); |
| +} |
| + |
| +} // namespace aura |