15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/client/capture_client.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/aura/window_event_dispatcher.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/window_property.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DECLARE_WINDOW_PROPERTY_TYPE(aura::client::CaptureClient*)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace aura {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace client {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DEFINE_WINDOW_PROPERTY_KEY(
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    CaptureClient*, kRootWindowCaptureClientKey, NULL);
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void SetCaptureClient(Window* root_window, CaptureClient* client) {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  root_window->SetProperty(kRootWindowCaptureClientKey, client);
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)CaptureClient* GetCaptureClient(Window* root_window) {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return root_window ?
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      root_window->GetProperty(kRootWindowCaptureClientKey) : NULL;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Window* GetCaptureWindow(Window* window) {
281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  Window* root_window = window->GetRootWindow();
298bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  if (!root_window)
308bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)    return NULL;
318bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  CaptureClient* capture_client = GetCaptureClient(root_window);
328bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  return capture_client ? capture_client->GetCaptureWindow() : NULL;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace client
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace aura
37