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)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_SHARED_IMPL_PPB_VIEW_SHARED_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_SHARED_IMPL_PPB_VIEW_SHARED_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_rect.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_size.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/shared_impl/resource.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/thunk/ppb_view_api.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ppapi {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// If you add to this struct, be sure to update the serialization in
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ppapi_messages.h.
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PPAPI_SHARED_EXPORT ViewData {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ViewData();
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~ViewData();
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool Equals(const ViewData& other) const;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Rect rect;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool is_fullscreen;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool is_page_visible;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Rect clip_rect;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  float device_scale;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  float css_scale;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PPAPI_SHARED_EXPORT PPB_View_Shared
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : public Resource,
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public thunk::PPB_View_API {
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PPB_View_Shared(ResourceObjectType type,
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                  PP_Instance instance,
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                  const ViewData& data);
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~PPB_View_Shared();
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Resource overrides.
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual thunk::PPB_View_API* AsPPB_View_API() OVERRIDE;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // PPB_View_API implementation.
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const ViewData& GetData() const OVERRIDE;
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual PP_Bool GetRect(PP_Rect* viewport) const OVERRIDE;
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual PP_Bool IsFullscreen() const OVERRIDE;
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual PP_Bool IsVisible() const OVERRIDE;
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual PP_Bool IsPageVisible() const OVERRIDE;
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual PP_Bool GetClipRect(PP_Rect* clip) const
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      OVERRIDE;
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual float GetDeviceScale() const OVERRIDE;
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual float GetCSSScale() const OVERRIDE;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ViewData data_;
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(PPB_View_Shared);
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ppapi
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // PPAPI_SHARED_IMPL_PPB_VIEW_SHARED_H_
64