15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)// found in the LICENSE file. 4d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef CONTENT_BROWSER_RENDERER_HOST_COMPOSITOR_RESIZE_LOCK_AURA_H_ 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define CONTENT_BROWSER_RENDERER_HOST_COMPOSITOR_RESIZE_LOCK_AURA_H_ 7d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 8d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "base/memory/ref_counted.h" 9d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "base/memory/weak_ptr.h" 10d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "base/time/time.h" 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "content/browser/compositor/resize_lock.h" 12d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace aura { 1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)class WindowTreeHost; 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace ui { 17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class CompositorLock; 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 19d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 20d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)namespace content { 21d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 22d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)// Used to prevent further resizes while a resize is pending. 23d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)class CompositorResizeLock : public ResizeLock { 24d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) public: 2523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) CompositorResizeLock(aura::WindowTreeHost* host, 26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const gfx::Size new_size, 27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool defer_compositor_lock, 28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const base::TimeDelta& timeout); 29d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) virtual ~CompositorResizeLock(); 30d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 31d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) virtual bool GrabDeferredLock() OVERRIDE; 32d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) virtual void UnlockCompositor() OVERRIDE; 33d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 34d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) protected: 35d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) virtual void LockCompositor() OVERRIDE; 36d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) void CancelLock(); 37d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 38d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) private: 3923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) aura::WindowTreeHost* host_; 40d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) scoped_refptr<ui::CompositorLock> compositor_lock_; 41d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) base::WeakPtrFactory<CompositorResizeLock> weak_ptr_factory_; 42d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) bool cancelled_; 43d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 44d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(CompositorResizeLock); 45d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)}; 46d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 47d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)} // namespace content 48d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif // CONTENT_BROWSER_RENDERER_HOST_COMPOSITOR_RESIZE_LOCK_AURA_H_ 50