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

Unified Diff: chrome/browser/resources/ntp4/apps_page.js

Issue 8208014: Update the notification bubble. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 2 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: chrome/browser/resources/ntp4/apps_page.js
===================================================================
--- chrome/browser/resources/ntp4/apps_page.js (revision 104705)
+++ chrome/browser/resources/ntp4/apps_page.js (working copy)
@@ -284,30 +284,57 @@
this.classList.remove('icon-loading');
},
- // Shows a notification text below the app icon and stuffs the attributes
- // necessary to show the bubble when the user clicks on the notification
- // text.
- setupNotification_: function(notification) {
- // Remove the old notification from this node (if any).
- if (this.appNotification_)
- this.appNotification_.parentNode.removeChild(this.appNotification_);
+ /*
arv (Not doing code reviews) 2011/10/14 22:20:55 Missing * /**
+ * Creates a bubble node.
+ * @param {Object} notification The notification to show in the bubble.
+ * @param {boolean} full Whether we want the headline or just the content.
arv (Not doing code reviews) 2011/10/14 22:20:55 @private
+ */
+ createBubbleNode_: function(notification, full) {
+ if (!full) {
+ var titleItem = this.ownerDocument.createElement('span');
+ titleItem.textContent = notification['title'];
+ return titleItem;
+ } else {
+ var container = this.ownerDocument.createElement('div');
+ var messageItem = this.ownerDocument.createElement('div');
+ messageItem.textContent = notification['body'];
+ container.appendChild(messageItem);
+
+ if (notification['linkUrl'] && notification['linkText']) {
+ var anchor = this.ownerDocument.createElement('a');
+ anchor.href = notification['linkUrl'];
+ anchor.textContent = notification['linkText'];
+ container.appendChild(anchor);
+ }
+
+ return container;
+ }
+ },
+
+ /*
arv (Not doing code reviews) 2011/10/14 22:20:55 Fix comment format here too
+ * Sets up a notification for the app icon.
+ * @param {Object} notification The notification to show in the bubble.
+ */
+ setupNotification_: function(notification) {
if (notification) {
- // Add a new notification to this node.
- var appNotification = this.ownerDocument.createElement('span');
- appNotification.className = 'app-notification';
- appNotification.textContent = notification['title'];
- appNotification.addEventListener('click',
- this.onNotificationClick_.bind(this));
- appNotification.notificationTitle = notification['title'];
- appNotification.notificationMessage = notification['body'];
- if (typeof notification['linkUrl'] != 'undefined' &&
- typeof notification['linkText'] != 'undefined') {
- appNotification.notificationLink = notification['linkUrl'];
- appNotification.notificationLinkText = notification['linkText'];
+ var infoBubble;
+ if (!this.infoBubbleShowing_) {
+ // Create a new bubble.
+ infoBubble = new cr.ui.ExpandableBubble;
+ infoBubble.anchorNode = this;
+ infoBubble.dismissOnBlur = false;
+ } else {
+ // Reuse the old bubble instead of popping up a new bubble over
+ // the old one.
+ infoBubble = this.infoBubbleShowing_;
+ infoBubble.collapseBubble_();
}
- this.appNotification_ = appNotification;
- this.appendChild(appNotification);
+ infoBubble.contentTitle = this.createBubbleNode_(notification, false);
+ infoBubble.content = this.createBubbleNode_(notification, true);
+ infoBubble.show();
+
+ this.infoBubbleShowing_ = infoBubble;
Evan Stade 2011/10/14 18:22:59 can you document this? Also currentlyShowingInfoBu
}
},
@@ -399,41 +426,6 @@
},
/**
- * Invoked when an app notification is clicked. This will show the
- * notification bubble, containing the details of the notification.
- * @param {Event} e The click event.
- * @private
- */
- onNotificationClick_: function(e) {
- var title = this.appNotification_.notificationTitle;
- var message = this.appNotification_.notificationMessage;
- var link = this.appNotification_.notificationLink;
- var linkMessage = this.appNotification_.notificationLinkText;
-
- if (!title || !message)
- return;
-
- var container = this.ownerDocument.createElement('div');
- var titleItem = this.ownerDocument.createElement('strong');
- titleItem.textContent = title;
- container.appendChild(titleItem);
- var messageDiv = this.ownerDocument.createElement('div');
- messageDiv.textContent = message;
- container.appendChild(messageDiv);
- if (link && linkMessage) {
- var anchor = this.ownerDocument.createElement('a');
- anchor.href = link;
- anchor.textContent = linkMessage;
- container.appendChild(anchor);
- }
-
- var infoBubble = new cr.ui.Bubble;
- infoBubble.anchorNode = e.target;
- infoBubble.content = container;
- infoBubble.show();
- },
-
- /**
* Adds a node to the list of targets that will launch the app. This list
* is also used in onMousedown to determine whether the app contents should
* be shown as active (if we don't do this, then clicking anywhere in
@@ -516,6 +508,9 @@
this.tile.tilePage.cleanupDrag();
this.tile.parentNode.removeChild(this.tile);
+
+ if (this.infoBubbleShowing_)
+ infoBubbleShowing_.hide();
},
/**
« no previous file with comments | « no previous file | chrome/browser/resources/ntp4/new_tab.html » ('j') | chrome/browser/resources/shared/css/expandable_bubble.css » ('J')

Powered by Google App Engine
This is Rietveld 408576698