blob: 953956eec239b69bba1c79c09aae68837b96b2e7 [file] [log] [blame] [edit]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/android/tab_android.h"
#include "chrome/browser/sync/session_sync_service_factory.h"
#include "chrome/test/base/android/android_browser_test.h"
#include "chrome/test/base/chrome_test_utils.h"
#include "components/sync_sessions/session_sync_service_impl.h"
#include "components/sync_sessions/sync_sessions_client.h"
#include "components/sync_sessions/synced_tab_delegate.h"
#include "content/public/test/browser_test.h"
#include "content/public/test/browser_test_utils.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
#include "testing/gmock/include/gmock/gmock.h"
class TabAndroidBrowserTest : public AndroidBrowserTest {
public:
// AndroidBrowserTest:
void SetUpOnMainThread() override {
embedded_test_server()->ServeFilesFromSourceDirectory("content/test/data");
ASSERT_TRUE(embedded_test_server()->Start());
}
};
IN_PROC_BROWSER_TEST_F(TabAndroidBrowserTest,
SetHideFutureNavigationsPropagatesToSyncedTabDelegate) {
auto* tab = TabAndroid::FromWebContents(
chrome_test_utils::GetActiveWebContents(this));
ASSERT_TRUE(tab);
// ShouldSync() returns false with about:blank. Load something to prevent
// that.
const GURL url =
embedded_test_server()->GetURL("localhost", "/simple_page.html");
ASSERT_TRUE(content::NavigateToURL(tab->web_contents(), url));
auto* sync_service = static_cast<sync_sessions::SessionSyncServiceImpl*>(
SessionSyncServiceFactory::GetForProfile(tab->GetProfile()));
ASSERT_TRUE(sync_service);
sync_sessions::SyncSessionsClient* sessions_client =
sync_service->GetSessionsClientForTest();
ASSERT_TRUE(sessions_client);
sync_sessions::SyncedTabDelegate* synced_tab_delegate =
tab->GetSyncedTabDelegate();
ASSERT_TRUE(synced_tab_delegate);
// Default is sync is enabled.
EXPECT_TRUE(synced_tab_delegate->ShouldSync(sessions_client));
// When navigations are hidden, sync should be disabled.
tab->SetHideFutureNavigations(/* env */ nullptr, /* hide */ true);
EXPECT_FALSE(synced_tab_delegate->ShouldSync(sessions_client));
// Disable hiding navigations, and sync should be enabled.
tab->SetHideFutureNavigations(/* env */ nullptr, /* hide */ false);
EXPECT_TRUE(synced_tab_delegate->ShouldSync(sessions_client));
}