Commit 2b80b538 authored by Daniel Classon's avatar Daniel Classon Committed by Commit Bot

[OsSettingsDeepLinking] Add getSettingIdParameter util function

Abstracted the getSettingIdParameter from DeepLinkingBehavior so
that it can be used in both settings/ and settings/chromeos/.
Refactor DeepLinkingBehavior to use this function.

Bug: 1084154
Change-Id: I2553d724d421ad34279aade5ce1964ebe9a8f578
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2327179
Commit-Queue: Daniel Classon <dclasson@google.com>
Reviewed-by: default avatarKyle Horimoto <khorimoto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#792926}
parent c0442f36
......@@ -94,6 +94,7 @@ js_type_check("settings_resources") {
":lifetime_browser_proxy",
":router",
":search_settings",
":setting_id_param_util",
]
}
......@@ -135,6 +136,13 @@ js_library("search_settings") {
externs_list = [ "$externs_path/pending_polymer.js" ]
}
js_library("setting_id_param_util") {
deps = [
":router",
"//ui/webui/resources/js:load_time_data",
]
}
# Polymer 3 related rules.
group("closure_compile_module") {
......@@ -201,6 +209,7 @@ js_type_check("closure_compile_local_module") {
":route",
":router.m",
":search_settings.m",
":setting_id_param_util.m",
":settings",
":settings_routes",
":site_favicon",
......@@ -317,6 +326,15 @@ js_library("search_settings.m") {
extra_deps = [ ":modulize" ]
}
js_library("setting_id_param_util.m") {
sources = [ "$root_gen_dir/chrome/browser/resources/settings/setting_id_param_util.m.js" ]
deps = [
":router.m",
"//ui/webui/resources/js:load_time_data.m",
]
extra_deps = [ ":modulize" ]
}
js_library("settings_routes") {
deps = [ ":router.m" ]
}
......@@ -415,6 +433,7 @@ js_modulizer("modulize") {
"lifetime_browser_proxy.js",
"router.js",
"search_settings.js",
"setting_id_param_util.js",
]
namespace_rewrites = settings_namespace_rewrites + [
"cr.search_highlight_utils.createEmptySearchBubble|createEmptySearchBubble",
......
......@@ -191,6 +191,7 @@ group("closure_compile") {
js_library("deep_linking_behavior") {
deps = [
"..:router",
"..:setting_id_param_util",
"//chrome/browser/ui/webui/settings/chromeos/constants:mojom_js_library_for_compile",
"//ui/webui/resources/js:assert",
"//ui/webui/resources/js:load_time_data",
......@@ -305,6 +306,7 @@ js_library("deep_linking_behavior.m") {
sources = [ "$root_gen_dir/chrome/browser/resources/settings/chromeos/deep_linking_behavior.m.js" ]
deps = [
"..:router.m",
"..:setting_id_param_util.m",
"//chrome/browser/ui/webui/settings/chromeos/constants:mojom_js_library_for_compile",
"//ui/webui/resources/js:assert.m",
"//ui/webui/resources/js:load_time_data.m",
......
<link rel="import" href="../router.html">
<link rel="import" href="../setting_id_param_util.html">
<link rel="import" href="chrome://resources/html/load_time_data.html">
<script src="chrome://os-settings/constants/setting.mojom-lite.js"></script>
......
......@@ -14,11 +14,12 @@
// #import {afterNextRender, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
// #import {assert} from 'chrome://resources/js/assert.m.js';
// #import {getSettingIdParameter} from '../setting_id_param_util.m.js';
// #import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
// #import {Router} from '../router.m.js';
// clang-format on
const kDeepLinkSettingId = 'settingId';
/** @type {string} */
const kDeepLinkFocusId = 'deep-link-focus-id';
/** @polymerBehavior */
......@@ -41,11 +42,10 @@ const kDeepLinkFocusId = 'deep-link-focus-id';
* @return {?chromeos.settings.mojom.Setting}
*/
getDeepLinkSettingId() {
if (!loadTimeData.getBoolean('isDeepLinkingEnabled')) {
const settingIdStr = getSettingIdParameter();
if (!settingIdStr) {
return null;
}
const settingIdStr = settings.Router.getInstance().getQueryParameters().get(
kDeepLinkSettingId);
const settingIdNum = Number(settingIdStr);
if (isNaN(settingIdNum)) {
return null;
......
......@@ -272,6 +272,10 @@
use_base_dir="false"
compress="false"
type="BINDATA" />
<include name="IDR_SETTINGS_SETTING_ID_PARAM_UTIL_M_JS"
file="${root_gen_dir}/chrome/browser/resources/settings/setting_id_param_util.m.js"
use_base_dir="false"
compress="false" type="BINDATA" />
<include name="IDR_OS_SETTINGS_SETTINGS_SHARED_CSS_M_JS"
file="${root_gen_dir}/chrome/browser/resources/settings/settings_shared_css.m.js"
use_base_dir="false"
......
......@@ -383,6 +383,12 @@
<structure name="IDR_OS_SETTINGS_SEARCH_SETTINGS_JS"
file="search_settings.js"
compress="false" type="chrome_html" />
<structure name="IDR_OS_SETTINGS_SETTING_ID_PARAM_UTIL_HTML"
file="setting_id_param_util.html"
compress="false" type="chrome_html" />
<structure name="IDR_OS_SETTINGS_SETTING_ID_PARAM_UTIL_JS"
file="setting_id_param_util.js"
compress="false" type="chrome_html" />
<structure name="IDR_OS_SETTINGS_CR_OS_SETTINGS_MAIN_HTML"
file="chromeos/os_settings_main/os_settings_main.html"
compress="false" type="chrome_html" />
......
<link rel="import" href="chrome://resources/html/load_time_data.html">
<link rel="import" href="./router.html">
<script src="setting_id_param_util.js"></script>
\ No newline at end of file
// 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.
/**
* @fileoverview Utility function for retrieving the deep linked setting ID
* from the Url parameter.
*/
// #import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
// #import {Router} from './router.m.js';
/** @type {string} */
const SETTING_ID_URL_PARAM_NAME = 'settingId';
/**
* Retrieves the setting ID saved in the URL's query parameter. Returns null if
* setting ID is unavailable.
* @return {?string}
*/
/* #export */ function getSettingIdParameter() {
// This flag must be enabled for the setting ID to be available.
if (!loadTimeData.valueExists('isDeepLinkingEnabled') ||
!loadTimeData.getBoolean('isDeepLinkingEnabled')) {
return null;
}
return settings.Router.getInstance().getQueryParameters().get(
SETTING_ID_URL_PARAM_NAME);
}
......@@ -686,6 +686,10 @@
use_base_dir="false"
compress="false" type="BINDATA"
preprocess="true" />
<include name="IDR_SETTINGS_SETTING_ID_PARAM_UTIL_M_JS"
file="${root_gen_dir}/chrome/browser/resources/settings/setting_id_param_util.m.js"
use_base_dir="false"
compress="false" type="BINDATA" />
<include name="IDR_SETTINGS_SETTINGS_ROUTES_JS"
file="settings_routes.js"
compress="false" type="BINDATA" />
......
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