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

Unified Diff: chrome/browser/predictors/resource_prefetch_predictor_browsertest.cc

Issue 2561493003: Rework of ResourcePrefetchPredictor browser tests infrastructure. (Closed)
Patch Set: Post-Review Modifications 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/predictors/resource_prefetch_predictor_browsertest.cc
diff --git a/chrome/browser/predictors/resource_prefetch_predictor_browsertest.cc b/chrome/browser/predictors/resource_prefetch_predictor_browsertest.cc
index 91e3d93786e17c3e8a87925d0a4301fed1fa73b3..c47ea93cf10e9715299975023f41e6d747d13543 100644
--- a/chrome/browser/predictors/resource_prefetch_predictor_browsertest.cc
+++ b/chrome/browser/predictors/resource_prefetch_predictor_browsertest.cc
@@ -91,20 +91,44 @@ class InitializationObserver : public TestObserver {
using PageRequestSummary = ResourcePrefetchPredictor::PageRequestSummary;
using URLRequestSummary = ResourcePrefetchPredictor::URLRequestSummary;
-std::vector<URLRequestSummary> GetUniqueSubresources(
- const PageRequestSummary& summary) {
- std::vector<URLRequestSummary> subresources(summary.subresource_requests);
- std::stable_sort(subresources.begin(), subresources.end(),
+void RemoveDuplicateSubresources(std::vector<URLRequestSummary>* subresources) {
+ std::stable_sort(subresources->begin(), subresources->end(),
[](const URLRequestSummary& x, const URLRequestSummary& y) {
return x.resource_url < y.resource_url;
});
- subresources.erase(
- std::unique(subresources.begin(), subresources.end(),
+ subresources->erase(
+ std::unique(subresources->begin(), subresources->end(),
[](const URLRequestSummary& x, const URLRequestSummary& y) {
return x.resource_url == y.resource_url;
}),
- subresources.end());
- return subresources;
+ subresources->end());
+}
+
+// Fill a NavigationID with "empty" data that does not trigger
+// the is_valid DCHECK(). Allows comparing.
+void SetValidNavigationID(NavigationID* navigation_id) {
+ navigation_id->render_process_id = 0;
+ navigation_id->render_frame_id = 0;
+ navigation_id->main_frame_url = GURL("http://127.0.0.1");
+}
+
+// Does a custom comparison of subresources of URLRequestSummary
+// and fail the test if the expectation is not met.
+void CompareSubresources(std::vector<URLRequestSummary> actual_subresources,
+ std::vector<URLRequestSummary> expected_subresources,
+ bool match_navigation_id) {
+ // Duplicate resources can be observed in a single navigation but
+ // ResourcePrefetchPredictor only cares about the first occurrence of each.
+ RemoveDuplicateSubresources(&actual_subresources);
+
+ if (!match_navigation_id) {
+ for (auto& subresource : actual_subresources)
+ SetValidNavigationID(&subresource.navigation_id);
+ for (auto& subresource : expected_subresources)
+ SetValidNavigationID(&subresource.navigation_id);
+ }
+ EXPECT_THAT(actual_subresources,
+ testing::UnorderedElementsAreArray(expected_subresources));
}
} // namespace
@@ -119,10 +143,12 @@ class ResourcePrefetchPredictorTestObserver : public TestObserver {
explicit ResourcePrefetchPredictorTestObserver(
ResourcePrefetchPredictor* predictor,
const size_t expected_url_visit_count,
- const PageRequestSummary& expected_summary)
+ const PageRequestSummary& expected_summary,
+ bool match_navigation_id)
: TestObserver(predictor),
url_visit_count_(expected_url_visit_count),
- summary_(expected_summary) {}
+ summary_(expected_summary),
+ match_navigation_id_(match_navigation_id) {}
// TestObserver:
void OnNavigationLearned(size_t url_visit_count,
@@ -130,12 +156,8 @@ class ResourcePrefetchPredictorTestObserver : public TestObserver {
EXPECT_EQ(url_visit_count, url_visit_count_);
EXPECT_EQ(summary.main_frame_url, summary_.main_frame_url);
EXPECT_EQ(summary.initial_url, summary_.initial_url);
- // Duplicate resources can be observed in a single navigation but
- // ResourcePrefetchPredictor only cares about the first occurrence of each.
- std::vector<ResourcePrefetchPredictor::URLRequestSummary> subresources =
- GetUniqueSubresources(summary);
- EXPECT_THAT(subresources, testing::UnorderedElementsAreArray(
- summary_.subresource_requests));
+ CompareSubresources(summary.subresource_requests,
+ summary_.subresource_requests, match_navigation_id_);
run_loop_.Quit();
}
@@ -145,6 +167,7 @@ class ResourcePrefetchPredictorTestObserver : public TestObserver {
base::RunLoop run_loop_;
size_t url_visit_count_;
PageRequestSummary summary_;
+ bool match_navigation_id_;
DISALLOW_COPY_AND_ASSIGN(ResourcePrefetchPredictorTestObserver);
};
@@ -173,7 +196,9 @@ class ResourcePrefetchPredictorBrowserTest : public InProcessBrowserTest {
EnsurePredictorInitialized();
}
- void NavigateToURLAndCheckSubresources(const GURL& main_frame_url) {
+ void NavigateToURLAndCheckSubresources(
+ const GURL& main_frame_url,
+ WindowOpenDisposition disposition = WindowOpenDisposition::CURRENT_TAB) {
GURL endpoint_url = GetRedirectEndpoint(main_frame_url);
std::vector<URLRequestSummary> url_request_summaries;
for (const auto& kv : resources_) {
@@ -185,8 +210,11 @@ class ResourcePrefetchPredictorBrowserTest : public InProcessBrowserTest {
ResourcePrefetchPredictorTestObserver observer(
predictor_, UpdateAndGetVisitCount(main_frame_url),
CreatePageRequestSummary(endpoint_url.spec(), main_frame_url.spec(),
- url_request_summaries));
- ui_test_utils::NavigateToURL(browser(), main_frame_url);
+ url_request_summaries),
+ true); // Matching navigation id by default
+ ui_test_utils::NavigateToURLWithDisposition(
+ browser(), main_frame_url, disposition,
+ ui_test_utils::BROWSER_TEST_NONE);
observer.Wait();
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698