// 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_
