1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/views/toolbar/home_button.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/test/test_browser_dialog.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/toolbar/toolbar_view.h"
#include "chrome/common/pref_names.h"
#include "components/prefs/pref_service.h"
#include "content/public/test/browser_test.h"
#include "ui/base/models/menu_model.h"
class HomeButtonUiTest : public DialogBrowserTest {
public:
HomeButtonUiTest() = default;
HomeButtonUiTest(const HomeButtonUiTest&) = delete;
HomeButtonUiTest& operator=(const HomeButtonUiTest&) = delete;
~HomeButtonUiTest() override = default;
HomeButton* GetHomeButton() {
return BrowserView::GetBrowserViewForBrowser(browser())
->toolbar()
->home_button();
}
// DialogBrowserTest:
void ShowUi(const std::string& name) override {
auto* const prefs = browser()->profile()->GetPrefs();
prefs->SetBoolean(prefs::kShowHomeButton, true);
HomePageUndoBubbleCoordinator coordinator(GetHomeButton(), prefs);
coordinator.Show(GURL(), false);
}
};
IN_PROC_BROWSER_TEST_F(HomeButtonUiTest, InvokeUi_default) {
ShowAndVerifyUi();
}
IN_PROC_BROWSER_TEST_F(HomeButtonUiTest, ShowMenu) {
ui::MenuModel* const menu_model = GetHomeButton()->menu_model();
const int pin_menu_item_index = 0;
const int unpin_menu_item_index = 1;
const int customize_chrome_menu_index = 2;
// While the home button is not pinned, the pin menu item should be visible.
PrefService* const pref_service = browser()->GetProfile()->GetPrefs();
ASSERT_FALSE(pref_service->GetBoolean(prefs::kShowHomeButton));
EXPECT_TRUE(menu_model->IsVisibleAt(pin_menu_item_index));
EXPECT_FALSE(menu_model->IsVisibleAt(unpin_menu_item_index));
EXPECT_TRUE(menu_model->IsVisibleAt(customize_chrome_menu_index));
// Activating the pin and unpin menu item should update the home button's pref
menu_model->ActivatedAt(pin_menu_item_index);
ASSERT_TRUE(pref_service->GetBoolean(prefs::kShowHomeButton));
EXPECT_FALSE(menu_model->IsVisibleAt(pin_menu_item_index));
EXPECT_TRUE(menu_model->IsVisibleAt(unpin_menu_item_index));
EXPECT_TRUE(menu_model->IsVisibleAt(customize_chrome_menu_index));
menu_model->ActivatedAt(unpin_menu_item_index);
EXPECT_FALSE(pref_service->GetBoolean(prefs::kShowHomeButton));
}
|