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

Side by Side Diff: chrome/browser/resources/file_manager/js/file_manager.js

Issue 10818031: Alternative GDrive promo for the File Manager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 8 years, 4 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * FileManager constructor. 6 * FileManager constructor.
7 * 7 *
8 * FileManager objects encapsulate the functionality of the file selector 8 * FileManager objects encapsulate the functionality of the file selector
9 * dialogs, as well as the full screen file manager application (though the 9 * dialogs, as well as the full screen file manager application (though the
10 * latter is not yet implemented). 10 * latter is not yet implemented).
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 var DOWNLOADS_FAQ_URL = 74 var DOWNLOADS_FAQ_URL =
75 'http://support.google.com/chromeos/bin/answer.py?answer=1061547'; 75 'http://support.google.com/chromeos/bin/answer.py?answer=1061547';
76 76
77 /** 77 /**
78 * Location of the FAQ about Google Drive. 78 * Location of the FAQ about Google Drive.
79 */ 79 */
80 var GOOGLE_DRIVE_FAQ_URL = 80 var GOOGLE_DRIVE_FAQ_URL =
81 'https://support.google.com/chromeos/?p=filemanager_drive'; 81 'https://support.google.com/chromeos/?p=filemanager_drive';
82 82
83 /** 83 /**
84 * Location of the Chromebook information page.
85 */
86 var CHROMEBOOK_INFO_URL = 'http://google.com/chromebook';
87
88 /**
84 * Location of the page to buy more storage for Google Drive. 89 * Location of the page to buy more storage for Google Drive.
85 */ 90 */
86 var GOOGLE_DRIVE_BUY_STORAGE = 91 var GOOGLE_DRIVE_BUY_STORAGE =
87 'https://www.google.com/settings/storage'; 92 'https://www.google.com/settings/storage';
88 93
89 /** 94 /**
90 * Location of Google Drive specific help. 95 * Location of Google Drive specific help.
91 */ 96 */
92 var GOOGLE_DRIVE_HELP = 97 var GOOGLE_DRIVE_HELP =
93 'https://support.google.com/chromeos/?p=filemanager_drivehelp'; 98 'https://support.google.com/chromeos/?p=filemanager_drivehelp';
(...skipping 3930 matching lines...) Expand 10 before | Expand all | Expand 10 after
4024 }; 4029 };
4025 4030
4026 FileManager.prototype.showGDataWelcome_ = function(type) { 4031 FileManager.prototype.showGDataWelcome_ = function(type) {
4027 if (this.dialogContainer_.getAttribute('gdrive-welcome') != type) { 4032 if (this.dialogContainer_.getAttribute('gdrive-welcome') != type) {
4028 this.dialogContainer_.setAttribute('gdrive-welcome', type); 4033 this.dialogContainer_.setAttribute('gdrive-welcome', type);
4029 this.requestResize_(200); // Resize only after the animation is done. 4034 this.requestResize_(200); // Resize only after the animation is done.
4030 } 4035 }
4031 }; 4036 };
4032 4037
4033 FileManager.prototype.createGDataWelcomeHandler_ = function() { 4038 FileManager.prototype.createGDataWelcomeHandler_ = function() {
4039 var board = str('CHROMEOS_RELEASE_BOARD');
4040 var new_welcome = board.match(/^(stumpy|lumpy)/i);
4041
4034 var WELCOME_HEADER_COUNTER_KEY = 'gdataWelcomeHeaderCounter'; 4042 var WELCOME_HEADER_COUNTER_KEY = 'gdataWelcomeHeaderCounter';
4035 var WELCOME_HEADER_COUNTER_LIMIT = 5; 4043 var WELCOME_HEADER_COUNTER_LIMIT = 5;
4036 4044
4037 function getHeaderCounter() { 4045 function getHeaderCounter() {
4038 return parseInt(localStorage[WELCOME_HEADER_COUNTER_KEY] || '0'); 4046 return parseInt(localStorage[WELCOME_HEADER_COUNTER_KEY] || '0');
4039 } 4047 }
4040 4048
4041 if (getHeaderCounter() >= WELCOME_HEADER_COUNTER_LIMIT) 4049 if (getHeaderCounter() >= WELCOME_HEADER_COUNTER_LIMIT)
4042 return null; 4050 return null;
4043 4051
(...skipping 20 matching lines...) Expand all
4064 self.showGDataWelcome_(type); 4072 self.showGDataWelcome_(type);
4065 4073
4066 var container = self.dialogDom_.querySelector('.gdrive-welcome.' + type); 4074 var container = self.dialogDom_.querySelector('.gdrive-welcome.' + type);
4067 if (container.firstElementChild) 4075 if (container.firstElementChild)
4068 return; // Do not re-create. 4076 return; // Do not re-create.
4069 4077
4070 var wrapper = createDiv('gdrive-welcome-wrapper', container); 4078 var wrapper = createDiv('gdrive-welcome-wrapper', container);
4071 createDiv('gdrive-welcome-icon', wrapper); 4079 createDiv('gdrive-welcome-icon', wrapper);
4072 4080
4073 var close = createDiv('cr-dialog-close', wrapper); 4081 var close = createDiv('cr-dialog-close', wrapper);
4074 close.addEventListener('click', closeBanner); 4082 close.addEventListener('click', dismissBanner);
4075 4083
4076 var message = createDiv('gdrive-welcome-message', wrapper); 4084 var message = createDiv('gdrive-welcome-message', wrapper);
4077 4085
4078 var title = createDiv('gdrive-welcome-title', message); 4086 var title = createDiv('gdrive-welcome-title', message);
4079 title.textContent = str('GDATA_WELCOME_TITLE');
4080 4087
4081 var text = createDiv('gdrive-welcome-text', message); 4088 var text = createDiv('gdrive-welcome-text', message);
4082 text.innerHTML = str(messageId); 4089 text.innerHTML = str(messageId);
4083 4090
4084 var links = createDiv('gdrive-welcome-links', message); 4091 var links = createDiv('gdrive-welcome-links', message);
4085 4092
4086 var more = createDiv('gdrive-welcome-more plain-link', links); 4093 var more;
4087 more.textContent = str('GDATA_LEARN_MORE'); 4094 if (new_welcome) {
4088 more.addEventListener('click', 4095 title.textContent = str('GDATA_WELCOME_TITLE_ALTERNATIVE');
4089 self.onExternalLinkClick_.bind(self, GOOGLE_DRIVE_FAQ_URL)); 4096 more = links.ownerDocument.createElement('a');
Dmitry Zvorygin 2012/07/25 15:15:46 Why not to use this.document(or self.document, alt
Vladislav Kaznacheev 2012/07/25 16:45:13 Changed to self.document_ On 2012/07/25 15:15:46,
4097 more.className = 'gdata-welcome-button gdata-welcome-start';
4098 more.textContent = str('GDATA_WELCOME_GET_STARTED');
4099 more.addEventListener('click',
4100 self.onExternalLinkClick_.bind(self, CHROMEBOOK_INFO_URL));
4101 more.addEventListener('click', hideBanner);
4102 } else {
4103 title.textContent = str('GDATA_WELCOME_TITLE');
4104 more = links.ownerDocument.createElement('div');
4105 more.className = 'plain-link';
4106 more.textContent = str('GDATA_LEARN_MORE');
4107 more.addEventListener('click',
4108 self.onExternalLinkClick_.bind(self, GOOGLE_DRIVE_FAQ_URL));
4109 }
4110 links.appendChild(more);
4090 4111
4091 var dismiss = createDiv('gdrive-welcome-dismiss plain-link', links); 4112 var dismiss;
4113 if (new_welcome) {
4114 dismiss = links.ownerDocument.createElement('a');
4115 dismiss.className = 'gdata-welcome-button';
4116 } else {
4117 dismiss = links.ownerDocument.createElement('div');
4118 dismiss.className = 'plain-link';
4119 }
4120 dismiss.classList.add('gdrive-welcome-dismiss');
4092 dismiss.textContent = str('GDATA_WELCOME_DISMISS'); 4121 dismiss.textContent = str('GDATA_WELCOME_DISMISS');
4093 dismiss.addEventListener('click', closeBanner); 4122 dismiss.addEventListener('click', dismissBanner);
4123 links.appendChild(dismiss);
4094 } 4124 }
4095 4125
4096 var previousDirWasOnGData = false; 4126 var previousDirWasOnGData = false;
4097 4127
4098 function maybeShowBanner() { 4128 function maybeShowBanner() {
4099 if (!self.isOnGData()) { 4129 if (!self.isOnGData()) {
4100 self.showGDataWelcome_('none'); 4130 self.showGDataWelcome_('none');
4101 previousDirWasOnGData = false; 4131 previousDirWasOnGData = false;
4102 return; 4132 return;
4103 } 4133 }
(...skipping 11 matching lines...) Expand all
4115 showBanner('page', 'GDATA_WELCOME_TEXT_LONG'); 4145 showBanner('page', 'GDATA_WELCOME_TEXT_LONG');
4116 }, 2000); 4146 }, 2000);
4117 } else if (counter < WELCOME_HEADER_COUNTER_LIMIT) { 4147 } else if (counter < WELCOME_HEADER_COUNTER_LIMIT) {
4118 // We do not want to increment the counter when the user navigates 4148 // We do not want to increment the counter when the user navigates
4119 // between different directories on GDrive, but we increment the counter 4149 // between different directories on GDrive, but we increment the counter
4120 // once anyway to prevent the full page banner from showing. 4150 // once anyway to prevent the full page banner from showing.
4121 if (!previousDirWasOnGData || counter == 0) 4151 if (!previousDirWasOnGData || counter == 0)
4122 localStorage[WELCOME_HEADER_COUNTER_KEY] = ++counter; 4152 localStorage[WELCOME_HEADER_COUNTER_KEY] = ++counter;
4123 showBanner('header', 'GDATA_WELCOME_TEXT_SHORT'); 4153 showBanner('header', 'GDATA_WELCOME_TEXT_SHORT');
4124 } else { 4154 } else {
4125 closeBanner(); 4155 dismissBanner();
4126 } 4156 }
4127 previousDirWasOnGData = true; 4157 previousDirWasOnGData = true;
4128 } 4158 }
4129 4159
4130 function closeBanner() { 4160 function hideBanner() {
4131 self.cleanupGDataWelcome_(); 4161 self.cleanupGDataWelcome_();
4132 // Stop showing the welcome banner. 4162 }
4163
4164 // Hide the welcome banner and prevent it from showing again.
4165 function dismissBanner() {
4166 hideBanner();
4133 localStorage[WELCOME_HEADER_COUNTER_KEY] = WELCOME_HEADER_COUNTER_LIMIT; 4167 localStorage[WELCOME_HEADER_COUNTER_KEY] = WELCOME_HEADER_COUNTER_LIMIT;
4134 } 4168 }
4135 4169
4136 return maybeShowBanner; 4170 function checkSpaceAndShowBanner() {
4171 if (new_welcome && self.isOnGData())
4172 chrome.fileBrowserPrivate.getSizeStats(self.getCurrentDirectoryURL(),
4173 function(result) {
4174 if (result.totalSizeKB < 100 * 1024 * 1024)
Dmitry Zvorygin 2012/07/25 15:15:46 Consider using util.SCALE.
Vladislav Kaznacheev 2012/07/25 16:45:13 I tried and it looks even less readable. Added a c
4175 maybeShowBanner();
4176 else
4177 dismissBanner();
4178 });
4179 else
4180 maybeShowBanner();
4181 }
4182
4183 return checkSpaceAndShowBanner;
4137 }; 4184 };
4138 4185
4139 /** 4186 /**
4140 * Listener invoked on gdata menu show event, to update gdata free/total 4187 * Listener invoked on gdata menu show event, to update gdata free/total
4141 * space info in opened menu. 4188 * space info in opened menu.
4142 * @private 4189 * @private
4143 */ 4190 */
4144 FileManager.prototype.onGDataMenuShow_ = function() { 4191 FileManager.prototype.onGDataMenuShow_ = function() {
4145 this.updateCommands_(); 4192 this.updateCommands_();
4146 this.gdataSpaceInfoBar_.setAttribute('pending', ''); 4193 this.gdataSpaceInfoBar_.setAttribute('pending', '');
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
4178 this.defaultActionMenuItem_.taskId = taskItem.taskId; 4225 this.defaultActionMenuItem_.taskId = taskItem.taskId;
4179 } 4226 }
4180 4227
4181 var defaultActionSeparator = 4228 var defaultActionSeparator =
4182 this.dialogDom_.querySelector('#default-action-separator'); 4229 this.dialogDom_.querySelector('#default-action-separator');
4183 4230
4184 this.defaultActionMenuItem_.hidden = !taskItem; 4231 this.defaultActionMenuItem_.hidden = !taskItem;
4185 defaultActionSeparator.hidden = !taskItem; 4232 defaultActionSeparator.hidden = !taskItem;
4186 } 4233 }
4187 })(); 4234 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698