| // 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. | 
 |  | 
 | /** | 
 |  * @const | 
 |  * @type {string} | 
 |  */ | 
 | export const releaseNoteViewId = 'release-note'; | 
 |  | 
 | /** | 
 |  * @return {!Help.ReleaseNote} | 
 |  */ | 
 | export function latestReleaseNote() { | 
 |   if (!Help._latestReleaseNote) { | 
 |     /** @type {!Help.ReleaseNote} */ | 
 |     Help._latestReleaseNote = Help.releaseNoteText.reduce((acc, note) => note.version > acc.version ? note : acc); | 
 |   } | 
 |   return Help._latestReleaseNote; | 
 | } | 
 |  | 
 | function _showReleaseNoteIfNeeded() { | 
 |   _innerShowReleaseNoteIfNeeded( | 
 |       Help._releaseNoteVersionSetting.get(), latestReleaseNote().version, | 
 |       Common.settings.moduleSetting('help.show-release-note').get()); | 
 | } | 
 |  | 
 | /** | 
 |  * @param {number} lastSeenVersion | 
 |  * @param {number} latestVersion | 
 |  * @param {boolean} showReleaseNote | 
 |  */ | 
 | function _innerShowReleaseNoteIfNeeded(lastSeenVersion, latestVersion, showReleaseNote) { | 
 |   if (!lastSeenVersion) { | 
 |     Help._releaseNoteVersionSetting.set(latestVersion); | 
 |     return; | 
 |   } | 
 |   if (!showReleaseNote) { | 
 |     return; | 
 |   } | 
 |   if (lastSeenVersion >= latestVersion) { | 
 |     return; | 
 |   } | 
 |   Help._releaseNoteVersionSetting.set(latestVersion); | 
 |   UI.viewManager.showView(releaseNoteViewId, true); | 
 | } | 
 |  | 
 | /** | 
 |  * @implements {Common.Runnable} | 
 |  */ | 
 | export class HelpLateInitialization { | 
 |   /** | 
 |    * @override | 
 |    */ | 
 |   async run() { | 
 |     if (!Host.isUnderTest()) { | 
 |       _showReleaseNoteIfNeeded(); | 
 |     } | 
 |   } | 
 | } | 
 |  | 
 | /** | 
 |  * @implements {UI.ActionDelegate} | 
 |  */ | 
 | export class ReleaseNotesActionDelegate { | 
 |   /** | 
 |    * @override | 
 |    * @param {!UI.Context} context | 
 |    * @param {string} actionId | 
 |    * @return {boolean} | 
 |    */ | 
 |   handleAction(context, actionId) { | 
 |     Host.InspectorFrontendHost.openInNewTab(latestReleaseNote().link); | 
 |     return true; | 
 |   } | 
 | } | 
 |  | 
 | /** | 
 |  * @implements {UI.ActionDelegate} | 
 |  */ | 
 | export class ReportIssueActionDelegate { | 
 |   /** | 
 |    * @override | 
 |    * @param {!UI.Context} context | 
 |    * @param {string} actionId | 
 |    * @return {boolean} | 
 |    */ | 
 |   handleAction(context, actionId) { | 
 |     Host.InspectorFrontendHost.openInNewTab( | 
 |         'https://bugs.chromium.org/p/chromium/issues/entry?template=DevTools+issue'); | 
 |     return true; | 
 |   } | 
 | } | 
 |  | 
 | /* Legacy exported object */ | 
 | self.Help = self.Help || {}; | 
 |  | 
 | /* Legacy exported object */ | 
 | Help = Help || {}; | 
 |  | 
 | Help.releaseNoteViewId = releaseNoteViewId; | 
 | Help.latestReleaseNote = latestReleaseNote; | 
 | Help._innerShowReleaseNoteIfNeeded = _innerShowReleaseNoteIfNeeded; | 
 | Help._showReleaseNoteIfNeeded = _showReleaseNoteIfNeeded; | 
 |  | 
 | /** @type {!Common.Setting} */ | 
 | Help._releaseNoteVersionSetting = Common.settings.createSetting('releaseNoteVersionSeen', 0); | 
 |  | 
 | /** @typedef {!{title: string, subtitle: string, link: string}} */ | 
 | Help.ReleaseNoteHighlight; | 
 |  | 
 | /** | 
 |  * @typedef {!{version: number, header: string, highlights: !Array<!Help.ReleaseNoteHighlight>, | 
 |  *    link: string}} | 
 |  */ | 
 | Help.ReleaseNote; | 
 |  | 
 | /** | 
 |  * @constructor | 
 |  */ | 
 | Help.HelpLateInitialization = HelpLateInitialization; | 
 |  | 
 | /** | 
 |  * @constructor | 
 |  */ | 
 | Help.ReleaseNotesActionDelegate = ReleaseNotesActionDelegate; | 
 |  | 
 | /** | 
 |  * @constructor | 
 |  */ | 
 | Help.ReportIssueActionDelegate = ReportIssueActionDelegate; |