Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(503)

Unified Diff: third_party/WebKit/Source/core/origin_trials/OriginTrialContextTest.cpp

Issue 1833063002: Store the list of trial tokens in OriginTrialContext (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/origin_trials/OriginTrialContextTest.cpp
diff --git a/third_party/WebKit/Source/core/origin_trials/OriginTrialContextTest.cpp b/third_party/WebKit/Source/core/origin_trials/OriginTrialContextTest.cpp
deleted file mode 100644
index c7ebd46f67b1f7324353791cd53fad67ca3affa6..0000000000000000000000000000000000000000
--- a/third_party/WebKit/Source/core/origin_trials/OriginTrialContextTest.cpp
+++ /dev/null
@@ -1,270 +0,0 @@
-// Copyright 2015 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/origin_trials/OriginTrialContext.h"
-
-#include "core/HTMLNames.h"
-#include "core/dom/DOMException.h"
-#include "core/dom/ExceptionCode.h"
-#include "core/frame/FrameView.h"
-#include "core/html/HTMLDocument.h"
-#include "core/html/HTMLHeadElement.h"
-#include "core/html/HTMLMetaElement.h"
-#include "core/testing/DummyPageHolder.h"
-#include "core/testing/NullExecutionContext.h"
-#include "platform/weborigin/KURL.h"
-#include "platform/weborigin/SecurityOrigin.h"
-#include "public/platform/WebTrialTokenValidator.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "wtf/Vector.h"
-
-namespace blink {
-namespace {
-
-const char kNonExistingFeatureName[] = "This feature does not exist";
-const char kFrobulateFeatureName[] = "Frobulate";
-const char kFrobulateEnabledOrigin[] = "https://www.example.com";
-const char kFrobulateEnabledOriginUnsecure[] = "http://www.example.com";
-
-// Trial token which will appear valid
-const char kGoodToken[] = "AnySignatureWillDo|https://www.example.com|Frobulate|2000000000";
-
-class MockTokenValidator : public WebTrialTokenValidator {
-public:
- MockTokenValidator()
- : m_response(false)
- , m_callCount(0)
- {
- }
- ~MockTokenValidator() override {}
-
- // blink::WebTrialTokenValidator implementation
- bool validateToken(const blink::WebString& token, const blink::WebSecurityOrigin& origin, const blink::WebString& featureName) override
- {
- m_callCount++;
- return m_response;
- }
-
- // Useful methods for controlling the validator
- void setResponse(bool response)
- {
- m_response = response;
- }
- void reset()
- {
- m_response = false;
- m_callCount = 0;
- }
- int callCount()
- {
- return m_callCount;
- }
-
-private:
- bool m_response;
- int m_callCount;
-
- DISALLOW_COPY_AND_ASSIGN(MockTokenValidator);
-};
-
-// Concrete subclass of OriginTrialContext which simply maintains a vector of
-// token strings to use for tests.
-class TestOriginTrialContext : public OriginTrialContext {
-public:
- explicit TestOriginTrialContext()
- : m_parent(adoptRefWillBeNoop(new NullExecutionContext()))
- {
- }
-
- ~TestOriginTrialContext() override = default;
-
- ExecutionContext* getExecutionContext() override { return m_parent.get(); }
-
- void addToken(const String& token)
- {
- m_tokens.append(token);
- }
-
- void updateSecurityOrigin(const String& origin)
- {
- KURL pageURL(ParsedURLString, origin);
- RefPtr<SecurityOrigin> pageOrigin = SecurityOrigin::create(pageURL);
- m_parent->setSecurityOrigin(pageOrigin);
- m_parent->setIsSecureContext(SecurityOrigin::isSecure(pageURL));
- }
-
- Vector<String> getTokens() override
- {
- Vector<String> tokens;
- for (String token : m_tokens) {
- tokens.append(token);
- }
- return tokens;
- }
-
- DEFINE_INLINE_VIRTUAL_TRACE()
- {
- visitor->trace(m_parent);
- OriginTrialContext::trace(visitor);
- }
-
-private:
- RefPtrWillBeMember<NullExecutionContext> m_parent;
- Vector<String> m_tokens;
-};
-
-} // namespace
-
-class OriginTrialContextTest : public ::testing::Test {
-protected:
- OriginTrialContextTest()
- : m_frameworkWasEnabled(RuntimeEnabledFeatures::experimentalFrameworkEnabled())
- , m_tokenValidator(adoptPtr(new MockTokenValidator()))
- , m_originTrialContext(adoptPtrWillBeNoop(new TestOriginTrialContext))
- {
- RuntimeEnabledFeatures::setExperimentalFrameworkEnabled(true);
- }
-
- ~OriginTrialContextTest()
- {
- RuntimeEnabledFeatures::setExperimentalFrameworkEnabled(m_frameworkWasEnabled);
- }
-
- MockTokenValidator* tokenValidator() { return m_tokenValidator.get(); }
-
- bool isFeatureEnabled(const String& origin, const String& featureName, const String& token, String* errorMessage)
- {
- m_originTrialContext->updateSecurityOrigin(origin);
- m_originTrialContext->addToken(token);
- return m_originTrialContext->isFeatureEnabled(featureName, errorMessage, tokenValidator());
- }
-
- bool isFeatureEnabledWithoutErrorMessage(const String& origin, const String& featureName, const char* token)
- {
- return isFeatureEnabled(origin, featureName, token, nullptr);
- }
-
-private:
- const bool m_frameworkWasEnabled;
- OwnPtr<MockTokenValidator> m_tokenValidator;
- OwnPtrWillBePersistent<TestOriginTrialContext> m_originTrialContext;
-};
-
-TEST_F(OriginTrialContextTest, EnabledNonExistingFeature)
-{
- String errorMessage;
- bool isNonExistingFeatureEnabled = isFeatureEnabled(kFrobulateEnabledOrigin,
- kNonExistingFeatureName,
- kGoodToken,
- &errorMessage);
- EXPECT_FALSE(isNonExistingFeatureEnabled);
- EXPECT_EQ(("The provided token(s) are not valid for the 'This feature does not exist' feature."), errorMessage);
-}
-
-TEST_F(OriginTrialContextTest, EnabledNonExistingFeatureWithoutErrorMessage)
-{
- bool isNonExistingFeatureEnabled = isFeatureEnabledWithoutErrorMessage(
- kFrobulateEnabledOrigin,
- kNonExistingFeatureName,
- kGoodToken);
- EXPECT_FALSE(isNonExistingFeatureEnabled);
-}
-
-// The feature should be enabled if a valid token for the origin is provided
-TEST_F(OriginTrialContextTest, EnabledSecureRegisteredOrigin)
-{
- String errorMessage;
- tokenValidator()->setResponse(true);
- bool isOriginEnabled = isFeatureEnabled(kFrobulateEnabledOrigin,
- kFrobulateFeatureName,
- kGoodToken,
- &errorMessage);
- EXPECT_TRUE(isOriginEnabled);
- EXPECT_TRUE(errorMessage.isEmpty()) << "Message should be empty, was: " << errorMessage;
- EXPECT_EQ(1, tokenValidator()->callCount());
-}
-
-// ... but if the browser says it's invalid for any reason, that's enough to
-// reject.
-TEST_F(OriginTrialContextTest, InvalidTokenResponseFromPlatform)
-{
- String errorMessage;
- tokenValidator()->setResponse(false);
- bool isOriginEnabled = isFeatureEnabled(kFrobulateEnabledOrigin,
- kFrobulateFeatureName,
- kGoodToken,
- &errorMessage);
- EXPECT_FALSE(isOriginEnabled);
- EXPECT_EQ(("The provided token(s) are not valid for the 'Frobulate' feature."), errorMessage);
- EXPECT_EQ(1, tokenValidator()->callCount());
-}
-
-TEST_F(OriginTrialContextTest, OnlyOneErrorMessageGenerated)
-{
- String errorMessage1;
- String errorMessage2;
- tokenValidator()->setResponse(false);
- isFeatureEnabled(kFrobulateEnabledOrigin, kFrobulateFeatureName, kGoodToken, &errorMessage1);
- isFeatureEnabled(kFrobulateEnabledOrigin, kFrobulateFeatureName, kGoodToken, &errorMessage2);
- EXPECT_FALSE(errorMessage1.isEmpty());
- EXPECT_TRUE(errorMessage2.isEmpty());
-}
-
-TEST_F(OriginTrialContextTest, ErrorMessageClearedIfStringReused)
-{
- String errorMessage;
- tokenValidator()->setResponse(false);
- isFeatureEnabled(kFrobulateEnabledOrigin, kFrobulateFeatureName, kGoodToken, &errorMessage);
- EXPECT_FALSE(errorMessage.isEmpty());
- isFeatureEnabled(kFrobulateEnabledOrigin, kFrobulateFeatureName, kGoodToken, &errorMessage);
- EXPECT_TRUE(errorMessage.isEmpty());
-}
-
-TEST_F(OriginTrialContextTest, ErrorMessageGeneratedPerFeature)
-{
- String errorMessage1;
- String errorMessage2;
- tokenValidator()->setResponse(false);
- isFeatureEnabled(kFrobulateEnabledOrigin, kFrobulateFeatureName, kGoodToken, &errorMessage1);
- isFeatureEnabled(kFrobulateEnabledOrigin, kNonExistingFeatureName, kGoodToken, &errorMessage2);
- EXPECT_FALSE(errorMessage1.isEmpty());
- EXPECT_FALSE(errorMessage2.isEmpty());
-}
-
-TEST_F(OriginTrialContextTest, EnabledSecureRegisteredOriginWithoutErrorMessage)
-{
- tokenValidator()->setResponse(true);
- bool isOriginEnabled = isFeatureEnabledWithoutErrorMessage(
- kFrobulateEnabledOrigin,
- kFrobulateFeatureName,
- kGoodToken);
- EXPECT_TRUE(isOriginEnabled);
- EXPECT_EQ(1, tokenValidator()->callCount());
-}
-
-// The feature should not be enabled if the origin is unsecure, even if a valid
-// token for the origin is provided
-TEST_F(OriginTrialContextTest, EnabledNonSecureRegisteredOrigin)
-{
- String errorMessage;
- bool isOriginEnabled = isFeatureEnabled(kFrobulateEnabledOriginUnsecure,
- kFrobulateFeatureName,
- kGoodToken,
- &errorMessage);
- EXPECT_FALSE(isOriginEnabled);
- EXPECT_EQ(0, tokenValidator()->callCount());
- EXPECT_FALSE(errorMessage.isEmpty());
-}
-
-TEST_F(OriginTrialContextTest, EnabledNonSecureRegisteredOriginWithoutErrorMessage)
-{
- bool isOriginEnabled = isFeatureEnabledWithoutErrorMessage(
- kFrobulateEnabledOriginUnsecure,
- kFrobulateFeatureName,
- kGoodToken);
- EXPECT_FALSE(isOriginEnabled);
- EXPECT_EQ(0, tokenValidator()->callCount());
-}
-
-} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698