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

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

Issue 2649023007: DevTools: implement release note behind an experiment (Closed)
Patch Set: make test platform independent 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 side-by-side diff with in-line comments
Download patch
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..35838b6fa7aeafe9822409a24b962f466483123a
--- /dev/null
+++ b/third_party/WebKit/Source/devtools/front_end/help/Help.js
@@ -0,0 +1,91 @@
+// 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) {
+ var originalVersion = version;
+ 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 /** @type {!Help.ReleaseNote} */ (Help.releaseNoteText.peekLast());
+};
+
+/**
+ * @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
+ */
+Help._showReleaseNoteIfNeeded = function(lastSeenVersion, browserVersion) {
+ if (!Runtime.experiments.isEnabled('releaseNote'))
+ return;
+ if (lastSeenVersion >= browserVersion)
+ return;
+ if (Help.latestReleaseNote().version !== browserVersion)
+ return;
+ Help.releaseNoteVersionSetting().set(Help.browserVersion());
+ 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} */
+ 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;
« no previous file with comments | « third_party/WebKit/Source/devtools/BUILD.gn ('k') | third_party/WebKit/Source/devtools/front_end/help/ReleaseNote.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698