| Index: chrome/test/data/extensions/samples/gmail_browser_action/background.html
|
| diff --git a/chrome/test/data/extensions/samples/gmail_browser_action/background.html b/chrome/test/data/extensions/samples/gmail_browser_action/background.html
|
| index 83d0f51196541c766f31817ac04475a8b08bc03c..48843e763a1ddd56b7bc3fadcf1099e0381664bc 100644
|
| --- a/chrome/test/data/extensions/samples/gmail_browser_action/background.html
|
| +++ b/chrome/test/data/extensions/samples/gmail_browser_action/background.html
|
| @@ -3,17 +3,59 @@
|
| <script>
|
| var animationFrames = 36;
|
| var animationSpeed = 10; // ms
|
| -var browserActionWidth = 27;
|
| -var browserActionHeight = 23;
|
| +var canvas;
|
| var canvasContext;
|
| var gmail = "http://mail.google.com/";
|
| var gmailAtomRef = "http://mail.google.com/mail/feed/atom";
|
| var loggedInImage;
|
| -var loggedOutImage;
|
| var pollInterval = 1000 * 10; // 10 seconds
|
| var requestTimeout = 1000 * 2; // 5 seconds
|
| var rotation = 0;
|
| -var unreadCount = 0;
|
| +var unreadCount = -1;
|
| +var loadingAnimation = new LoadingAnimation();
|
| +
|
| +
|
| +// A "loading" animation displayed while we wait for the first response from
|
| +// Gmail. This animates the badge text with a dot that cycles from left to
|
| +// right.
|
| +function LoadingAnimation() {
|
| + this.timerId_ = 0;
|
| + this.maxCount_ = 8; // Total number of states in animation
|
| + this.current_ = 0; // Current state
|
| + this.maxDot_ = 4; // Max number of dots in animation
|
| +}
|
| +
|
| +LoadingAnimation.prototype.paintFrame = function() {
|
| + var text = "";
|
| + for (var i = 0; i < this.maxDot_; i++) {
|
| + text += (i == this.current_) ? "." : " ";
|
| + }
|
| + if (this.current_ >= this.maxDot_)
|
| + text += "";
|
| +
|
| + chrome.browserAction.setBadgeText({text:text});
|
| + this.current_++;
|
| + if (this.current_ == this.maxCount_)
|
| + this.current_ = 0;
|
| +}
|
| +
|
| +LoadingAnimation.prototype.start = function() {
|
| + if (this.timerId_)
|
| + return;
|
| +
|
| + var self = this;
|
| + this.timerId_ = window.setInterval(function() {
|
| + self.paintFrame();
|
| + }, 100);
|
| +}
|
| +
|
| +LoadingAnimation.prototype.stop = function() {
|
| + if (!this.timerId_)
|
| + return;
|
| +
|
| + window.clearInterval(this.timerId_);
|
| + this.timerId_ = 0;
|
| +}
|
|
|
|
|
| chrome.tabs.onUpdated.addListener(function(tabId, changeInfo) {
|
| @@ -25,11 +67,15 @@ chrome.tabs.onUpdated.addListener(function(tabId, changeInfo) {
|
| }
|
| });
|
|
|
| +
|
| function init() {
|
| - var canvas = document.getElementById('canvas');
|
| + canvas = document.getElementById('canvas');
|
| loggedInImage = document.getElementById('logged_in');
|
| - loggedOutImage = document.getElementById('logged_out');
|
| canvasContext = canvas.getContext('2d');
|
| +
|
| + chrome.browserAction.setIcon({path: "gmail_logged_in.png"});
|
| + loadingAnimation.start();
|
| +
|
| startRequest();
|
| }
|
|
|
| @@ -41,10 +87,12 @@ function scheduleRequest() {
|
| function startRequest() {
|
| getInboxCount(
|
| function(count) {
|
| + loadingAnimation.stop();
|
| updateUnreadCount(count);
|
| scheduleRequest();
|
| },
|
| function() {
|
| + loadingAnimation.stop();
|
| showLoggedOut();
|
| scheduleRequest();
|
| }
|
| @@ -140,35 +188,30 @@ function animateFlip() {
|
| drawIconAtRotation();
|
| chrome.browserAction.setBadgeText({text:unreadCount});
|
| chrome.browserAction.setBadgeBackgroundColor({color:[208, 0, 24, 255]});
|
| - chrome.browserAction.setTitle({title:unreadCount + " unread emails"});
|
| }
|
| }
|
|
|
| function showLoggedOut() {
|
| - canvasContext.save();
|
| - canvasContext.clearRect(0, 0, browserActionWidth, browserActionHeight);
|
| - canvasContext.translate(browserActionWidth/2, browserActionHeight/2);
|
| - canvasContext.drawImage(loggedOutImage,
|
| - -loggedOutImage.width/2 - 1, -loggedOutImage.height/2);
|
| - canvasContext.restore();
|
| -
|
| - chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0,
|
| - browserActionWidth,browserActionHeight)});
|
| + unreadCount = -1;
|
| + chrome.browserAction.setIcon({path:"gmail_not_logged_in.png"});
|
| chrome.browserAction.setBadgeBackgroundColor({color:[190, 190, 190, 230]});
|
| chrome.browserAction.setBadgeText({text:"?"});
|
| }
|
|
|
| function drawIconAtRotation() {
|
| canvasContext.save();
|
| - canvasContext.clearRect(0, 0, browserActionWidth, browserActionHeight);
|
| - canvasContext.translate(browserActionWidth/2, browserActionHeight/2);
|
| + canvasContext.clearRect(0, 0, canvas.width, canvas.height);
|
| + canvasContext.translate(
|
| + Math.ceil(canvas.width/2),
|
| + Math.ceil(canvas.height/2));
|
| canvasContext.rotate(2*Math.PI*ease(rotation));
|
| canvasContext.drawImage(loggedInImage,
|
| - -loggedInImage.width/2 - 1, -loggedInImage.height/2);
|
| + -Math.ceil(canvas.width/2),
|
| + -Math.ceil(canvas.height/2));
|
| canvasContext.restore();
|
|
|
| chrome.browserAction.setIcon({imageData:canvasContext.getImageData(0, 0,
|
| - browserActionWidth,browserActionHeight)});
|
| + canvas.width,canvas.height)});
|
| }
|
|
|
| function goToInbox() {
|
| @@ -184,8 +227,7 @@ chrome.browserAction.onClicked.addListener(function(tab) {
|
| </head>
|
| <body onload="init()">
|
| <img id="logged_in" src="gmail_logged_in.png">
|
| -<img id="logged_out" src="gmail_not_logged_in.png">
|
| -<canvas id="canvas" width="27" height="23">
|
| +<canvas id="canvas" width="19" height="19">
|
| </body>
|
| </html>
|
|
|
|
|