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( ...@@ -65,6 +65,18 @@ void KaleidoscopeTabHelper::ReadyToCommitNavigation(
RecordMetricsOnNavigation(handle); RecordMetricsOnNavigation(handle);
SetAutoplayOnNavigation(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( void KaleidoscopeTabHelper::RecordMetricsOnNavigation(
......
...@@ -28,6 +28,10 @@ class KaleidoscopeTabHelper ...@@ -28,6 +28,10 @@ class KaleidoscopeTabHelper
// content::WebContentsObserver: // content::WebContentsObserver:
void ReadyToCommitNavigation(content::NavigationHandle* handle) override; 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: private:
friend class content::WebContentsUserData<KaleidoscopeTabHelper>; friend class content::WebContentsUserData<KaleidoscopeTabHelper>;
...@@ -36,6 +40,8 @@ class KaleidoscopeTabHelper ...@@ -36,6 +40,8 @@ class KaleidoscopeTabHelper
void RecordMetricsOnNavigation(content::NavigationHandle* handle); void RecordMetricsOnNavigation(content::NavigationHandle* handle);
void SetAutoplayOnNavigation(content::NavigationHandle* handle); void SetAutoplayOnNavigation(content::NavigationHandle* handle);
bool is_kaleidoscope_derived_ = false;
WEB_CONTENTS_USER_DATA_KEY_DECL(); WEB_CONTENTS_USER_DATA_KEY_DECL();
}; };
......
...@@ -57,6 +57,10 @@ class KaleidoscopeTabHelperBrowserTest : public InProcessBrowserTest { ...@@ -57,6 +57,10 @@ class KaleidoscopeTabHelperBrowserTest : public InProcessBrowserTest {
return browser()->tab_strip_model()->GetActiveWebContents(); return browser()->tab_strip_model()->GetActiveWebContents();
} }
KaleidoscopeTabHelper* GetTabHelper() {
return KaleidoscopeTabHelper::FromWebContents(GetWebContents());
}
base::HistogramTester histogram_tester_; base::HistogramTester histogram_tester_;
}; };
...@@ -70,6 +74,7 @@ IN_PROC_BROWSER_TEST_F(KaleidoscopeTabHelperBrowserTest, ...@@ -70,6 +74,7 @@ IN_PROC_BROWSER_TEST_F(KaleidoscopeTabHelperBrowserTest,
// Autoplay should not be allowed since that is the default. // Autoplay should not be allowed since that is the default.
EXPECT_FALSE(AttemptPlay(GetWebContents())); EXPECT_FALSE(AttemptPlay(GetWebContents()));
EXPECT_FALSE(GetTabHelper()->IsKaleidoscopeDerived());
histogram_tester_.ExpectTotalCount( histogram_tester_.ExpectTotalCount(
KaleidoscopeTabHelper::kKaleidoscopeNavigationHistogramName, 0); KaleidoscopeTabHelper::kKaleidoscopeNavigationHistogramName, 0);
...@@ -91,10 +96,12 @@ IN_PROC_BROWSER_TEST_F(KaleidoscopeTabHelperBrowserTest, ...@@ -91,10 +96,12 @@ IN_PROC_BROWSER_TEST_F(KaleidoscopeTabHelperBrowserTest,
// Autoplay should be allowed because this page was opened from Kaleidoscope. // Autoplay should be allowed because this page was opened from Kaleidoscope.
EXPECT_TRUE(AttemptPlay(GetWebContents())); EXPECT_TRUE(AttemptPlay(GetWebContents()));
EXPECT_TRUE(GetTabHelper()->IsKaleidoscopeDerived());
// Autoplay should not be allowed since this is a derived navigation. // Autoplay should not be allowed since this is a derived navigation.
NavigateInRenderer(GetWebContents(), kTestPageUrl); NavigateInRenderer(GetWebContents(), kTestPageUrl);
EXPECT_FALSE(AttemptPlay(GetWebContents())); EXPECT_FALSE(AttemptPlay(GetWebContents()));
EXPECT_TRUE(GetTabHelper()->IsKaleidoscopeDerived());
histogram_tester_.ExpectBucketCount( histogram_tester_.ExpectBucketCount(
KaleidoscopeTabHelper::kKaleidoscopeNavigationHistogramName, KaleidoscopeTabHelper::kKaleidoscopeNavigationHistogramName,
...@@ -106,4 +113,8 @@ IN_PROC_BROWSER_TEST_F(KaleidoscopeTabHelperBrowserTest, ...@@ -106,4 +113,8 @@ IN_PROC_BROWSER_TEST_F(KaleidoscopeTabHelperBrowserTest,
auto* ukm_entry = ukm_entries.back(); auto* ukm_entry = ukm_entries.back();
test_ukm_recorder.ExpectEntrySourceHasUrl(ukm_entry, kTestPageUrl); 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