Commit 8c2be4d1 authored by rajendrant's avatar rajendrant Committed by Commit Bot

Populate data reduction proxy page ID for an alternate path

This path seems to be used in some webdriver tests. The populated page
ID will be sent in the data reduction proxy pingbacks.

Bug: 951913
Change-Id: Ie246963027af6ea8d3219c00c23012fc98787e9e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1574215Reviewed-by: default avatarRyan Sturm <ryansturm@chromium.org>
Reviewed-by: default avatarJohn Abd-El-Malek <jam@chromium.org>
Commit-Queue: rajendrant <rajendrant@chromium.org>
Cr-Commit-Position: refs/heads/master@{#652647}
parent 8afa9297
...@@ -225,6 +225,22 @@ PreviewsLitePageDecider::MaybeCreateThrottleFor( ...@@ -225,6 +225,22 @@ PreviewsLitePageDecider::MaybeCreateThrottleFor(
return nullptr; return nullptr;
} }
// static
uint64_t PreviewsLitePageDecider::GeneratePageIdForWebContents(
content::WebContents* web_contents) {
return PreviewsLitePageDecider::GeneratePageIdForProfile(
Profile::FromBrowserContext(web_contents->GetBrowserContext()));
}
// static
uint64_t PreviewsLitePageDecider::GeneratePageIdForProfile(Profile* profile) {
PreviewsService* previews_service =
PreviewsServiceFactory::GetForProfile(profile);
return previews_service
? previews_service->previews_lite_page_decider()->GeneratePageID()
: 0;
}
void PreviewsLitePageDecider::OnProxyRequestHeadersChanged( void PreviewsLitePageDecider::OnProxyRequestHeadersChanged(
const net::HttpRequestHeaders& headers) { const net::HttpRequestHeaders& headers) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
......
...@@ -22,11 +22,14 @@ ...@@ -22,11 +22,14 @@
#include "net/http/http_request_headers.h" #include "net/http/http_request_headers.h"
class PrefService; class PrefService;
class Profile;
namespace content { namespace content {
class BrowserContext; class BrowserContext;
class NavigationHandle; class NavigationHandle;
class NavigationThrottle; class NavigationThrottle;
class WebContents;
} // namespace content } // namespace content
namespace user_prefs { namespace user_prefs {
...@@ -53,6 +56,11 @@ class PreviewsLitePageDecider ...@@ -53,6 +56,11 @@ class PreviewsLitePageDecider
static std::unique_ptr<content::NavigationThrottle> MaybeCreateThrottleFor( static std::unique_ptr<content::NavigationThrottle> MaybeCreateThrottleFor(
content::NavigationHandle* handle); content::NavigationHandle* handle);
// Helpers to generate page ID.
static uint64_t GeneratePageIdForWebContents(
content::WebContents* web_contents);
static uint64_t GeneratePageIdForProfile(Profile* profile);
// Removes |this| as a DataReductionProxySettingsObserver. // Removes |this| as a DataReductionProxySettingsObserver.
void Shutdown(); void Shutdown();
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "base/strings/string_number_conversions.h" #include "base/strings/string_number_conversions.h"
#include "base/test/scoped_task_environment.h" #include "base/test/scoped_task_environment.h"
#include "base/test/simple_test_tick_clock.h" #include "base/test/simple_test_tick_clock.h"
#include "chrome/browser/renderer_host/chrome_navigation_ui_data.h"
#include "chrome/test/base/chrome_render_view_host_test_harness.h" #include "chrome/test/base/chrome_render_view_host_test_harness.h"
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.h" #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.h"
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_service.h" #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_service.h"
...@@ -21,6 +22,8 @@ ...@@ -21,6 +22,8 @@
#include "content/public/browser/browser_context.h" #include "content/public/browser/browser_context.h"
#include "content/public/browser/navigation_handle.h" #include "content/public/browser/navigation_handle.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/browser/web_contents_user_data.h"
#include "content/public/test/web_contents_tester.h" #include "content/public/test/web_contents_tester.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
...@@ -250,3 +253,52 @@ TEST_F(PreviewsLitePageDeciderPrefTest, TestDRPEnabledThenNotify) { ...@@ -250,3 +253,52 @@ TEST_F(PreviewsLitePageDeciderPrefTest, TestDRPEnabledThenNotify) {
EXPECT_FALSE(decider->NeedsToNotifyUser()); EXPECT_FALSE(decider->NeedsToNotifyUser());
} }
class TestPreviewsLitePageDeciderWebContentsObserver
: public content::WebContentsObserver,
public content::WebContentsUserData<
TestPreviewsLitePageDeciderWebContentsObserver> {
public:
explicit TestPreviewsLitePageDeciderWebContentsObserver(
content::WebContents* web_contents)
: content::WebContentsObserver(web_contents) {}
~TestPreviewsLitePageDeciderWebContentsObserver() override {}
uint64_t last_navigation_page_id() { return last_navigation_page_id_; }
void DidFinishNavigation(
content::NavigationHandle* navigation_handle) override {
auto* chrome_navigation_ui_data =
static_cast<const ChromeNavigationUIData*>(
navigation_handle->GetNavigationUIData());
last_navigation_page_id_ =
chrome_navigation_ui_data->data_reduction_proxy_page_id();
}
private:
friend class content::WebContentsUserData<
TestPreviewsLitePageDeciderWebContentsObserver>;
uint64_t last_navigation_page_id_ = 0;
WEB_CONTENTS_USER_DATA_KEY_DECL();
};
WEB_CONTENTS_USER_DATA_KEY_IMPL(TestPreviewsLitePageDeciderWebContentsObserver)
TEST_F(PreviewsLitePageDeciderPrefTest, TestDRPPageIDIncremented) {
TestPreviewsLitePageDeciderWebContentsObserver::CreateForWebContents(
web_contents());
content::WebContentsTester::For(web_contents())
->NavigateAndCommit(GURL(kTestUrl));
uint64_t last_navigation_page_id =
TestPreviewsLitePageDeciderWebContentsObserver::FromWebContents(
web_contents())
->last_navigation_page_id();
// Tests that the page ID is set for the last navigation, and subsequent
// generates give an increment.
EXPECT_NE(static_cast<uint64_t>(0U), last_navigation_page_id);
EXPECT_EQ(
static_cast<uint64_t>(last_navigation_page_id + 1U),
PreviewsLitePageDecider::GeneratePageIdForWebContents(web_contents()));
}
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "chrome/browser/prerender/prerender_contents.h" #include "chrome/browser/prerender/prerender_contents.h"
#include "chrome/browser/prerender/prerender_histograms.h" #include "chrome/browser/prerender/prerender_histograms.h"
#include "chrome/browser/previews/previews_lite_page_decider.h"
#include "content/public/browser/navigation_handle.h" #include "content/public/browser/navigation_handle.h"
#include "extensions/buildflags/buildflags.h" #include "extensions/buildflags/buildflags.h"
#include "ui/base/window_open_disposition.h" #include "ui/base/window_open_disposition.h"
...@@ -39,6 +40,8 @@ ChromeNavigationUIData::ChromeNavigationUIData( ...@@ -39,6 +40,8 @@ ChromeNavigationUIData::ChromeNavigationUIData(
prerender::PrerenderHistograms::GetHistogramPrefix( prerender::PrerenderHistograms::GetHistogramPrefix(
prerender_contents->origin()); prerender_contents->origin());
} }
data_reduction_proxy_page_id_ =
PreviewsLitePageDecider::GeneratePageIdForWebContents(web_contents);
} }
ChromeNavigationUIData::~ChromeNavigationUIData() {} ChromeNavigationUIData::~ChromeNavigationUIData() {}
......
...@@ -20,8 +20,6 @@ ...@@ -20,8 +20,6 @@
#include "chrome/browser/prerender/prerender_manager.h" #include "chrome/browser/prerender/prerender_manager.h"
#include "chrome/browser/prerender/prerender_manager_factory.h" #include "chrome/browser/prerender/prerender_manager_factory.h"
#include "chrome/browser/previews/previews_lite_page_decider.h" #include "chrome/browser/previews/previews_lite_page_decider.h"
#include "chrome/browser/previews/previews_service.h"
#include "chrome/browser/previews/previews_service_factory.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/renderer_host/chrome_navigation_ui_data.h" #include "chrome/browser/renderer_host/chrome_navigation_ui_data.h"
#include "chrome/browser/signin/signin_promo.h" #include "chrome/browser/signin/signin_promo.h"
...@@ -339,15 +337,11 @@ void LoadURLInContents(WebContents* target_contents, ...@@ -339,15 +337,11 @@ void LoadURLInContents(WebContents* target_contents,
// |frame_tree_node_id| is kNoFrameTreeNodeId for main frame navigations. // |frame_tree_node_id| is kNoFrameTreeNodeId for main frame navigations.
if (params->frame_tree_node_id == if (params->frame_tree_node_id ==
content::RenderFrameHost::kNoFrameTreeNodeId) { content::RenderFrameHost::kNoFrameTreeNodeId) {
PreviewsService* previews_service =
PreviewsServiceFactory::GetForProfile(GetSourceProfile(params));
uint64_t previews_page_id =
previews_service
? previews_service->previews_lite_page_decider()->GeneratePageID()
: 0;
load_url_params.navigation_ui_data = load_url_params.navigation_ui_data =
ChromeNavigationUIData::CreateForMainFrameNavigation( ChromeNavigationUIData::CreateForMainFrameNavigation(
target_contents, params->disposition, previews_page_id); target_contents, params->disposition,
PreviewsLitePageDecider::GeneratePageIdForProfile(
GetSourceProfile(params)));
} }
if (params->uses_post) { if (params->uses_post) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment