blob: 012498fd4910732bfe87f415a45de1d69ee8adf1 [file] [log] [blame]
// Copyright 2016 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 "core/dom/DocumentUserGestureToken.h"
#include "core/testing/DummyPageHolder.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace blink {
class DocumentUserGestureTokenTest : public ::testing::Test {
public:
void SetUp() override {
m_dummyPageHolder = DummyPageHolder::create(IntSize(800, 600));
ASSERT_FALSE(document().frame()->hasReceivedUserGesture());
}
Document& document() const { return m_dummyPageHolder->document(); }
private:
std::unique_ptr<DummyPageHolder> m_dummyPageHolder;
};
TEST_F(DocumentUserGestureTokenTest, NoGesture) {
// A nullptr Document* will not set user gesture state.
DocumentUserGestureToken::create(nullptr);
EXPECT_FALSE(document().frame()->hasReceivedUserGesture());
}
TEST_F(DocumentUserGestureTokenTest, PossiblyExisting) {
// A non-null Document* will set state, but a subsequent nullptr Document*
// token will not override it.
DocumentUserGestureToken::create(&document());
EXPECT_TRUE(document().frame()->hasReceivedUserGesture());
DocumentUserGestureToken::create(nullptr);
EXPECT_TRUE(document().frame()->hasReceivedUserGesture());
}
TEST_F(DocumentUserGestureTokenTest, NewGesture) {
// UserGestureToken::Status doesn't impact Document gesture state.
DocumentUserGestureToken::create(&document(), UserGestureToken::NewGesture);
EXPECT_TRUE(document().frame()->hasReceivedUserGesture());
}
} // namespace blink