Commit 0c424110 authored by Robert Ogden's avatar Robert Ogden Committed by Commit Bot

Get the DRP session_key when it is unavailable from the request headers

The DRP session key may not be available from the request headers. If it
isn't, get it from the UI thread instead.

Bug: 952523
Change-Id: I82befab8a97b5c463db37b0d5e82edc640d9af18
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1576154Reviewed-by: default avatarRyan Sturm <ryansturm@chromium.org>
Commit-Queue: Robert Ogden <robertogden@chromium.org>
Cr-Commit-Position: refs/heads/master@{#652858}
parent d721da6c
......@@ -14,6 +14,8 @@
#include "base/optional.h"
#include "base/strings/stringprintf.h"
#include "chrome/browser/content_settings/cookie_settings_factory.h"
#include "chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings.h"
#include "chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings_factory.h"
#include "chrome/browser/previews/previews_lite_page_decider.h"
#include "chrome/browser/previews/previews_lite_page_navigation_throttle.h"
#include "chrome/browser/previews/previews_lite_page_navigation_throttle_manager.h"
......@@ -178,14 +180,23 @@ CreateServerLitePageInfoFromNavigationHandle(
base::Optional<std::string> session_key =
data_reduction_proxy::DataReductionProxyRequestOptions::
GetSessionKeyFromRequestHeaders(headers);
if (session_key) {
server_lite_page_info->drp_session_key = session_key.value();
if (!session_key) {
// This is a less-authoritative source to get the session key from since
// there is a very small chance that the proxy config has been updated
// between sending the original request and now. However, since this is only
// for metrics purposes, it is better than not having any session key.
DataReductionProxyChromeSettings* drp_settings =
DataReductionProxyChromeSettingsFactory::GetForBrowserContext(
navigation_handle->GetWebContents()->GetBrowserContext());
session_key = data_reduction_proxy::DataReductionProxyRequestOptions::
GetSessionKeyFromRequestHeaders(drp_settings->GetProxyRequestHeaders());
}
if (session_key)
server_lite_page_info->drp_session_key = session_key.value();
DCHECK_NE(server_lite_page_info->drp_session_key, "");
server_lite_page_info->status = ServerLitePageStatus::kSuccess;
server_lite_page_info->restart_count = 0;
return server_lite_page_info;
}
......
......@@ -1495,11 +1495,6 @@ IN_PROC_BROWSER_TEST_P(PreviewsLitePageServerBrowserTest,
EXPECT_FALSE(data->lofi_policy_received());
EXPECT_FALSE(data->lofi_received());
EXPECT_FALSE(data->was_cached_data_reduction_proxy_response());
// TODO(crbug.com/952523): Fix and remove this early exit.
if (GetParam())
continue;
EXPECT_EQ(data->page_id().value(), expected_page_id);
EXPECT_EQ(data->page_id().value(), got_page_id());
EXPECT_EQ(data->session_key(), expected_session_key);
......
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