| // Copyright 2017 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. |
| |
| /** |
| * @return {!Help.ReleaseNote} |
| */ |
| Help.latestReleaseNote = function() { |
| if (!Help._latestReleaseNote) { |
| /** @type {!Help.ReleaseNote} */ |
| Help._latestReleaseNote = Help.releaseNoteText.reduce((acc, note) => note.version > acc.version ? note : acc); |
| } |
| return Help._latestReleaseNote; |
| }; |
| |
| /** |
| * @return {!Common.Setting} |
| */ |
| Help.releaseNoteVersionSetting = function() { |
| if (!Help._releaseNoteVersionSetting) { |
| /** @type {!Common.Setting} */ |
| Help._releaseNoteVersionSetting = Common.settings.createSetting('releaseNoteVersionSeen', 0); |
| } |
| return Help._releaseNoteVersionSetting; |
| }; |
| |
| Help.showReleaseNoteIfNeeded = function() { |
| Help._showReleaseNoteIfNeeded(Help.releaseNoteVersionSetting().get(), Help.latestReleaseNote().version); |
| }; |
| |
| /** |
| * @param {number} lastSeenVersion |
| * @param {number} latestVersion |
| */ |
| Help._showReleaseNoteIfNeeded = function(lastSeenVersion, latestVersion) { |
| if (!Runtime.experiments.isEnabled('releaseNote')) |
| return; |
| if (lastSeenVersion >= latestVersion) |
| return; |
| Help.releaseNoteVersionSetting().set(latestVersion); |
| UI.viewManager.showView(Help._releaseNoteViewId, true); |
| }; |
| |
| /** |
| * @return {number} |
| */ |
| Help.browserVersion = function() { |
| if (!Help._browserVersion) { |
| var chromeRegex = new RegExp('(?:^|\\W)Chrome/(\\d+)'); |
| var chromeMatch = navigator.userAgent.match(chromeRegex); |
| /** @type {number} */ |
| Help._browserVersion = Number(chromeMatch[1]); |
| } |
| return Help._browserVersion; |
| }; |
| |
| /** |
| * @const |
| * @type {string} |
| */ |
| Help._releaseNoteViewId = 'release-note'; |
| |
| /** @typedef {!{src: string}} */ |
| Help.ReleaseNoteImage; |
| |
| /** @typedef {!{text: string, link: (string | undefined)}} */ |
| Help.ReleaseNoteHighlightContent; |
| |
| /** @typedef {!{contents: !Array<!Help.ReleaseNoteHighlightContent>, featured: (boolean | undefined)}} */ |
| Help.ReleaseNoteHighlight; |
| |
| /** |
| * @typedef {!{version: number, highlights: !Array<!Help.ReleaseNoteHighlight>, |
| * link: string, image: !Help.ReleaseNoteImage}} |
| */ |
| Help.ReleaseNote; |