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

Side by Side Diff: third_party/WebKit/Source/core/timing/PerformanceBaseTest.cpp

Issue 2509143002: Add Prerender type to NavigationType for nav timing 2 (Closed)
Patch Set: synced client Created 4 years 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/timing/Performance.h" 5 #include "core/timing/Performance.h"
6 6
7 #include "bindings/core/v8/PerformanceObserverCallback.h" 7 #include "bindings/core/v8/PerformanceObserverCallback.h"
8 #include "bindings/core/v8/V8BindingForTesting.h" 8 #include "bindings/core/v8/V8BindingForTesting.h"
9 #include "core/testing/DummyPageHolder.h"
9 #include "core/timing/PerformanceBase.h" 10 #include "core/timing/PerformanceBase.h"
10 #include "core/timing/PerformanceLongTaskTiming.h" 11 #include "core/timing/PerformanceLongTaskTiming.h"
11 #include "core/timing/PerformanceObserver.h" 12 #include "core/timing/PerformanceObserver.h"
12 #include "core/timing/PerformanceObserverInit.h" 13 #include "core/timing/PerformanceObserverInit.h"
13 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
14 15
15 namespace blink { 16 namespace blink {
16 17
17 class TestPerformanceBase : public PerformanceBase { 18 class TestPerformanceBase : public PerformanceBase {
18 public: 19 public:
(...skipping 16 matching lines...) Expand all
35 class PerformanceBaseTest : public ::testing::Test { 36 class PerformanceBaseTest : public ::testing::Test {
36 protected: 37 protected:
37 void initialize(ScriptState* scriptState) { 38 void initialize(ScriptState* scriptState) {
38 v8::Local<v8::Function> callback = 39 v8::Local<v8::Function> callback =
39 v8::Function::New(scriptState->context(), nullptr).ToLocalChecked(); 40 v8::Function::New(scriptState->context(), nullptr).ToLocalChecked();
40 m_base = new TestPerformanceBase(); 41 m_base = new TestPerformanceBase();
41 m_cb = PerformanceObserverCallback::create(scriptState, callback); 42 m_cb = PerformanceObserverCallback::create(scriptState, callback);
42 m_observer = PerformanceObserver::create(scriptState, m_base, m_cb); 43 m_observer = PerformanceObserver::create(scriptState, m_base, m_cb);
43 } 44 }
44 45
46 void SetUp() override {
47 m_pageHolder = DummyPageHolder::create(IntSize(800, 600));
48 }
49
45 int numPerformanceEntriesInObserver() { 50 int numPerformanceEntriesInObserver() {
46 return m_observer->m_performanceEntries.size(); 51 return m_observer->m_performanceEntries.size();
47 } 52 }
48 53
54 PerformanceNavigationTiming::NavigationType getNavigationType(
55 NavigationType type,
56 Document* document) {
57 return PerformanceBase::getNavigationType(type, document);
58 }
59
49 Persistent<TestPerformanceBase> m_base; 60 Persistent<TestPerformanceBase> m_base;
50 Persistent<PerformanceObserver> m_observer; 61 Persistent<PerformanceObserver> m_observer;
62 std::unique_ptr<DummyPageHolder> m_pageHolder;
51 Persistent<PerformanceObserverCallback> m_cb; 63 Persistent<PerformanceObserverCallback> m_cb;
52 }; 64 };
53 65
54 TEST_F(PerformanceBaseTest, Register) { 66 TEST_F(PerformanceBaseTest, Register) {
55 V8TestingScope scope; 67 V8TestingScope scope;
56 initialize(scope.getScriptState()); 68 initialize(scope.getScriptState());
57 69
58 EXPECT_EQ(0, m_base->numObservers()); 70 EXPECT_EQ(0, m_base->numObservers());
59 EXPECT_EQ(0, m_base->numActiveObservers()); 71 EXPECT_EQ(0, m_base->numActiveObservers());
60 72
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 entryTypeVec.append("longtask"); 116 entryTypeVec.append("longtask");
105 options.setEntryTypes(entryTypeVec); 117 options.setEntryTypes(entryTypeVec);
106 m_observer->observe(options, exceptionState); 118 m_observer->observe(options, exceptionState);
107 119
108 EXPECT_TRUE(m_base->hasPerformanceObserverFor(PerformanceEntry::LongTask)); 120 EXPECT_TRUE(m_base->hasPerformanceObserverFor(PerformanceEntry::LongTask));
109 // Add a long task entry 121 // Add a long task entry
110 m_base->addLongTaskTiming(1234, 5678, "same-origin", "www.foo.com/bar", "", 122 m_base->addLongTaskTiming(1234, 5678, "same-origin", "www.foo.com/bar", "",
111 ""); 123 "");
112 EXPECT_EQ(1, numPerformanceEntriesInObserver()); // added an entry 124 EXPECT_EQ(1, numPerformanceEntriesInObserver()); // added an entry
113 } 125 }
126
127 TEST_F(PerformanceBaseTest, GetNavigationType) {
128 m_pageHolder->page().setVisibilityState(PageVisibilityStatePrerender, false);
129 PerformanceNavigationTiming::NavigationType returnedType =
130 getNavigationType(NavigationTypeBackForward, &m_pageHolder->document());
131 EXPECT_EQ(returnedType,
132 PerformanceNavigationTiming::NavigationType::Prerender);
133
134 m_pageHolder->page().setVisibilityState(PageVisibilityStateHidden, false);
135 returnedType =
136 getNavigationType(NavigationTypeBackForward, &m_pageHolder->document());
137 EXPECT_EQ(returnedType,
138 PerformanceNavigationTiming::NavigationType::BackForward);
139
140 m_pageHolder->page().setVisibilityState(PageVisibilityStateVisible, false);
141 returnedType = getNavigationType(NavigationTypeFormResubmitted,
142 &m_pageHolder->document());
143 EXPECT_EQ(returnedType,
144 PerformanceNavigationTiming::NavigationType::Navigate);
145 }
114 } // namespace blink 146 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698