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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/help/Help.js

Issue 2649023007: DevTools: implement release note behind an experiment (Closed)
Patch Set: fixup Created 3 years, 10 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 /**
6 * @return {!Help.ReleaseNote}
7 */
8 Help.latestReleaseNote = function() {
9 if (!Help._latestReleaseNote) {
10 /** @type {!Help.ReleaseNote} */
11 Help._latestReleaseNote = Help._getReleaseNoteByVersion(Help.browserVersion( ));
12 }
13 return Help._latestReleaseNote;
14 };
15
16 /**
17 * @param {number} version
18 * @return {!Help.ReleaseNote}
19 */
20 Help._getReleaseNoteByVersion = function(version) {
21 const originalVersion = version;
alph 2017/02/23 00:39:07 please avoid using const
chenwilliam 2017/02/23 02:31:05 Done.
22 while (version) {
23 var note = Help.releaseNoteText.find(note => note.version === version);
24 if (note)
25 return note;
26 version--;
27 }
28 console.error(`Unable to find release note for version ${originalVersion} - us ing last release note as fallback`);
29 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
30 };
31
32 /**
33 * @return {!Common.Setting}
34 */
35 Help.releaseNoteVersionSetting = function() {
36 if (!Help._releaseNoteVersionSetting) {
37 /** @type {!Common.Setting} */
38 Help._releaseNoteVersionSetting = Common.settings.createSetting('releaseNote VersionSeen', 0, false);
39 }
40 return Help._releaseNoteVersionSetting;
41 };
42
43 Help.showReleaseNoteIfNeeded = function() {
44 Help._showReleaseNoteIfNeeded(Help.releaseNoteVersionSetting().get(), Help.bro wserVersion());
45 };
46
47 /**
48 * @param {number} lastSeenVersion
49 * @param {number} browserVersion
50 * @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
51 */
52 Help._showReleaseNoteIfNeeded = function(lastSeenVersion, browserVersion) {
53 if (!Runtime.experiments.isEnabled('releaseNote'))
54 return null;
55 if (lastSeenVersion >= browserVersion)
56 return null;
57 if (Help.latestReleaseNote().version !== browserVersion)
58 return null;
59 Help.releaseNoteVersionSetting().set(Help.browserVersion());
60 return UI.inspectorView.showPanel(Help._releaseNoteViewId);
61 };
62
63 /**
64 * @return {number}
65 */
66 Help.browserVersion = function() {
67 if (!Help._browserVersion) {
68 var chromeRegex = new RegExp('(?:^|\\W)Chrome/(\\d+)');
69 var chromeMatch = navigator.userAgent.match(chromeRegex);
70 /** @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
71 Help._browserVersion = Number(chromeMatch[1]);
72 }
73 return Help._browserVersion;
74 };
75
76 /**
77 * @const
78 * @type {string}
79 */
80 Help._releaseNoteViewId = 'release-note';
81
82 /** @typedef {!{src: string}} */
83 Help.ReleaseNoteImage;
84
85 /** @typedef {!{text: string, link: string, featured: (boolean | undefined)}} */
86 Help.ReleaseNoteHighlight;
87
88 /**
89 * @typedef {!{version: number, highlights: !Array<!Help.ReleaseNoteHighlight>,
90 * link: string, image: !Help.ReleaseNoteImage}}
91 */
92 Help.ReleaseNote;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698