Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3220)

Unified Diff: chrome/browser/ui/webui/settings/font_handler.cc

Issue 1877923002: [MD settings] advanced font settings extension link (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review changes Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/settings/font_handler.cc
diff --git a/chrome/browser/ui/webui/settings/font_handler.cc b/chrome/browser/ui/webui/settings/font_handler.cc
index 26bbff23ff1525c6c928f64dc0188618900c825c..9192acd162776b396ee9033ec44fbcd552e8d2d1 100644
--- a/chrome/browser/ui/webui/settings/font_handler.cc
+++ b/chrome/browser/ui/webui/settings/font_handler.cc
@@ -13,17 +13,31 @@
#include "base/i18n/rtl.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/character_encoding.h"
+#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/extensions/extension_tab_util.h"
#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/webui/options/font_settings_utils.h"
#include "chrome/common/pref_names.h"
#include "components/prefs/pref_service.h"
#include "content/public/browser/font_list_async.h"
#include "content/public/browser/web_ui.h"
+#include "extensions/browser/extension_registry.h"
+#include "extensions/browser/extension_system.h"
+#include "extensions/common/extension_urls.h"
+
+namespace {
+
+const char kAdvancedFontSettingsExtensionId[] =
+ "caclkomlalccbpcdllchkeecicepbmbm";
+
+} // namespace
namespace settings {
FontHandler::FontHandler(content::WebUI* webui)
- : profile_(Profile::FromWebUI(webui)),
+ : extension_registry_observer_(this),
+ profile_(Profile::FromWebUI(webui)),
weak_ptr_factory_(this) {
// Perform validation for saved fonts.
options::FontSettingsUtilities::ValidateSavedFonts(profile_->GetPrefs());
@@ -35,6 +49,14 @@ void FontHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback(
"fetchFontsData", base::Bind(&FontHandler::HandleFetchFontsData,
base::Unretained(this)));
+ web_ui()->RegisterMessageCallback(
+ "observeAdvancedFontExtensionAvailable",
+ base::Bind(&FontHandler::HandleObserveAdvancedFontExtensionAvailable,
+ base::Unretained(this)));
+ web_ui()->RegisterMessageCallback(
+ "openAdvancedFontSettings",
+ base::Bind(&FontHandler::HandleOpenAdvancedFontSettings,
+ base::Unretained(this)));
}
void FontHandler::HandleFetchFontsData(const base::ListValue* args) {
@@ -47,6 +69,52 @@ void FontHandler::HandleFetchFontsData(const base::ListValue* args) {
callback_id));
}
+void FontHandler::HandleObserveAdvancedFontExtensionAvailable(
+ const base::ListValue* /*args*/) {
+ extensions::ExtensionRegistry* observer =
+ extensions::ExtensionRegistry::Get(profile_);
+ if (!extension_registry_observer_.IsObserving(observer))
+ extension_registry_observer_.Add(observer);
+ NotifyAdvancedFontSettingsAvailability();
+}
+
+void FontHandler::HandleOpenAdvancedFontSettings(
+ const base::ListValue* /*args*/) {
+ const extensions::Extension* extension = GetAdvancedFontSettingsExtension();
+ if (!extension)
+ return;
+ extensions::ExtensionTabUtil::OpenOptionsPage(
+ extension,
+ chrome::FindBrowserWithWebContents(web_ui()->GetWebContents()));
+}
+
+const extensions::Extension* FontHandler::GetAdvancedFontSettingsExtension() {
+ ExtensionService* service =
+ extensions::ExtensionSystem::Get(profile_)->extension_service();
+ if (!service->IsExtensionEnabled(kAdvancedFontSettingsExtensionId))
+ return nullptr;
+ return service->GetInstalledExtension(kAdvancedFontSettingsExtensionId);
+}
+
+void FontHandler::NotifyAdvancedFontSettingsAvailability() {
+ web_ui()->CallJavascriptFunction(
+ "cr.webUIListenerCallback",
+ base::StringValue("advanced-font-settings-installed"),
+ base::FundamentalValue(GetAdvancedFontSettingsExtension() != nullptr));
+}
+
+void FontHandler::OnExtensionLoaded(content::BrowserContext*,
+ const extensions::Extension*) {
+ NotifyAdvancedFontSettingsAvailability();
+}
+
+void FontHandler::OnExtensionUnloaded(
+ content::BrowserContext*,
+ const extensions::Extension*,
+ extensions::UnloadedExtensionInfo::Reason) {
+ NotifyAdvancedFontSettingsAvailability();
+}
+
void FontHandler::FontListHasLoaded(std::string callback_id,
std::unique_ptr<base::ListValue> list) {
// Font list. Selects the directionality for the fonts in the given list.
@@ -95,7 +163,16 @@ void FontHandler::FontListHasLoaded(std::string callback_id,
response.Set("fontList", std::move(list));
response.Set("encodingList", std::move(encoding_list));
+ GURL extension_url(extension_urls::GetWebstoreItemDetailURLPrefix());
+ response.SetString(
+ "extensionUrl",
+ extension_url.Resolve(kAdvancedFontSettingsExtensionId).spec());
+
ResolveJavascriptCallback(base::StringValue(callback_id), response);
}
+void FontHandler::RenderViewReused() {
+ extension_registry_observer_.RemoveAll();
+}
+
} // namespace settings

Powered by Google App Engine
This is Rietveld 408576698