Commit 69e7363c authored by Becca Hughes's avatar Becca Hughes Committed by Commit Bot

Track Kaleidoscope derived tabs

This will be used for watchtime tracking (in a sep. CL).

Change-Id: I4d3c58b307e4f7e2bf76010a81660defca399f92
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2544930
Commit-Queue: Becca Hughes <beccahughes@chromium.org>
Reviewed-by: default avatarTommy Steimel <steimel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#828454}
parent 1e6b827e
......@@ -65,6 +65,18 @@ void KaleidoscopeTabHelper::ReadyToCommitNavigation(
RecordMetricsOnNavigation(handle);
SetAutoplayOnNavigation(handle);
if (IsOpenedFromKaleidoscope(handle)) {
is_kaleidoscope_derived_ = true;
return;
}
auto current_origin =
url::Origin::Create(handle->GetWebContents()->GetLastCommittedURL());
auto new_origin = url::Origin::Create(handle->GetURL());
if (!current_origin.IsSameOriginWith(new_origin)) {
is_kaleidoscope_derived_ = false;
}
}
void KaleidoscopeTabHelper::RecordMetricsOnNavigation(
......
......@@ -28,6 +28,10 @@ class KaleidoscopeTabHelper
// content::WebContentsObserver:
void ReadyToCommitNavigation(content::NavigationHandle* handle) override;
// A tab is Kaleidoscope derived if the tab was opened by Kaleidoscope and
// remains on the same origin.
bool IsKaleidoscopeDerived() const { return is_kaleidoscope_derived_; }
private:
friend class content::WebContentsUserData<KaleidoscopeTabHelper>;
......@@ -36,6 +40,8 @@ class KaleidoscopeTabHelper
void RecordMetricsOnNavigation(content::NavigationHandle* handle);
void SetAutoplayOnNavigation(content::NavigationHandle* handle);
bool is_kaleidoscope_derived_ = false;
WEB_CONTENTS_USER_DATA_KEY_DECL();
};
......
......@@ -57,6 +57,10 @@ class KaleidoscopeTabHelperBrowserTest : public InProcessBrowserTest {
return browser()->tab_strip_model()->GetActiveWebContents();
}
KaleidoscopeTabHelper* GetTabHelper() {
return KaleidoscopeTabHelper::FromWebContents(GetWebContents());
}
base::HistogramTester histogram_tester_;
};
......@@ -70,6 +74,7 @@ IN_PROC_BROWSER_TEST_F(KaleidoscopeTabHelperBrowserTest,
// Autoplay should not be allowed since that is the default.
EXPECT_FALSE(AttemptPlay(GetWebContents()));
EXPECT_FALSE(GetTabHelper()->IsKaleidoscopeDerived());
histogram_tester_.ExpectTotalCount(
KaleidoscopeTabHelper::kKaleidoscopeNavigationHistogramName, 0);
......@@ -91,10 +96,12 @@ IN_PROC_BROWSER_TEST_F(KaleidoscopeTabHelperBrowserTest,
// Autoplay should be allowed because this page was opened from Kaleidoscope.
EXPECT_TRUE(AttemptPlay(GetWebContents()));
EXPECT_TRUE(GetTabHelper()->IsKaleidoscopeDerived());
// Autoplay should not be allowed since this is a derived navigation.
NavigateInRenderer(GetWebContents(), kTestPageUrl);
EXPECT_FALSE(AttemptPlay(GetWebContents()));
EXPECT_TRUE(GetTabHelper()->IsKaleidoscopeDerived());
histogram_tester_.ExpectBucketCount(
KaleidoscopeTabHelper::kKaleidoscopeNavigationHistogramName,
......@@ -106,4 +113,8 @@ IN_PROC_BROWSER_TEST_F(KaleidoscopeTabHelperBrowserTest,
auto* ukm_entry = ukm_entries.back();
test_ukm_recorder.ExpectEntrySourceHasUrl(ukm_entry, kTestPageUrl);
NavigateInRenderer(GetWebContents(), embedded_test_server()->GetURL(
"example.com", kTestPagePath));
EXPECT_FALSE(GetTabHelper()->IsKaleidoscopeDerived());
}
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