Bug 935815 - [Australis] UITour: Allow adding a button with an action to the info panel. r=MattN
☠☠ backed out by cd24da528bf3 ☠ ☠
authorBlair McBride <bmcbride@mozilla.com>
Thu, 19 Dec 2013 12:36:29 +1300
changeset 161201 be2eafebfb4d2816c22c5b1c171f9c5b2e4a0456
parent 161200 72a80fc289f2fd128132fdd799c3c36f85eeea1a
child 161202 1cc2d61ff1a8ada8da7506b3946b3f3653ec2b3b
push id25871
push usercbook@mozilla.com
push dateThu, 19 Dec 2013 09:34:02 +0000
treeherdermozilla-central@5c7fa2bfea8b [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersMattN
bugs935815
milestone29.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 935815 - [Australis] UITour: Allow adding a button with an action to the info panel. r=MattN
browser/base/content/browser.xul
browser/modules/UITour.jsm
browser/modules/test/browser.ini
browser/modules/test/browser_UITour.js
browser/modules/test/image.png
browser/modules/test/uitour.html
browser/modules/test/uitour.js
browser/themes/shared/UITour.inc.css
--- a/browser/base/content/browser.xul
+++ b/browser/base/content/browser.xul
@@ -197,18 +197,26 @@
     <panel id="UITourTooltip"
            type="arrow"
            hidden="true"
            noautofocus="true"
            noautohide="true"
            align="start"
            orient="vertical"
            role="alert">
-      <label id="UITourTooltipTitle" flex="1"/>
-      <description id="UITourTooltipDescription" flex="1"/>
+      <hbox>
+        <vbox>
+          <image id="UITourTooltipIcon"/>
+        </vbox>
+        <vbox flex="1">
+          <label id="UITourTooltipTitle" flex="1"/>
+          <description id="UITourTooltipDescription" flex="1"/>
+          <hbox id="UITourTooltipButtons" flex="1" align="end"/>
+        </vbox>
+      </hbox>
     </panel>
     <panel id="UITourHighlightContainer"
            hidden="true"
            noautofocus="true"
            noautohide="true"
            consumeoutsideclicks="false">
       <box id="UITourHighlight"></box>
     </panel>
--- a/browser/modules/UITour.jsm
+++ b/browser/modules/UITour.jsm
@@ -17,16 +17,17 @@ XPCOMUtils.defineLazyModuleGetter(this, 
 XPCOMUtils.defineLazyModuleGetter(this, "PermissionsUtils",
   "resource://gre/modules/PermissionsUtils.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "CustomizableUI",
   "resource:///modules/CustomizableUI.jsm");
 
 
 const UITOUR_PERMISSION   = "uitour";
 const PREF_PERM_BRANCH    = "browser.uitour.";
+const MAX_BUTTONS         = 4;
 
 
 this.UITour = {
   originTabs: new WeakMap(),
   pinnedTabs: new WeakMap(),
   urlbarCapture: new WeakMap(),
   appMenuOpenForAnnotation: new Set(),
 
@@ -120,17 +121,44 @@ this.UITour = {
 
       case "showInfo": {
         let targetPromise = this.getTarget(window, data.target, true);
         targetPromise.then(target => {
           if (!target.node) {
             Cu.reportError("UITour: Target could not be resolved: " + data.target);
             return;
           }
-          this.showInfo(target, data.title, data.text);
+
+          let iconURL = null;
+          if (typeof data.icon == "string")
+            iconURL = this.resolveURL(contentDocument, data.icon);
+
+          let buttons = [];
+          if (Array.isArray(data.buttons) && data.buttons.length > 0) {
+            for (let buttonData of data.buttons) {
+              if (typeof buttonData == "object" &&
+                  typeof buttonData.label == "string" &&
+                  typeof buttonData.callbackID == "string") {
+                let button = {
+                  label: buttonData.label,
+                  callbackID: buttonData.callbackID,
+                };
+
+                if (typeof buttonData.icon == "string")
+                  button.iconURL = this.resolveURL(contentDocument, buttonData.icon);
+
+                buttons.push(button);
+
+                if (buttons.length == MAX_BUTTONS)
+                  break;
+              }
+            }
+          }
+
+          this.showInfo(contentDocument, target, data.title, data.text, iconURL, buttons);
         }).then(null, Cu.reportError);
         break;
       }
 
       case "hideInfo": {
         this.hideInfo(window);
         break;
       }
@@ -298,28 +326,68 @@ this.UITour = {
     if (aDocument.defaultView.top != aDocument.defaultView)
       return false;
 
     let uri = aDocument.documentURIObject;
 
     if (uri.schemeIs("chrome"))
       return true;
 
-    let allowedSchemes = new Set(["https"]);
-    if (!Services.prefs.getBoolPref("browser.uitour.requireSecure"))
-      allowedSchemes.add("http");
-
-    if (!allowedSchemes.has(uri.scheme))
+    if (!this.isSafeScheme(uri))
       return false;
 
     this.importPermissions();
     let permission = Services.perms.testPermission(uri, UITOUR_PERMISSION);
     return permission == Services.perms.ALLOW_ACTION;
   },
 
+  isSafeScheme: function(aURI) {
+    let allowedSchemes = new Set(["https"]);
+    if (!Services.prefs.getBoolPref("browser.uitour.requireSecure"))
+      allowedSchemes.add("http");
+
+    if (!allowedSchemes.has(aURI.scheme))
+      return false;
+
+    return true;
+  },
+
+  resolveURL: function(aDocument, aURL) {
+    try {
+      let uri = Services.io.newURI(aURL, null, aDocument.documentURIObject);
+
+      if (!this.isSafeScheme(uri))
+        return null;
+
+      return uri.spec;
+    } catch (e) {}
+
+    return null;
+  },
+
+  sendPageCallback: function(aDocument, aCallbackID, aData = {}) {
+    let detail = Cu.createObjectIn(aDocument.defaultView);
+    detail.data = Cu.createObjectIn(detail);
+
+    for (let key of Object.keys(aData))
+      detail.data[key] = aData[key];
+
+    Cu.makeObjectPropsNormal(detail.data);
+    Cu.makeObjectPropsNormal(detail);
+
+    detail.callbackID = aCallbackID;
+
+    let event = new aDocument.defaultView.CustomEvent("mozUITourResponse", {
+      bubbles: true,
+      detail: detail
+    });
+
+    aDocument.dispatchEvent(event);
+  },
+
   getTarget: function(aWindow, aTargetName, aSticky = false) {
     let deferred = Promise.defer();
     if (typeof aTargetName != "string" || !aTargetName) {
       deferred.reject("Invalid target name specified");
       return deferred.promise;
     }
 
     if (aTargetName == "pinnedTab") {
@@ -501,46 +569,76 @@ this.UITour = {
 
     let highlighter = aWindow.document.getElementById("UITourHighlight");
     highlighter.parentElement.hidePopup();
     highlighter.removeAttribute("active");
 
     this._setAppMenuStateForAnnotation(aWindow, "highlight", false);
   },
 
-  showInfo: function(aAnchor, aTitle, aDescription) {
+  showInfo: function(aContentDocument, aAnchor, aTitle = "", aDescription = "", aIconURL = "", aButtons = []) {
     function showInfoPanel(aAnchorEl) {
       aAnchorEl.focus();
 
       let document = aAnchorEl.ownerDocument;
       let tooltip = document.getElementById("UITourTooltip");
       let tooltipTitle = document.getElementById("UITourTooltipTitle");
       let tooltipDesc = document.getElementById("UITourTooltipDescription");
+      let tooltipIcon = document.getElementById("UITourTooltipIcon");
+      let tooltipButtons = document.getElementById("UITourTooltipButtons");
 
       if (tooltip.state == "open") {
         tooltip.hidePopup();
       }
 
       tooltipTitle.textContent = aTitle;
       tooltipDesc.textContent = aDescription;
+      tooltipIcon.src = aIconURL;
+      tooltipIcon.hidden = !aIconURL;
+
+      while (tooltipButtons.firstChild)
+        tooltipButtons.firstChild.remove();
+
+      for (let button of aButtons) {
+        let el = document.createElement("button");
+        el.setAttribute("label", button.label);
+        if (button.iconURL)
+          el.setAttribute("image", button.iconURL);
+
+        let callbackID = button.callbackID;
+        el.addEventListener("command", event => {
+          tooltip.hidePopup();
+          this.sendPageCallback(aContentDocument, callbackID);
+        });
+
+        tooltipButtons.appendChild(el);
+      }
+
+      tooltipButtons.hidden = !aButtons.length;
 
       tooltip.hidden = false;
       let alignment = "bottomcenter topright";
       tooltip.openPopup(aAnchorEl, alignment);
     }
 
     this._setAppMenuStateForAnnotation(aAnchor.node.ownerDocument.defaultView, "info",
                                        this.targetIsInAppMenu(aAnchor),
                                        showInfoPanel.bind(this, aAnchor.node));
   },
 
   hideInfo: function(aWindow) {
-    let tooltip = aWindow.document.getElementById("UITourTooltip");
+    let document = aWindow.document;
+
+    let tooltip = document.getElementById("UITourTooltip");
     tooltip.hidePopup();
     this._setAppMenuStateForAnnotation(aWindow, "info", false);
+
+    let tooltipButtons = document.getElementById("UITourTooltipButtons");
+    while (tooltipButtons.firstChild)
+      tooltipButtons.firstChild.remove();
   },
 
   showMenu: function(aWindow, aMenuName, aOpenCallback = null) {
     function openMenuButton(aId) {
       let menuBtn = aWindow.document.getElementById(aId);
       if (!menuBtn || !menuBtn.boxObject) {
         aOpenCallback();
         return;
--- a/browser/modules/test/browser.ini
+++ b/browser/modules/test/browser.ini
@@ -1,10 +1,10 @@
 [DEFAULT]
 support-files =
   head.js
 
 [browser_NetworkPrioritizer.js]
 [browser_SignInToWebsite.js]
 [browser_UITour.js]
-support-files = uitour.*
+support-files = uitour.* image.png
 [browser_taskbar_preview.js]
 run-if = os == "win"
--- a/browser/modules/test/browser_UITour.js
+++ b/browser/modules/test/browser_UITour.js
@@ -1,14 +1,15 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 let gTestTab;
+let gContentWindow;
 let gContentAPI;
 
 Components.utils.import("resource:///modules/UITour.jsm");
 
 function is_hidden(element) {
   var style = element.ownerDocument.defaultView.getComputedStyle(element, "");
   if (style.display == "none")
     return true;
@@ -61,32 +62,33 @@ function loadTestPage(callback, host = "
   url = url.replace("chrome://mochitests/content/", host);
 
   gTestTab = gBrowser.addTab(url);
   gBrowser.selectedTab = gTestTab;
 
   gTestTab.linkedBrowser.addEventListener("load", function onLoad() {
     gTestTab.linkedBrowser.removeEventListener("load", onLoad);
 
-    let contentWindow = Components.utils.waiveXrays(gTestTab.linkedBrowser.contentDocument.defaultView);
-    gContentAPI = contentWindow.Mozilla.UITour;
+    gContentWindow = Components.utils.waiveXrays(gTestTab.linkedBrowser.contentDocument.defaultView);
+    gContentAPI = gContentWindow.Mozilla.UITour;
 
-    waitForFocus(callback, contentWindow);
+    waitForFocus(callback, gContentWindow);
   }, true);
 }
 
 function test() {
   Services.prefs.setBoolPref("browser.uitour.enabled", true);
   let testUri = Services.io.newURI("http://example.com", null, null);
   Services.perms.add(testUri, "uitour", Services.perms.ALLOW_ACTION);
 
   waitForExplicitFinish();
 
   registerCleanupFunction(function() {
     delete window.UITour;
+    delete window.gContentWindow;
     delete window.gContentAPI;
     if (gTestTab)
       gBrowser.removeTab(gTestTab);
     delete window.gTestTab;
     Services.prefs.clearUserPref("browser.uitour.enabled", true);
     Services.perms.remove("example.com", "uitour");
   });
 
@@ -280,21 +282,26 @@ let tests = [
 
     gContentAPI.showHighlight("urlbar", "__UNSUPPORTED__");
     waitForElementToBeVisible(highlight, checkUnsupportedEffect, "Highlight should be shown after showHighlight()");
   },
   function test_info_1(done) {
     let popup = document.getElementById("UITourTooltip");
     let title = document.getElementById("UITourTooltipTitle");
     let desc = document.getElementById("UITourTooltipDescription");
+    let icon = document.getElementById("UITourTooltipIcon");
+    let buttons = document.getElementById("UITourTooltipButtons");
+
     popup.addEventListener("popupshown", function onPopupShown() {
       popup.removeEventListener("popupshown", onPopupShown);
       is(popup.popupBoxObject.anchorNode, document.getElementById("urlbar"), "Popup should be anchored to the urlbar");
       is(title.textContent, "test title", "Popup should have correct title");
       is(desc.textContent, "test text", "Popup should have correct description text");
+      is(icon.src, "", "Popup should have no icon");
+      is(buttons.hasChildNodes(), false, "Popup should have no buttons");
 
       popup.addEventListener("popuphidden", function onPopupHidden() {
         popup.removeEventListener("popuphidden", onPopupHidden);
 
         popup.addEventListener("popupshown", function onPopupShown() {
           popup.removeEventListener("popupshown", onPopupShown);
           done();
         });
@@ -306,21 +313,26 @@ let tests = [
     });
 
     gContentAPI.showInfo("urlbar", "test title", "test text");
   },
   function test_info_2(done) {
     let popup = document.getElementById("UITourTooltip");
     let title = document.getElementById("UITourTooltipTitle");
     let desc = document.getElementById("UITourTooltipDescription");
+    let icon = document.getElementById("UITourTooltipIcon");
+    let buttons = document.getElementById("UITourTooltipButtons");
+
     popup.addEventListener("popupshown", function onPopupShown() {
       popup.removeEventListener("popupshown", onPopupShown);
       is(popup.popupBoxObject.anchorNode, document.getElementById("urlbar"), "Popup should be anchored to the urlbar");
       is(title.textContent, "urlbar title", "Popup should have correct title");
       is(desc.textContent, "urlbar text", "Popup should have correct description text");
+      is(icon.src, "", "Popup should have no icon");
+      is(buttons.hasChildNodes(), false, "Popup should have no buttons");
 
       gContentAPI.showInfo("search", "search title", "search text");
       executeSoon(function() {
         is(popup.popupBoxObject.anchorNode, document.getElementById("searchbar"), "Popup should be anchored to the searchbar");
         is(title.textContent, "search title", "Popup should have correct title");
         is(desc.textContent, "search text", "Popup should have correct description text");
 
         done();
@@ -372,16 +384,124 @@ let tests = [
             gContentAPI.hideMenu("appMenu");
             ok(!PanelUI.panel.hasAttribute("noautohide"), "@noautohide on the menu panel should have been cleaned up on close");
             done();
           }, "Info should move to the appMenu button");
         });
       }, "Info should be shown after showInfo() for fixed menu panel items");
     });
   },
+  function test_info_icon(done) {
+    let popup = document.getElementById("UITourTooltip");
+    let title = document.getElementById("UITourTooltipTitle");
+    let desc = document.getElementById("UITourTooltipDescription");
+    let icon = document.getElementById("UITourTooltipIcon");
+    let buttons = document.getElementById("UITourTooltipButtons");
+
+    popup.addEventListener("popupshown", function onPopupShown() {
+      popup.removeEventListener("popupshown", onPopupShown);
+
+      is(title.textContent, "a title", "Popup should have correct title");
+      is(desc.textContent, "some text", "Popup should have correct description text");
+
+      let imageURL = getRootDirectory(gTestPath) + "image.png";
+      imageURL = imageURL.replace("chrome://mochitests/content/", "https://example.com/");
+      is(icon.src, imageURL,  "Popup should have correct icon shown");
+
+      is(buttons.hasChildNodes(), false, "Popup should have no buttons");
+
+      done();
+    });
+
+    gContentAPI.showInfo("urlbar", "a title", "some text", "image.png");
+  },
+  function test_info_buttons_1(done) {
+    let popup = document.getElementById("UITourTooltip");
+    let title = document.getElementById("UITourTooltipTitle");
+    let desc = document.getElementById("UITourTooltipDescription");
+    let icon = document.getElementById("UITourTooltipIcon");
+
+    popup.addEventListener("popupshown", function onPopupShown() {
+      popup.removeEventListener("popupshown", onPopupShown);
+
+      is(title.textContent, "another title", "Popup should have correct title");
+      is(desc.textContent, "moar text", "Popup should have correct description text");
+
+      let imageURL = getRootDirectory(gTestPath) + "image.png";
+      imageURL = imageURL.replace("chrome://mochitests/content/", "https://example.com/");
+      is(icon.src, imageURL,  "Popup should have correct icon shown");
+
+      let buttons = document.getElementById("UITourTooltipButtons");
+      is(buttons.childElementCount, 2, "Popup should have two buttons");
+
+      is(buttons.childNodes[0].getAttribute("label"), "Button 1", "First button should have correct label");
+      is(buttons.childNodes[0].getAttribute("image"), "", "First button should have no image");
+
+      is(buttons.childNodes[1].getAttribute("label"), "Button 2", "Second button should have correct label");
+      is(buttons.childNodes[1].getAttribute("image"), imageURL, "Second button should have correct image");
+
+      popup.addEventListener("popuphidden", function onPopupHidden() {
+        popup.removeEventListener("popuphidden", onPopupHidden);
+        ok(true, "Popup should close automatically");
+
+        executeSoon(function() {
+          is(gContentWindow.callbackResult, "button1", "Correct callback should have been called");
+
+          done();
+        });
+      });
+
+      EventUtils.synthesizeMouseAtCenter(buttons.childNodes[0], {}, window);
+    });
+
+    let buttons = gContentWindow.makeButtons();
+    gContentAPI.showInfo("urlbar", "another title", "moar text", "./image.png", buttons);
+  },
+  function test_info_buttons_2(done) {
+    let popup = document.getElementById("UITourTooltip");
+    let title = document.getElementById("UITourTooltipTitle");
+    let desc = document.getElementById("UITourTooltipDescription");
+    let icon = document.getElementById("UITourTooltipIcon");
+
+    popup.addEventListener("popupshown", function onPopupShown() {
+      popup.removeEventListener("popupshown", onPopupShown);
+
+      is(title.textContent, "another title", "Popup should have correct title");
+      is(desc.textContent, "moar text", "Popup should have correct description text");
+
+      let imageURL = getRootDirectory(gTestPath) + "image.png";
+      imageURL = imageURL.replace("chrome://mochitests/content/", "https://example.com/");
+      is(icon.src, imageURL,  "Popup should have correct icon shown");
+
+      let buttons = document.getElementById("UITourTooltipButtons");
+      is(buttons.childElementCount, 2, "Popup should have two buttons");
+
+      is(buttons.childNodes[0].getAttribute("label"), "Button 1", "First button should have correct label");
+      is(buttons.childNodes[0].getAttribute("image"), "", "First button should have no image");
+
+      is(buttons.childNodes[1].getAttribute("label"), "Button 2", "Second button should have correct label");
+      is(buttons.childNodes[1].getAttribute("image"), imageURL, "Second button should have correct image");
+
+      popup.addEventListener("popuphidden", function onPopupHidden() {
+        popup.removeEventListener("popuphidden", onPopupHidden);
+        ok(true, "Popup should close automatically");
+
+        executeSoon(function() {
+          is(gContentWindow.callbackResult, "button2", "Correct callback should have been called");
+
+          done();
+        });
+      });
+
+      EventUtils.synthesizeMouseAtCenter(buttons.childNodes[1], {}, window);
+    });
+
+    let buttons = gContentWindow.makeButtons();
+    gContentAPI.showInfo("urlbar", "another title", "moar text", "./image.png", buttons);
+  },
   function test_pinnedTab(done) {
     is(UITour.pinnedTabs.get(window), null, "Should not already have a pinned tab");
 
     gContentAPI.addPinnedTab();
     let tabInfo = UITour.pinnedTabs.get(window);
     isnot(tabInfo, null, "Should have recorded data about a pinned tab after addPinnedTab()");
     isnot(tabInfo.tab, null, "Should have added a pinned tab after addPinnedTab()");
     is(tabInfo.tab.pinned, true, "Tab should be marked as pinned");
new file mode 100644
index 0000000000000000000000000000000000000000..597c7fd2cbd328857894d0d4aefcdafcb9feea36
GIT binary patch
literal 56060
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
Pj&Y1*9OD@OKjVJ@Kf`l$
--- a/browser/modules/test/uitour.html
+++ b/browser/modules/test/uitour.html
@@ -1,15 +1,31 @@
 <!DOCTYPE html>
 <html>
   <head>
     <meta charset="utf-8" />
     <title>UITour test</title>
     <script type="application/javascript" src="uitour.js">
     </script>
+    <script type="application/javascript">
+      var callbackResult;
+      function makeCallback(name) {
+        return (function() {
+          callbackResult = name;
+        });
+      }
+
+      // Defined in content to avoid weird issues when crossing between chrome/content.
+      function makeButtons() {
+        return [
+          {label: "Button 1", callback: makeCallback("button1")},
+          {label: "Button 2", callback: makeCallback("button2"), icon: "image.png"}
+        ];
+      }
+    </script>
   </head>
   <body>
     <h1>UITour tests</h1>
     <p>Because Firefox is...</p>
     <p>Never gonna let you down</p>
     <p>Never gonna give you up</p>
   </body>
 </html>
--- a/browser/modules/test/uitour.js
+++ b/browser/modules/test/uitour.js
@@ -20,47 +20,80 @@ if (typeof Mozilla == 'undefined') {
 	var themeIntervalId = null;
 	function _stopCyclingThemes() {
 		if (themeIntervalId) {
 			clearInterval(themeIntervalId);
 			themeIntervalId = null;
 		}
 	}
 
-
 	function _sendEvent(action, data) {
 		var event = new CustomEvent('mozUITour', {
 			bubbles: true,
 			detail: {
 				action: action,
 				data: data || {}
 			}
 		});
-		console.log("Sending mozUITour event: ", event);
+
 		document.dispatchEvent(event);
 	}
 
+	function _generateCallbackID() {
+		return Math.random().toString(36).replace(/[^a-z]+/g, '');
+	}
+
+	function _waitForCallback(callback) {
+		var id = _generateCallbackID();
+
+		function listener(event) {
+			if (typeof event.detail != "object")
+				return;
+			if (event.detail.callbackID != id)
+				return;
+
+			document.removeEventListener("mozUITourResponse", listener);
+			callback(event.detail.data);
+		}
+		document.addEventListener("mozUITourResponse", listener);
+
+		return id;
+	}
+
 	Mozilla.UITour.DEFAULT_THEME_CYCLE_DELAY = 10 * 1000;
 
 	Mozilla.UITour.showHighlight = function(target, effect) {
 		_sendEvent('showHighlight', {
 			target: target,
 			effect: effect
 		});
 	};
 
 	Mozilla.UITour.hideHighlight = function() {
 		_sendEvent('hideHighlight');
 	};
 
-	Mozilla.UITour.showInfo = function(target, title, text) {
+	Mozilla.UITour.showInfo = function(target, title, text, icon, buttons) {
+		var buttonData = [];
+		if (Array.isArray(buttons)) {
+			for (var i = 0; i < buttons.length; i++) {
+				buttonData.push({
+					label: buttons[i].label,
+					icon: buttons[i].icon,
+					callbackID: _waitForCallback(buttons[i].callback)
+			});
+			}
+		}
+
 		_sendEvent('showInfo', {
 			target: target,
 			title: title,
-			text: text
+			text: text,
+			icon: icon,
+			buttons: buttonData
 		});
 	};
 
 	Mozilla.UITour.hideInfo = function() {
 		_sendEvent('hideInfo');
 	};
 
 	Mozilla.UITour.previewTheme = function(theme) {
--- a/browser/themes/shared/UITour.inc.css
+++ b/browser/themes/shared/UITour.inc.css
@@ -17,21 +17,33 @@
   background-image: radial-gradient(50% 100%, rgba(0,149,220,0.4) 50%, rgba(0,149,220,0.6) 100%);
   border-radius: 40px;
   border: 1px solid white;
   box-shadow: 0 0 3px 0 rgba(0,0,0,0.5);
   min-height: 32px;
   min-width: 32px;
 }
 
-#UITourTooltip {
-  max-width: 20em;
+#UITourTooltipIcon {
+  width: 48px;
+  height: 48px;
+  padding: 8px;
 }
 
 #UITourTooltipTitle {
   font-size: 130%;
   font-weight: bold;
   margin: 0 0 5px 0;
 }
 
 #UITourTooltipDescription {
   max-width: 20em;
 }
+
+#UITourTooltipButtons {
+  height: 5em;
+}
+
+#UITourTooltipButtons > button[image] > .button-box > .button-icon {
+  width: 16px;
+  height: 16px;
+  -moz-margin-end: 5px;
+}