| // 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. | 
 |  | 
 | #ifndef UI_AURA_CLIENT_CAPTURE_DELEGATE_H_ | 
 | #define UI_AURA_CLIENT_CAPTURE_DELEGATE_H_ | 
 |  | 
 | #include "ui/aura/aura_export.h" | 
 |  | 
 | namespace aura { | 
 | class Window; | 
 | namespace client { | 
 |  | 
 | // This interface provides API to change the root Window's capture state without | 
 | // exposing them as RootWindow API. | 
 | class AURA_EXPORT CaptureDelegate { | 
 |  public: | 
 |   // Called when a capture is set on |new_capture| and/or a capture is | 
 |   // released on |old_capture|. | 
 |   // NOTE: |old_capture| and |new_capture| are not necessarily contained in the | 
 |   // window hierarchy of the delegate. | 
 |   virtual void UpdateCapture(aura::Window* old_capture, | 
 |                              aura::Window* new_capture) = 0; | 
 |  | 
 |   // Called when another root gets capture. | 
 |   virtual void OnOtherRootGotCapture() = 0; | 
 |  | 
 |   // Sets/Release a native capture on host windows. | 
 |   virtual void SetNativeCapture() = 0; | 
 |   virtual void ReleaseNativeCapture() = 0; | 
 |  | 
 |  protected: | 
 |   virtual ~CaptureDelegate() {} | 
 | }; | 
 |  | 
 | }  // namespace client | 
 | }  // namespace aura | 
 |  | 
 | #endif  // UI_AURA_CLIENT_CAPTURE_DELEGATE_H_ |