blob: 9bb80a4304e2e3fa1f2a5ff96ce8bdad572eb654 [file] [log] [blame]
// Copyright 2014 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.
#include <stdint.h>
#include <string>
#include "ppapi/cpp/compositor.h"
#include "ppapi/cpp/compositor_layer.h"
#include "ppapi/cpp/private/flash_fullscreen.h"
#include "ppapi/cpp/size.h"
#include "ppapi/tests/test_case.h"
#include "ppapi/tests/test_utils.h"
#include "ppapi/utility/completion_callback_factory.h"
// This is a special TestCase whose purpose is *not* to test the correctness of
// the Pepper APIs. Instead, this is a simulated Flash plugin, used to place
// the browser window and other UI elements into Flash Fullscreen mode for
// layout, event, focus, etc. testing. See
// chrome/browser/ui/exclusive_access/
// At start, this simulated Flash plugin will enter fullscreen and paint a green
// color fill. From there, it will respond to mouse clicks or key presses by
// toggling its fill color between red and blue. The browser test reads these
// color changes to detect the desired behavior.
class TestFlashFullscreenForBrowserUI : public TestCase {
explicit TestFlashFullscreenForBrowserUI(TestingInstance* instance);
~TestFlashFullscreenForBrowserUI() override;
// TestCase implementation.
bool Init() override;
void RunTests(const std::string& filter) override;
void DidChangeView(const pp::View& view) override;
bool HandleInputEvent(const pp::InputEvent& event) override;
std::string TestEnterFullscreen();
void Paint(int32_t last_compositor_result);
void SimulateUserGesture();
bool GotError();
std::string Error();
void FailFullscreenTest(const std::string& error);
std::string error_;
pp::FlashFullscreen screen_mode_;
NestedEvent view_change_event_;
pp::Compositor compositor_;
pp::Size layer_size_;
pp::CompositorLayer color_layer_;
pp::Rect normal_position_;
int num_trigger_events_;
bool request_fullscreen_;