1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef PAPPI_TESTS_TEST_FULLSCREEN_H_
6#define PAPPI_TESTS_TEST_FULLSCREEN_H_
7
8#include <string>
9
10#include "ppapi/cpp/fullscreen.h"
11#include "ppapi/cpp/graphics_2d.h"
12#include "ppapi/cpp/rect.h"
13#include "ppapi/cpp/size.h"
14#include "ppapi/tests/test_case.h"
15#include "ppapi/tests/test_utils.h"
16
17namespace pp {
18class InputEvent;
19}  // namespace pp
20
21struct ColorPremul { uint32_t A, R, G, B; };  // Use premultipled Alpha.
22
23class TestFullscreen : public TestCase {
24 public:
25  explicit TestFullscreen(TestingInstance* instance);
26
27  // TestCase implementation.
28  virtual bool Init();
29  virtual void RunTests(const std::string& filter);
30  virtual bool HandleInputEvent(const pp::InputEvent& event);
31  virtual void DidChangeView(const pp::View& view);
32
33  void CheckPluginPaint();
34
35 private:
36  std::string TestGetScreenSize();
37  std::string TestNormalToFullscreenToNormal();
38
39  void SimulateUserGesture();
40  void FailFullscreenTest(const std::string& error);
41  void FailNormalTest(const std::string& error);
42  void PassFullscreenTest();
43  void PassNormalTest();
44  bool PaintPlugin(pp::Size size, ColorPremul color);
45
46  bool GotError();
47  std::string Error();
48
49  std::string error_;
50
51  pp::Fullscreen screen_mode_;
52  pp::Size screen_size_;
53  pp::Rect normal_position_;
54  pp::Size painted_size_;
55  uint32_t painted_color_;
56
57  bool fullscreen_pending_;
58  bool normal_pending_;
59  pp::Graphics2D graphics2d_;
60
61  NestedEvent fullscreen_event_;
62  NestedEvent normal_event_;
63};
64
65#endif  // PAPPI_TESTS_TEST_FULLSCREEN_H_
66