1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_VR_TEST_UI_TEST_H_
#define CHROME_BROWSER_VR_TEST_UI_TEST_H_
#include <vector>
#include "base/memory/raw_ptr.h"
#include "base/time/time.h"
#include "chrome/browser/vr/elements/ui_element_name.h"
#include "chrome/browser/vr/target_property.h"
#include "chrome/browser/vr/ui.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/skia/include/core/SkColor.h"
namespace vr {
class UiScene;
struct Model;
class UiTest : public testing::Test {
public:
UiTest();
~UiTest() override;
void SetUp() override;
protected:
// Check whether a named element is visible. In this test, visibilility is the
// target visibily, not the current (possibly animating) visibility. This
// makes it easier to test the visibility of elements in response to state
// changes.
bool IsVisible(UiElementName name) const;
// Return false if not all elements in the set match the specified visibility
// state. Other elements are ignored.
bool VerifyVisibility(const std::set<UiElementName>& names,
bool visible) const;
// Check that only a specific set of elements is visible, and others are not.
void VerifyOnlyElementsVisible(const std::string& trace_context,
const std::set<UiElementName>& names) const;
// Advances current_time_ by delta. This is done by running the next frame,
// then jumping time ahead to the final time. Generally, the UI should not
// require all intermediate frames to be called. Tests that require this
// should simulate the required intermediate frames.
bool RunForMs(float milliseconds);
bool RunForSeconds(float seconds);
// Advances time by one frame (16 ms) and calls 'OnBeginFrame()'
bool AdvanceFrame();
std::unique_ptr<Ui> ui_instance_;
raw_ptr<UiInterface, DanglingUntriaged> ui_ = nullptr;
raw_ptr<Model, DanglingUntriaged> model_ = nullptr;
raw_ptr<UiScene, DanglingUntriaged> scene_ = nullptr;
private:
bool RunFor(base::TimeDelta delta);
bool OnBeginFrame() const;
base::TimeTicks current_time_;
};
} // namespace vr
#endif // CHROME_BROWSER_VR_TEST_UI_TEST_H_
|