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)
5bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch#ifndef CONTENT_RENDERER_PEPPER_PPB_FULLSCREEN_CONTAINER_IMPL_H_
6bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch#define CONTENT_RENDERER_PEPPER_PPB_FULLSCREEN_CONTAINER_IMPL_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace blink {
9bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdochclass WebLayer;
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebCursorInfo;
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct WebRect;
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}  // namespace blink
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1458e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdochnamespace content {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This class is like a lightweight WebPluginContainer for fullscreen PPAPI
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// plugins, that only handles painting.
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FullscreenContainer {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Invalidates the full plugin region.
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Invalidate() = 0;
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Invalidates a partial region of the plugin.
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void InvalidateRect(const blink::WebRect&) = 0;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Scrolls a partial region of the plugin in the given direction.
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void ScrollRect(int dx, int dy, const blink::WebRect&) = 0;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Destroys the fullscreen window. This also destroys the FullscreenContainer
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // instance.
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Destroy() = 0;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Notifies the container that the mouse cursor has changed.
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void DidChangeCursor(const blink::WebCursorInfo& cursor) = 0;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void SetLayer(blink::WebLayer* layer) = 0;
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~FullscreenContainer() {}
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4258e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch}  // namespace content
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch#endif  // CONTENT_RENDERER_PEPPER_PPB_FULLSCREEN_CONTAINER_IMPL_H_
45