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

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

Issue 2647643004: Report nav timing 2 instance as soon as it's requested. (Closed)
Patch Set: make a copy of navigationTimingInfo for ResourceFetcher Created 3 years, 10 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 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/dom/TaskRunnerHelper.h" 9 #include "core/dom/TaskRunnerHelper.h"
10 #include "core/testing/DummyPageHolder.h" 10 #include "core/testing/DummyPageHolder.h"
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 m_pageHolder = DummyPageHolder::create(IntSize(800, 600)); 55 m_pageHolder = DummyPageHolder::create(IntSize(800, 600));
56 m_executionContext = new NullExecutionContext(); 56 m_executionContext = new NullExecutionContext();
57 } 57 }
58 58
59 ExecutionContext* getExecutionContext() { return m_executionContext.get(); } 59 ExecutionContext* getExecutionContext() { return m_executionContext.get(); }
60 60
61 int numPerformanceEntriesInObserver() { 61 int numPerformanceEntriesInObserver() {
62 return m_observer->m_performanceEntries.size(); 62 return m_observer->m_performanceEntries.size();
63 } 63 }
64 64
65 PerformanceNavigationTiming::NavigationType getNavigationType(
66 NavigationType type,
67 Document* document) {
68 return PerformanceBase::getNavigationType(type, document);
69 }
70
71 static bool allowsTimingRedirect( 65 static bool allowsTimingRedirect(
72 const Vector<ResourceResponse>& redirectChain, 66 const Vector<ResourceResponse>& redirectChain,
73 const ResourceResponse& finalResponse, 67 const ResourceResponse& finalResponse,
74 const SecurityOrigin& initiatorSecurityOrigin, 68 const SecurityOrigin& initiatorSecurityOrigin,
75 ExecutionContext* context) { 69 ExecutionContext* context) {
76 return PerformanceBase::allowsTimingRedirect( 70 return PerformanceBase::allowsTimingRedirect(
77 redirectChain, finalResponse, initiatorSecurityOrigin, context); 71 redirectChain, finalResponse, initiatorSecurityOrigin, context);
78 } 72 }
79 73
80 Persistent<TestPerformanceBase> m_base; 74 Persistent<TestPerformanceBase> m_base;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 options.setEntryTypes(entryTypeVec); 132 options.setEntryTypes(entryTypeVec);
139 m_observer->observe(options, exceptionState); 133 m_observer->observe(options, exceptionState);
140 134
141 EXPECT_TRUE(m_base->hasPerformanceObserverFor(PerformanceEntry::LongTask)); 135 EXPECT_TRUE(m_base->hasPerformanceObserverFor(PerformanceEntry::LongTask));
142 // Add a long task entry 136 // Add a long task entry
143 m_base->addLongTaskTiming(1234, 5678, "same-origin", "www.foo.com/bar", "", 137 m_base->addLongTaskTiming(1234, 5678, "same-origin", "www.foo.com/bar", "",
144 ""); 138 "");
145 EXPECT_EQ(1, numPerformanceEntriesInObserver()); // added an entry 139 EXPECT_EQ(1, numPerformanceEntriesInObserver()); // added an entry
146 } 140 }
147 141
148 TEST_F(PerformanceBaseTest, GetNavigationType) {
149 m_pageHolder->page().setVisibilityState(PageVisibilityStatePrerender, false);
150 PerformanceNavigationTiming::NavigationType returnedType =
151 getNavigationType(NavigationTypeBackForward, &m_pageHolder->document());
152 EXPECT_EQ(returnedType,
153 PerformanceNavigationTiming::NavigationType::Prerender);
154
155 m_pageHolder->page().setVisibilityState(PageVisibilityStateHidden, false);
156 returnedType =
157 getNavigationType(NavigationTypeBackForward, &m_pageHolder->document());
158 EXPECT_EQ(returnedType,
159 PerformanceNavigationTiming::NavigationType::BackForward);
160
161 m_pageHolder->page().setVisibilityState(PageVisibilityStateVisible, false);
162 returnedType = getNavigationType(NavigationTypeFormResubmitted,
163 &m_pageHolder->document());
164 EXPECT_EQ(returnedType,
165 PerformanceNavigationTiming::NavigationType::Navigate);
166 }
167
168 TEST_F(PerformanceBaseTest, AllowsTimingRedirect) { 142 TEST_F(PerformanceBaseTest, AllowsTimingRedirect) {
169 // When there are no cross-origin redirects. 143 // When there are no cross-origin redirects.
170 AtomicString originDomain = "http://127.0.0.1:8000"; 144 AtomicString originDomain = "http://127.0.0.1:8000";
171 Vector<ResourceResponse> redirectChain; 145 Vector<ResourceResponse> redirectChain;
172 KURL url(ParsedURLString, originDomain + "/foo.html"); 146 KURL url(ParsedURLString, originDomain + "/foo.html");
173 ResourceResponse finalResponse; 147 ResourceResponse finalResponse;
174 finalResponse.setURL(url); 148 finalResponse.setURL(url);
175 ResourceResponse redirectResponse1; 149 ResourceResponse redirectResponse1;
176 redirectResponse1.setURL(url); 150 redirectResponse1.setURL(url);
177 ResourceResponse redirectResponse2; 151 ResourceResponse redirectResponse2;
(...skipping 16 matching lines...) Expand all
194 168
195 // When cross-origin redirect opts in. 169 // When cross-origin redirect opts in.
196 redirectChain.back().setHTTPHeaderField(HTTPNames::Timing_Allow_Origin, 170 redirectChain.back().setHTTPHeaderField(HTTPNames::Timing_Allow_Origin,
197 originDomain); 171 originDomain);
198 EXPECT_TRUE(allowsTimingRedirect(redirectChain, finalResponse, 172 EXPECT_TRUE(allowsTimingRedirect(redirectChain, finalResponse,
199 *securityOrigin.get(), 173 *securityOrigin.get(),
200 getExecutionContext())); 174 getExecutionContext()));
201 } 175 }
202 176
203 } // namespace blink 177 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698