blob: 80c65fd12e8e5c60c8be7cc9df060bc889a4c594 [file] [log] [blame]
// Copyright 2018 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 "components/omnibox/browser/omnibox_pedal_implementations.h"
#include "base/strings/utf_string_conversions.h"
#include "build/build_config.h"
#include "components/omnibox/browser/autocomplete_provider_client.h"
#include "components/omnibox/browser/buildflags.h"
#include "components/omnibox/browser/omnibox_client.h"
#include "components/omnibox/browser/omnibox_pedal.h"
#include "components/strings/grit/components_strings.h"
#if (!defined(OS_ANDROID) || BUILDFLAG(ENABLE_VR)) && !defined(OS_IOS)
#include "components/omnibox/browser/vector_icons.h" // nogncheck
#endif
// =============================================================================
OmniboxPedalClearBrowsingData::OmniboxPedalClearBrowsingData()
: OmniboxPedal(
LabelStrings(
IDS_OMNIBOX_PEDAL_CLEAR_BROWSING_DATA_HINT,
IDS_OMNIBOX_PEDAL_CLEAR_BROWSING_DATA_HINT_SHORT,
IDS_OMNIBOX_PEDAL_CLEAR_BROWSING_DATA_SUGGESTION_CONTENTS),
GURL("chrome://settings/clearBrowserData")) {}
#if (!defined(OS_ANDROID) || BUILDFLAG(ENABLE_VR)) && !defined(OS_IOS)
const gfx::VectorIcon& OmniboxPedalClearBrowsingData::GetVectorIcon() const {
return omnibox::kAnswerWhenIsIcon;
}
#endif
// =============================================================================
class OmniboxPedalChangeSearchEngine : public OmniboxPedal {
public:
OmniboxPedalChangeSearchEngine()
: OmniboxPedal(
LabelStrings(
IDS_OMNIBOX_PEDAL_CHANGE_SEARCH_ENGINE_HINT,
IDS_OMNIBOX_PEDAL_CHANGE_SEARCH_ENGINE_HINT_SHORT,
IDS_OMNIBOX_PEDAL_CHANGE_SEARCH_ENGINE_SUGGESTION_CONTENTS),
GURL("chrome://settings/searchEngines")) {}
};
// =============================================================================
class OmniboxPedalManagePasswords : public OmniboxPedal {
public:
OmniboxPedalManagePasswords()
: OmniboxPedal(
LabelStrings(
IDS_OMNIBOX_PEDAL_MANAGE_PASSWORDS_HINT,
IDS_OMNIBOX_PEDAL_MANAGE_PASSWORDS_HINT_SHORT,
IDS_OMNIBOX_PEDAL_MANAGE_PASSWORDS_SUGGESTION_CONTENTS),
GURL("chrome://settings/passwords")) {}
};
// =============================================================================
// TODO(orinj): Use better scoping for existing setting, or link to new UI.
class OmniboxPedalChangeHomePage : public OmniboxPedal {
public:
OmniboxPedalChangeHomePage()
: OmniboxPedal(
LabelStrings(
IDS_OMNIBOX_PEDAL_CHANGE_HOME_PAGE_HINT,
IDS_OMNIBOX_PEDAL_CHANGE_HOME_PAGE_HINT_SHORT,
IDS_OMNIBOX_PEDAL_CHANGE_HOME_PAGE_SUGGESTION_CONTENTS),
GURL("chrome://settings/?search=show+home+button")) {}
};
// =============================================================================
class OmniboxPedalUpdateCreditCard : public OmniboxPedal {
public:
OmniboxPedalUpdateCreditCard()
: OmniboxPedal(
OmniboxPedal::LabelStrings(
IDS_OMNIBOX_PEDAL_UPDATE_CREDIT_CARD_HINT,
IDS_OMNIBOX_PEDAL_UPDATE_CREDIT_CARD_HINT_SHORT,
IDS_OMNIBOX_PEDAL_UPDATE_CREDIT_CARD_SUGGESTION_CONTENTS),
GURL("chrome://settings/autofill")) {}
};
// =============================================================================
class OmniboxPedalLaunchIncognito : public OmniboxPedal {
public:
OmniboxPedalLaunchIncognito()
: OmniboxPedal(
LabelStrings(
IDS_OMNIBOX_PEDAL_LAUNCH_INCOGNITO_HINT,
IDS_OMNIBOX_PEDAL_LAUNCH_INCOGNITO_HINT_SHORT,
IDS_OMNIBOX_PEDAL_LAUNCH_INCOGNITO_SUGGESTION_CONTENTS),
GURL()) {}
void Execute(ExecutionContext& context) const override {
context.client_.NewIncognitoWindow();
}
};
// =============================================================================
class OmniboxPedalTranslate : public OmniboxPedal {
public:
OmniboxPedalTranslate()
: OmniboxPedal(
LabelStrings(IDS_OMNIBOX_PEDAL_TRANSLATE_HINT,
IDS_OMNIBOX_PEDAL_TRANSLATE_HINT_SHORT,
IDS_OMNIBOX_PEDAL_TRANSLATE_SUGGESTION_CONTENTS),
GURL()) {}
void Execute(ExecutionContext& context) const override {
context.client_.PromptPageTranslation();
}
};
// =============================================================================
OmniboxPedalUpdateChrome::OmniboxPedalUpdateChrome()
: OmniboxPedal(
LabelStrings(IDS_OMNIBOX_PEDAL_UPDATE_CHROME_HINT,
IDS_OMNIBOX_PEDAL_UPDATE_CHROME_HINT_SHORT,
IDS_OMNIBOX_PEDAL_UPDATE_CHROME_SUGGESTION_CONTENTS),
GURL()) {}
void OmniboxPedalUpdateChrome::Execute(ExecutionContext& context) const {
context.client_.OpenUpdateChromeDialog();
}
bool OmniboxPedalUpdateChrome::IsReadyToTrigger(
const AutocompleteProviderClient& client) const {
return client.IsBrowserUpdateAvailable();
}
// =============================================================================
std::unordered_map<OmniboxPedalId, std::unique_ptr<OmniboxPedal>>
GetPedalImplementations() {
std::unordered_map<OmniboxPedalId, std::unique_ptr<OmniboxPedal>> pedals;
const auto add = [&](OmniboxPedalId id, OmniboxPedal* pedal) {
pedals.insert({id, std::unique_ptr<OmniboxPedal>(pedal)});
};
add(OmniboxPedalId::CLEAR_BROWSING_DATA, new OmniboxPedalClearBrowsingData());
add(OmniboxPedalId::CHANGE_SEARCH_ENGINE,
new OmniboxPedalChangeSearchEngine());
add(OmniboxPedalId::MANAGE_PASSWORDS, new OmniboxPedalManagePasswords());
add(OmniboxPedalId::CHANGE_HOME_PAGE, new OmniboxPedalChangeHomePage());
add(OmniboxPedalId::UPDATE_CREDIT_CARD, new OmniboxPedalUpdateCreditCard());
add(OmniboxPedalId::LAUNCH_INCOGNITO, new OmniboxPedalLaunchIncognito());
add(OmniboxPedalId::TRANSLATE, new OmniboxPedalTranslate());
add(OmniboxPedalId::UPDATE_CHROME, new OmniboxPedalUpdateChrome());
return pedals;
}