Chromium Code Reviews| Index: third_party/WebKit/Source/devtools/front_end/help/Help.js |
| diff --git a/third_party/WebKit/Source/devtools/front_end/help/Help.js b/third_party/WebKit/Source/devtools/front_end/help/Help.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..c996878b54b06171005835e2037ea3cd90e7124b |
| --- /dev/null |
| +++ b/third_party/WebKit/Source/devtools/front_end/help/Help.js |
| @@ -0,0 +1,92 @@ |
| +// 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._getReleaseNoteByVersion(Help.browserVersion()); |
| + } |
| + return Help._latestReleaseNote; |
| +}; |
| + |
| +/** |
| + * @param {number} version |
| + * @return {!Help.ReleaseNote} |
| + */ |
| +Help._getReleaseNoteByVersion = function(version) { |
| + const originalVersion = version; |
|
alph
2017/02/23 00:39:07
please avoid using const
chenwilliam
2017/02/23 02:31:05
Done.
|
| + while (version) { |
| + var note = Help.releaseNoteText.find(note => note.version === version); |
| + if (note) |
| + return note; |
| + version--; |
| + } |
| + console.error(`Unable to find release note for version ${originalVersion} - using last release note as fallback`); |
| + return Help.releaseNoteText[Help.releaseNoteText.length - 1]; |
|
alph
2017/02/23 00:39:07
peekLast
chenwilliam
2017/02/23 02:31:05
Done. Had to add a cast because of this Closure wa
|
| +}; |
| + |
| +/** |
| + * @return {!Common.Setting} |
| + */ |
| +Help.releaseNoteVersionSetting = function() { |
| + if (!Help._releaseNoteVersionSetting) { |
| + /** @type {!Common.Setting} */ |
| + Help._releaseNoteVersionSetting = Common.settings.createSetting('releaseNoteVersionSeen', 0, false); |
| + } |
| + return Help._releaseNoteVersionSetting; |
| +}; |
| + |
| +Help.showReleaseNoteIfNeeded = function() { |
| + Help._showReleaseNoteIfNeeded(Help.releaseNoteVersionSetting().get(), Help.browserVersion()); |
| +}; |
| + |
| +/** |
| + * @param {number} lastSeenVersion |
| + * @param {number} browserVersion |
| + * @return {?Promise<?UI.Panel>} |
|
alph
2017/02/23 00:39:07
Can't see where the Promise is used
chenwilliam
2017/02/23 02:31:05
Used it for testing in release-note-unit.html. I'v
|
| + */ |
| +Help._showReleaseNoteIfNeeded = function(lastSeenVersion, browserVersion) { |
| + if (!Runtime.experiments.isEnabled('releaseNote')) |
| + return null; |
| + if (lastSeenVersion >= browserVersion) |
| + return null; |
| + if (Help.latestReleaseNote().version !== browserVersion) |
| + return null; |
| + Help.releaseNoteVersionSetting().set(Help.browserVersion()); |
| + return UI.inspectorView.showPanel(Help._releaseNoteViewId); |
| +}; |
| + |
| +/** |
| + * @return {number} |
| + */ |
| +Help.browserVersion = function() { |
| + if (!Help._browserVersion) { |
| + var chromeRegex = new RegExp('(?:^|\\W)Chrome/(\\d+)'); |
| + var chromeMatch = navigator.userAgent.match(chromeRegex); |
| + /** @type {number} */ |
|
alph
2017/02/23 00:39:07
is it needed?
chenwilliam
2017/02/23 02:31:05
Not strictly needed, but just to make sure I don't
|
| + 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, featured: (boolean | undefined)}} */ |
| +Help.ReleaseNoteHighlight; |
| + |
| +/** |
| + * @typedef {!{version: number, highlights: !Array<!Help.ReleaseNoteHighlight>, |
| + * link: string, image: !Help.ReleaseNoteImage}} |
| + */ |
| +Help.ReleaseNote; |