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

Unified Diff: chrome/browser/resources/chromeos/chromevox/cvox2/background/tutorial.js

Issue 2480203002: ui: Cleanup class/struct forward declarations (Closed)
Patch Set: Sync CL to position 430550 Created 4 years, 1 month 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: chrome/browser/resources/chromeos/chromevox/cvox2/background/tutorial.js
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/tutorial.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/tutorial.js
index 38127b92f78b104734b4c163cc230e3c1be7a359..123f9f24b61d9661486f0800327bdfe03b2c16e5 100644
--- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/tutorial.js
+++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/tutorial.js
@@ -19,7 +19,10 @@ Tutorial = function() {
* @type {number}
* @private
*/
- this.page_ = 0;
+ this.page_;
+
+ this.page = sessionStorage['tutorial_page_pos'] !== undefined ?
+ sessionStorage['tutorial_page_pos'] : 0;
};
/**
@@ -28,7 +31,7 @@ Tutorial = function() {
* a message ID for some text, and optional attributes indicating if it's
* a heading, link, text for only one platform, etc.
*
- * @type Array<Object>
+ * @type Array<Array<Object>>
*/
Tutorial.PAGES = [
[
@@ -57,6 +60,8 @@ Tutorial.PAGES = [
[
{ msgid: 'tutorial_jump_heading', heading: true },
{ msgid: 'tutorial_jump' },
+ { msgid: 'tutorial_jump_second_heading', heading: true },
+ { msgid: 'tutorial_jump_wrap_heading', heading: true },
{ msgid: 'tutorial_click_next' },
],
[
@@ -67,8 +72,7 @@ Tutorial.PAGES = [
[
{ msgid: 'tutorial_chrome_shortcuts_heading', heading: true },
{ msgid: 'tutorial_chrome_shortcuts' },
- { msgid: 'tutorial_chromebook_ctrl_forward', chromebookOnly: true },
- { msgid: 'tutorial_chromeos_ctrl_f2', chromebookOnly: false },
+ { msgid: 'tutorial_chromebook_ctrl_forward', chromebookOnly: true }
],
[
{ msgid: 'tutorial_learn_more_heading', heading: true },
@@ -83,53 +87,129 @@ Tutorial.PAGES = [
];
Tutorial.prototype = {
- /** Open the first page in the tutorial. */
- firstPage: function() {
- this.page_ = 0;
- this.showPage_();
+ /** Open the last viewed page in the tutorial. */
+ lastViewedPage: function() {
+ this.page = sessionStorage['tutorial_page_pos'] !== undefined ?
+ sessionStorage['tutorial_page_pos'] : 0;
+ if (this.page == -1)
+ this.page = 0;
+ this.showCurrentPage_();
+ },
+
+ /** Open the update notes page. */
+ updateNotes: function() {
+ delete sessionStorage['tutorial_page_pos'];
+ this.page = -1;
+ this.showPage_([
+ { msgid: 'update_56_title', heading: true },
+ { msgid: 'update_56_intro' },
+ {
+ list: true,
+ items: [
+ {msgid: 'update_56_item_1', listItem: true},
+ {msgid: 'update_56_item_2', listItem: true},
+ {msgid: 'update_56_item_3', listItem: true},
+ ],
+ },
+ { msgid: 'update_56_OUTTRO' },
+ ]);
},
/** Move to the next page in the tutorial. */
nextPage: function() {
- if (this.page_ < Tutorial.PAGES.length - 1) {
- this.page_++;
- this.showPage_();
+ if (this.page < Tutorial.PAGES.length - 1) {
+ this.page++;
+ this.showCurrentPage_();
}
},
/** Move to the previous page in the tutorial. */
previousPage: function() {
- if (this.page_ > 0) {
- this.page_--;
- this.showPage_();
+ if (this.page > 0) {
+ this.page--;
+ this.showCurrentPage_();
}
},
/**
- * Recreate the tutorial DOM for page |this.page_|.
+ * Shows the page for page |this.page_|.
+ */
+ showCurrentPage_: function() {
+ var pageElements = Tutorial.PAGES[this.page] || [];
+ this.showPage_(pageElements);
+ },
+
+ /**
+ * Recreate the tutorial DOM using |pageElements|.
+ * @param {!Array<Object>} pageElements
* @private
*/
- showPage_: function() {
+ showPage_: function(pageElements) {
var tutorialContainer = $('tutorial_main');
tutorialContainer.innerHTML = '';
+ this.buildDom_(pageElements, tutorialContainer);
+ this.finalizeDom_();
+ },
- var pageElements = Tutorial.PAGES[this.page_];
+ /**
+ * Builds a dom under the container
+ * @param {!Array<Object>} pageElements
+ * @param {!Node} container
+ * @private
+ */
+ buildDom_: function(pageElements, container) {
+ var focus;
for (var i = 0; i < pageElements.length; ++i) {
var pageElement = pageElements[i];
var msgid = pageElement.msgid;
- var text = Msgs.getMsg(msgid);
+ var text = '';
+ if (msgid)
+ text = Msgs.getMsg(msgid);
var element;
if (pageElement.heading) {
element = document.createElement('h2');
+ element.setAttribute('tabindex', -1);
+ if (!focus)
+ focus = element;
+ } else if (pageElement.list) {
+ element = document.createElement('ul');
+ this.buildDom_(pageElement.items, element);
+ } else if (pageElement.listItem) {
+ element = document.createElement('li');
} else if (pageElement.link) {
element = document.createElement('a');
element.href = pageElement.link;
- element.target = '_blank';
+ element.setAttribute('tabindex', 0);
+ element.addEventListener('click', function(evt) {
+ Panel.closeMenusAndRestoreFocus();
+ chrome.windows.create({url: evt.target.href});
+ return false;
+ }, false);
} else {
element = document.createElement('p');
}
- element.innerText = text;
- tutorialContainer.appendChild(element);
+ if (text)
+ element.innerText = text;
+ container.appendChild(element);
}
+ if (focus)
+ focus.focus();
+ },
+
+ /** @private */
+ finalizeDom_: function() {
+ var disableNext = this.page == (Tutorial.PAGES.length - 1);
+ var disablePrevious = this.page == 0;
+ $('tutorial_next').setAttribute('aria-disabled', disableNext);
+ $('tutorial_previous').setAttribute('aria-disabled', disablePrevious);
+ },
+
+ get page() {
+ return this.page_;
+ },
+
+ set page(val) {
+ this.page_ = val;
+ sessionStorage['tutorial_page_pos'] = this.page_;
}
};

Powered by Google App Engine
This is Rietveld 408576698