Chromium Code Reviews| OLD | NEW |
|---|---|
| (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 Help.ReleaseNoteManager = {}; | |
| 6 | |
| 7 /** | |
| 8 * @return {!Help.ReleaseNote} | |
| 9 */ | |
| 10 Help.ReleaseNoteManager.releaseNote = function() { | |
|
dgozman
2017/02/17 22:27:03
Help.latestReleaseNote = function() {}
chenwilliam
2017/02/17 23:23:49
Done.
| |
| 11 return Help.ReleaseNoteManager._releaseNote; | |
| 12 }; | |
| 13 | |
| 14 Help.ReleaseNoteManager.init = function() { | |
|
dgozman
2017/02/17 22:27:04
showIfNeeded
chenwilliam
2017/02/17 23:23:49
Done.
| |
| 15 /** @type {!Help.ReleaseNote} */ | |
| 16 Help.ReleaseNoteManager._releaseNote = | |
|
dgozman
2017/02/17 22:27:03
I'd init this lazily on the first call to latestRe
chenwilliam
2017/02/17 23:23:49
Done.
| |
| 17 Help.ReleaseNoteManager._getReleaseNoteByVersion(Help.ReleaseNoteManager._ browserVersion); | |
| 18 /** @type {!Common.Setting} */ | |
| 19 Help.ReleaseNoteManager._versionSetting = Common.settings.createSetting('relea seNoteVersionSeen', 0, false); | |
| 20 /** @type {number} */ | |
| 21 Help.ReleaseNoteManager._browserVersion = Help.ReleaseNoteManager._getBrowserV ersion(); | |
| 22 | |
| 23 Help.ReleaseNoteManager._maybeShowInDrawer( | |
| 24 Help.ReleaseNoteManager._versionSetting.get(), Help.ReleaseNoteManager._br owserVersion); | |
| 25 }; | |
| 26 | |
| 27 /** | |
| 28 * @param {number} lastSeenVersion | |
| 29 * @param {number} browserVersion | |
| 30 * @return {?Promise<?UI.Panel>} | |
| 31 */ | |
| 32 Help.ReleaseNoteManager._maybeShowInDrawer = function(lastSeenVersion, browserVe rsion) { | |
| 33 if (!Runtime.experiments.isEnabled('releaseNote')) | |
| 34 return null; | |
| 35 if (lastSeenVersion >= browserVersion) | |
| 36 return null; | |
| 37 if (Help.ReleaseNoteManager._releaseNote.version !== browserVersion) | |
| 38 return null; | |
| 39 Help.ReleaseNoteManager._versionSetting.set(Help.ReleaseNoteManager._browserVe rsion); | |
| 40 return UI.inspectorView.showPanel(Help._releaseNoteViewId); | |
| 41 }; | |
| 42 | |
| 43 | |
| 44 /** | |
| 45 * @param {number} version | |
| 46 * @return {!Help.ReleaseNote} | |
| 47 */ | |
| 48 Help.ReleaseNoteManager._getReleaseNoteByVersion = function(version) { | |
| 49 var note; | |
| 50 while (version) { | |
| 51 note = Help.releaseNotesByVersion.find(note => note.version === version); | |
| 52 if (note) | |
| 53 return note; | |
| 54 version--; | |
| 55 } | |
| 56 return Help.releaseNotesByVersion[Help.releaseNotesByVersion.length - 1]; | |
| 57 }; | |
| 58 | |
| 59 /** | |
| 60 * @return {number} | |
| 61 */ | |
| 62 Help.ReleaseNoteManager._getBrowserVersion = function() { | |
| 63 var chromeRegex = new RegExp('(?:^|\\W)Chrome/(\\S+)'); | |
| 64 var chromeMatch = navigator.userAgent.match(chromeRegex); | |
| 65 return parseInt(chromeMatch[1].split('.')[0], 10); | |
| 66 }; | |
| 67 | |
| 68 Help.ReleaseNoteView = class extends UI.VBox { | |
| 69 constructor() { | |
| 70 super(true); | |
| 71 this.registerRequiredCSS('help/releaseNote.css'); | |
| 72 this._releaseNoteElement = this._createReleaseNoteElement(Help.ReleaseNoteMa nager.releaseNote()); | |
| 73 this.contentElement.appendChild(this._releaseNoteElement); | |
| 74 } | |
| 75 | |
| 76 /** | |
| 77 * @param {!Help.ReleaseNote} releaseNote | |
| 78 * @return {!Element} | |
| 79 */ | |
| 80 _createReleaseNoteElement(releaseNote) { | |
| 81 var container = createElementWithClass('div', 'release-note-container'); | |
| 82 insertText(container); | |
| 83 insertImage(container); | |
| 84 return container; | |
| 85 | |
| 86 /** | |
| 87 * @param {!Element} container | |
| 88 */ | |
| 89 function insertText(container) { | |
| 90 var textContainer = container.createChild('div', 'release-note-text-contai ner'); | |
| 91 textContainer.createChild('div', 'release-note-header').textContent = | |
| 92 Common.UIString('New in DevTools v%d', releaseNote.version); | |
| 93 var highlightContainer = textContainer.createChild('ul', 'release-note-hig hlight-container'); | |
| 94 for (var highlight of releaseNote.highlights) { | |
| 95 var className = highlight.featured ? 'release-note-featured-link' : 'rel ease-note-link'; | |
| 96 var highlightLink = UI.createExternalLink(highlight.link, highlight.text , className); | |
| 97 highlightContainer.createChild('li').appendChild(highlightLink); | |
| 98 } | |
| 99 | |
| 100 var openReleaseNote = (event) => { | |
| 101 event.consume(true); | |
| 102 InspectorFrontendHost.openInNewTab(releaseNote.link); | |
| 103 }; | |
| 104 var viewMoreButton = UI.createTextButton(Common.UIString('And more...'), o penReleaseNote); | |
| 105 textContainer.appendChild(viewMoreButton); | |
| 106 | |
| 107 var closeDrawerTab = (event) => { | |
| 108 event.consume(true); | |
| 109 UI.inspectorView.closeDrawerTab(Help._releaseNoteViewId, true); | |
| 110 }; | |
| 111 var closeButton = UI.createTextButton(Common.UIString('Hide'), closeDrawer Tab, 'close-release-note'); | |
| 112 textContainer.appendChild(closeButton); | |
| 113 } | |
| 114 | |
| 115 /** | |
| 116 * @param {!Element} container | |
| 117 */ | |
| 118 function insertImage(container) { | |
| 119 var imageLink = UI.createExternalLink(releaseNote.link, ' ', 'release-note -image-container'); | |
| 120 container.appendChild(imageLink); | |
| 121 var image = imageLink.createChild('img', 'release-note-image'); | |
| 122 image.src = releaseNote.image.src; | |
| 123 image.addEventListener('mouseover', e => container.classList.add('image-ho ver')); | |
| 124 image.addEventListener('mouseout', e => container.classList.remove('image- hover')); | |
| 125 } | |
| 126 } | |
| 127 }; | |
| 128 | |
| 129 /** | |
| 130 * @const | |
| 131 * @type {string} | |
| 132 */ | |
| 133 Help._releaseNoteViewId = 'release-note'; | |
| 134 | |
| 135 /** @typedef {!{src: string}} */ | |
| 136 Help.ReleaseNoteImage; | |
| 137 | |
| 138 /** @typedef {!{text: string, link: string, featured: (boolean | undefined)}} */ | |
| 139 Help.ReleaseNoteHighlight; | |
| 140 | |
| 141 /** @typedef {!{version: number, highlights: !Array<!Help.ReleaseNoteHighlight>, link: string, image: !Help.ReleaseNoteImage}} */ | |
| 142 Help.ReleaseNote; | |
| OLD | NEW |