chromium/chromecast/media/base/video_resolution_policy.h

// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROMECAST_MEDIA_BASE_VIDEO_RESOLUTION_POLICY_H_
#define CHROMECAST_MEDIA_BASE_VIDEO_RESOLUTION_POLICY_H_

namespace gfx {
class Size;
}  // namespace gfx

namespace chromecast {
namespace media {

// Interface allowing renderer to check for whether certain video resolutions
// should have playback blocked.
// TODO(halliwell): remove this mechanism once we have PR3.
class VideoResolutionPolicy {
 public:
  // Observer allows policy subclass to notify renderer when some
  // conditions have changed.  Renderer should re-check current
  // resolution.
  class Observer {
   public:
    virtual void OnVideoResolutionPolicyChanged() = 0;

   protected:
    virtual ~Observer() {}
  };

  virtual ~VideoResolutionPolicy();

  virtual void AddObserver(Observer* observer) = 0;
  virtual void RemoveObserver(Observer* observer) = 0;

  virtual bool ShouldBlock(const gfx::Size& size) = 0;
};

}  // namespace media
}  // namespace chromecast

#endif  // CHROMECAST_MEDIA_BASE_VIDEO_RESOLUTION_POLICY_H_