зеркало из https://github.com/mozilla/gecko-dev.git
merge m-c to fx-team
This commit is contained in:
Коммит
ffc8a188fa
|
@ -1766,6 +1766,23 @@ function delayedStartup(isLoadingBlank, mustLoadSidebar) {
|
||||||
document.getElementById("appmenu_charsetMenu").hidden = true;
|
document.getElementById("appmenu_charsetMenu").hidden = true;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
let appMenuButton = document.getElementById("appmenu-button");
|
||||||
|
let appMenuPopup = document.getElementById("appmenu-popup");
|
||||||
|
if (appMenuButton && appMenuPopup) {
|
||||||
|
let appMenuOpening = null;
|
||||||
|
appMenuButton.addEventListener("mousedown", function(event) {
|
||||||
|
if (event.button == 0)
|
||||||
|
appMenuOpening = new Date();
|
||||||
|
}, false);
|
||||||
|
appMenuPopup.addEventListener("popupshown", function(event) {
|
||||||
|
if (event.target != appMenuPopup || !appMenuOpening)
|
||||||
|
return;
|
||||||
|
let duration = new Date() - appMenuOpening;
|
||||||
|
appMenuOpening = null;
|
||||||
|
Services.telemetry.getHistogramById("FX_APP_MENU_OPEN_MS").add(duration);
|
||||||
|
}, false);
|
||||||
|
}
|
||||||
|
|
||||||
window.addEventListener("mousemove", MousePosTracker, false);
|
window.addEventListener("mousemove", MousePosTracker, false);
|
||||||
window.addEventListener("dragover", MousePosTracker, false);
|
window.addEventListener("dragover", MousePosTracker, false);
|
||||||
|
|
||||||
|
@ -8159,11 +8176,13 @@ var gIdentityHandler = {
|
||||||
this._identityPopup.hidePopup();
|
this._identityPopup.hidePopup();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_popupOpenTime : null,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Click handler for the identity-box element in primary chrome.
|
* Click handler for the identity-box element in primary chrome.
|
||||||
*/
|
*/
|
||||||
handleIdentityButtonEvent : function(event) {
|
handleIdentityButtonEvent : function(event) {
|
||||||
|
this._popupOpenTime = new Date();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
|
|
||||||
if ((event.type == "click" && event.button != 0) ||
|
if ((event.type == "click" && event.button != 0) ||
|
||||||
|
@ -8200,6 +8219,17 @@ var gIdentityHandler = {
|
||||||
this._identityPopup.openPopup(this._identityBox, "bottomcenter topleft");
|
this._identityPopup.openPopup(this._identityBox, "bottomcenter topleft");
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onPopupShown : function(event) {
|
||||||
|
let openingDuration = new Date() - this._popupOpenTime;
|
||||||
|
this._popupOpenTime = null;
|
||||||
|
try {
|
||||||
|
Services.telemetry.getHistogramById("FX_IDENTITY_POPUP_OPEN_MS").add(openingDuration);
|
||||||
|
} catch (ex) {
|
||||||
|
Components.utils.reportError("Unable to report telemetry for FX_IDENTITY_POPUP_OPEN_MS.");
|
||||||
|
}
|
||||||
|
document.getElementById('identity-popup-more-info-button').focus();
|
||||||
|
},
|
||||||
|
|
||||||
onDragStart: function (event) {
|
onDragStart: function (event) {
|
||||||
if (gURLBar.getAttribute("pageproxystate") != "valid")
|
if (gURLBar.getAttribute("pageproxystate") != "valid")
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -304,7 +304,7 @@
|
||||||
type="arrow"
|
type="arrow"
|
||||||
hidden="true"
|
hidden="true"
|
||||||
noautofocus="true"
|
noautofocus="true"
|
||||||
onpopupshown="document.getElementById('identity-popup-more-info-button').focus();"
|
onpopupshown="gIdentityHandler.onPopupShown(event);"
|
||||||
level="top">
|
level="top">
|
||||||
<hbox id="identity-popup-container" align="top">
|
<hbox id="identity-popup-container" align="top">
|
||||||
<image id="identity-popup-icon"/>
|
<image id="identity-popup-icon"/>
|
||||||
|
|
|
@ -45,3 +45,6 @@ const THUMB_HEIGHT = 127;
|
||||||
#include dropTargetShim.js
|
#include dropTargetShim.js
|
||||||
#include dropPreview.js
|
#include dropPreview.js
|
||||||
#include updater.js
|
#include updater.js
|
||||||
|
|
||||||
|
// Everything is loaded. Initialize the New Tab Page.
|
||||||
|
gPage.init("#toolbar", "#grid");
|
||||||
|
|
|
@ -33,10 +33,8 @@
|
||||||
<li class="cell"/><li class="cell"/><li class="cell"/>
|
<li class="cell"/><li class="cell"/><li class="cell"/>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<xul:script type="text/javascript;version=1.8" src="chrome://browser/content/newtab/newTab.js"/>
|
<xul:script type="text/javascript;version=1.8"
|
||||||
<xul:script type="text/javascript;version=1.8">
|
src="chrome://browser/content/newtab/newTab.js"/>
|
||||||
gPage.init("#toolbar", "#grid");
|
|
||||||
</xul:script>
|
|
||||||
</body>
|
</body>
|
||||||
</xul:vbox>
|
</xul:vbox>
|
||||||
</xul:window>
|
</xul:window>
|
||||||
|
|
|
@ -1856,7 +1856,7 @@ GroupItem.prototype = Utils.extend(new Item(), new Subscribable(), {
|
||||||
UI.setActive(this, { dontSetActiveTabInGroup: true });
|
UI.setActive(this, { dontSetActiveTabInGroup: true });
|
||||||
|
|
||||||
let dontZoomIn = !!(options && options.dontZoomIn);
|
let dontZoomIn = !!(options && options.dontZoomIn);
|
||||||
return gBrowser.loadOneTab(url || "about:blank", { inBackground: dontZoomIn });
|
return gBrowser.loadOneTab(url || gWindow.BROWSER_NEW_TAB_URL, { inBackground: dontZoomIn });
|
||||||
},
|
},
|
||||||
|
|
||||||
// ----------
|
// ----------
|
||||||
|
|
|
@ -792,6 +792,7 @@ let events = [
|
||||||
'mouseout',
|
'mouseout',
|
||||||
'mousemove',
|
'mousemove',
|
||||||
'click',
|
'click',
|
||||||
|
'dblclick',
|
||||||
'resize',
|
'resize',
|
||||||
'change',
|
'change',
|
||||||
'blur',
|
'blur',
|
||||||
|
|
|
@ -30,16 +30,12 @@ function test1() {
|
||||||
closeGroupItem(groupItems[1], finish);
|
closeGroupItem(groupItems[1], finish);
|
||||||
});
|
});
|
||||||
|
|
||||||
// first click
|
// double click
|
||||||
mouseClick(contentElement, 0);
|
doubleClick(contentElement, 0);
|
||||||
// second click
|
|
||||||
mouseClick(contentElement, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function mouseClick(targetElement, buttonCode) {
|
function doubleClick(targetElement, buttonCode) {
|
||||||
EventUtils.sendMouseEvent(
|
EventUtils.sendMouseEvent(
|
||||||
{ type: "mousedown", button: buttonCode }, targetElement, contentWindow);
|
{ type: "dblclick", button: buttonCode }, targetElement, contentWindow);
|
||||||
EventUtils.sendMouseEvent(
|
|
||||||
{ type: "mouseup", button: buttonCode }, targetElement, contentWindow);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ function finishTest() {
|
||||||
"The total number of tab items is 1 after leaving the page");
|
"The total number of tab items is 1 after leaving the page");
|
||||||
|
|
||||||
let location = gBrowser.browsers[0].currentURI.spec;
|
let location = gBrowser.browsers[0].currentURI.spec;
|
||||||
is(location, "about:blank", "The open tab is the expected one");
|
is(location, BROWSER_NEW_TAB_URL, "The open tab is the expected one");
|
||||||
|
|
||||||
isnot(contentWindow.GroupItems.getActiveGroupItem(), activeGroup,
|
isnot(contentWindow.GroupItems.getActiveGroupItem(), activeGroup,
|
||||||
"Active group is no longer the same");
|
"Active group is no longer the same");
|
||||||
|
|
|
@ -79,8 +79,7 @@ function test() {
|
||||||
let height = cw.innerHeight;
|
let height = cw.innerHeight;
|
||||||
|
|
||||||
let body = cw.document.body;
|
let body = cw.document.body;
|
||||||
EventUtils.synthesizeMouse(body, width - 10, height - 10, {}, cw);
|
EventUtils.synthesizeMouse(body, width - 10, height - 10, { clickCount: 2 }, cw);
|
||||||
EventUtils.synthesizeMouse(body, width - 10, height - 10, {}, cw);
|
|
||||||
|
|
||||||
whenTabViewIsHidden(function () {
|
whenTabViewIsHidden(function () {
|
||||||
assertNumberOfTabs(2);
|
assertNumberOfTabs(2);
|
||||||
|
|
|
@ -34,14 +34,7 @@ function onTabViewWindowLoaded(win) {
|
||||||
is(secondGroup.getBounds().top - firstGroup.getBounds().bottom, 40,
|
is(secondGroup.getBounds().top - firstGroup.getBounds().bottom, 40,
|
||||||
"There's currently 40 px between the first group and second group");
|
"There's currently 40 px between the first group and second group");
|
||||||
|
|
||||||
// set double click interval to negative so quick drag and drop doesn't
|
|
||||||
// trigger the double click code.
|
|
||||||
let origDBlClickInterval = contentWindow.UI.DBLCLICK_INTERVAL;
|
|
||||||
contentWindow.UI.DBLCLICK_INTERVAL = -1;
|
|
||||||
|
|
||||||
let endGame = function() {
|
let endGame = function() {
|
||||||
contentWindow.UI.DBLCLICK_INTERVAL = origDBlClickInterval;
|
|
||||||
|
|
||||||
firstGroup.container.parentNode.removeChild(firstGroup.container);
|
firstGroup.container.parentNode.removeChild(firstGroup.container);
|
||||||
firstGroup.close();
|
firstGroup.close();
|
||||||
thirdGroup.container.parentNode.removeChild(thirdGroup.container);
|
thirdGroup.container.parentNode.removeChild(thirdGroup.container);
|
||||||
|
|
|
@ -51,16 +51,6 @@ let Keys = { meta: false };
|
||||||
// Class: UI
|
// Class: UI
|
||||||
// Singleton top-level UI manager.
|
// Singleton top-level UI manager.
|
||||||
let UI = {
|
let UI = {
|
||||||
// Constant: DBLCLICK_INTERVAL
|
|
||||||
// Defines the maximum time (in ms) between two clicks for it to count as
|
|
||||||
// a double click.
|
|
||||||
DBLCLICK_INTERVAL: 500,
|
|
||||||
|
|
||||||
// Constant: DBLCLICK_OFFSET
|
|
||||||
// Defines the maximum offset (in pixels) between two clicks for it to count as
|
|
||||||
// a double click.
|
|
||||||
DBLCLICK_OFFSET: 5,
|
|
||||||
|
|
||||||
// Variable: _frameInitialized
|
// Variable: _frameInitialized
|
||||||
// True if the Tab View UI frame has been initialized.
|
// True if the Tab View UI frame has been initialized.
|
||||||
_frameInitialized: false,
|
_frameInitialized: false,
|
||||||
|
@ -100,11 +90,6 @@ let UI = {
|
||||||
// Used to facilitate zooming down from a previous tab.
|
// Used to facilitate zooming down from a previous tab.
|
||||||
_currentTab: null,
|
_currentTab: null,
|
||||||
|
|
||||||
// Variable: _lastClick
|
|
||||||
// Keeps track of the time of last click event to detect double click.
|
|
||||||
// Used to create tabs on double-click since we cannot attach 'dblclick'
|
|
||||||
_lastClick: 0,
|
|
||||||
|
|
||||||
// Variable: _eventListeners
|
// Variable: _eventListeners
|
||||||
// Keeps track of event listeners added to the AllTabs object.
|
// Keeps track of event listeners added to the AllTabs object.
|
||||||
_eventListeners: {},
|
_eventListeners: {},
|
||||||
|
@ -212,40 +197,28 @@ let UI = {
|
||||||
element.blur();
|
element.blur();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (e.originalTarget.id == "content") {
|
if (e.originalTarget.id == "content" &&
|
||||||
if (!Utils.isLeftClick(e)) {
|
Utils.isLeftClick(e) &&
|
||||||
self._lastClick = 0;
|
e.detail == 1) {
|
||||||
self._lastClickPositions = null;
|
self._createGroupItemOnDrag(e);
|
||||||
} else {
|
|
||||||
// Create a group with one tab on double click
|
|
||||||
if (Date.now() - self._lastClick <= self.DBLCLICK_INTERVAL &&
|
|
||||||
(self._lastClickPositions.x - self.DBLCLICK_OFFSET) <= e.clientX &&
|
|
||||||
(self._lastClickPositions.x + self.DBLCLICK_OFFSET) >= e.clientX &&
|
|
||||||
(self._lastClickPositions.y - self.DBLCLICK_OFFSET) <= e.clientY &&
|
|
||||||
(self._lastClickPositions.y + self.DBLCLICK_OFFSET) >= e.clientY) {
|
|
||||||
|
|
||||||
let box =
|
|
||||||
new Rect(e.clientX - Math.floor(TabItems.tabWidth/2),
|
|
||||||
e.clientY - Math.floor(TabItems.tabHeight/2),
|
|
||||||
TabItems.tabWidth, TabItems.tabHeight);
|
|
||||||
box.inset(-30, -30);
|
|
||||||
|
|
||||||
let opts = {immediately: true, bounds: box};
|
|
||||||
let groupItem = new GroupItem([], opts);
|
|
||||||
groupItem.newTab();
|
|
||||||
|
|
||||||
self._lastClick = 0;
|
|
||||||
self._lastClickPositions = null;
|
|
||||||
gTabView.firstUseExperienced = true;
|
|
||||||
} else {
|
|
||||||
self._lastClick = Date.now();
|
|
||||||
self._lastClickPositions = new Point(e.clientX, e.clientY);
|
|
||||||
self._createGroupItemOnDrag(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
iQ(gTabViewFrame.contentDocument).dblclick(function(e) {
|
||||||
|
// Create a group with one tab on double click
|
||||||
|
let box =
|
||||||
|
new Rect(e.clientX - Math.floor(TabItems.tabWidth/2),
|
||||||
|
e.clientY - Math.floor(TabItems.tabHeight/2),
|
||||||
|
TabItems.tabWidth, TabItems.tabHeight);
|
||||||
|
box.inset(-30, -30);
|
||||||
|
|
||||||
|
let opts = {immediately: true, bounds: box};
|
||||||
|
let groupItem = new GroupItem([], opts);
|
||||||
|
groupItem.newTab();
|
||||||
|
|
||||||
|
gTabView.firstUseExperienced = true;
|
||||||
|
});
|
||||||
|
|
||||||
iQ(window).bind("unload", function() {
|
iQ(window).bind("unload", function() {
|
||||||
self.uninit();
|
self.uninit();
|
||||||
});
|
});
|
||||||
|
|
|
@ -77,6 +77,7 @@ let PageThumbs = {
|
||||||
* @return The newly created canvas containing the image data.
|
* @return The newly created canvas containing the image data.
|
||||||
*/
|
*/
|
||||||
capture: function PageThumbs_capture(aWindow) {
|
capture: function PageThumbs_capture(aWindow) {
|
||||||
|
let telemetryCaptureTime = new Date();
|
||||||
let [sw, sh, scale] = this._determineCropSize(aWindow);
|
let [sw, sh, scale] = this._determineCropSize(aWindow);
|
||||||
|
|
||||||
let canvas = this._createCanvas();
|
let canvas = this._createCanvas();
|
||||||
|
@ -93,6 +94,9 @@ let PageThumbs = {
|
||||||
// We couldn't draw to the canvas for some reason.
|
// We couldn't draw to the canvas for some reason.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Services.telemetry.getHistogramById("FX_THUMBNAILS_CAPTURE_TIME_MS")
|
||||||
|
.add(new Date() - telemetryCaptureTime);
|
||||||
|
|
||||||
return canvas;
|
return canvas;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -105,13 +109,20 @@ let PageThumbs = {
|
||||||
* stored (optional).
|
* stored (optional).
|
||||||
*/
|
*/
|
||||||
store: function PageThumbs_store(aKey, aCanvas, aCallback) {
|
store: function PageThumbs_store(aKey, aCanvas, aCallback) {
|
||||||
let self = this;
|
let telemetryStoreTime = new Date();
|
||||||
|
|
||||||
function finish(aSuccessful) {
|
function finish(aSuccessful) {
|
||||||
|
if (aSuccessful) {
|
||||||
|
Services.telemetry.getHistogramById("FX_THUMBNAILS_STORE_TIME_MS")
|
||||||
|
.add(new Date() - telemetryStoreTime);
|
||||||
|
}
|
||||||
|
|
||||||
if (aCallback)
|
if (aCallback)
|
||||||
aCallback(aSuccessful);
|
aCallback(aSuccessful);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let self = this;
|
||||||
|
|
||||||
// Get a writeable cache entry.
|
// Get a writeable cache entry.
|
||||||
PageThumbsCache.getWriteEntry(aKey, function (aEntry) {
|
PageThumbsCache.getWriteEntry(aKey, function (aEntry) {
|
||||||
if (!aEntry) {
|
if (!aEntry) {
|
||||||
|
|
|
@ -129,12 +129,18 @@ Channel.prototype = {
|
||||||
|
|
||||||
// Try to read the data from the thumbnail cache.
|
// Try to read the data from the thumbnail cache.
|
||||||
this._readCache(function (aData) {
|
this._readCache(function (aData) {
|
||||||
|
let telemetryThumbnailFound = true;
|
||||||
|
|
||||||
// Update response if there's no data.
|
// Update response if there's no data.
|
||||||
if (!aData) {
|
if (!aData) {
|
||||||
this._responseStatus = 404;
|
this._responseStatus = 404;
|
||||||
this._responseText = "Not Found";
|
this._responseText = "Not Found";
|
||||||
|
telemetryThumbnailFound = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Services.telemetry.getHistogramById("FX_THUMBNAILS_HIT_OR_MISS")
|
||||||
|
.add(telemetryThumbnailFound);
|
||||||
|
|
||||||
this._startRequest();
|
this._startRequest();
|
||||||
|
|
||||||
if (!this.canceled) {
|
if (!this.canceled) {
|
||||||
|
|
|
@ -49,6 +49,7 @@
|
||||||
#include "nsContentUtils.h"
|
#include "nsContentUtils.h"
|
||||||
#include "nsJSUtils.h"
|
#include "nsJSUtils.h"
|
||||||
#include "nsMathUtils.h"
|
#include "nsMathUtils.h"
|
||||||
|
#include "nsStreamUtils.h"
|
||||||
#include "mozilla/Preferences.h"
|
#include "mozilla/Preferences.h"
|
||||||
#include "mozilla/Telemetry.h"
|
#include "mozilla/Telemetry.h"
|
||||||
|
|
||||||
|
@ -235,7 +236,15 @@ nsHTMLCanvasElement::MozFetchAsStream(nsIInputStreamCallback *aCallback,
|
||||||
nsCOMPtr<nsIAsyncInputStream> asyncData = do_QueryInterface(inputData, &rv);
|
nsCOMPtr<nsIAsyncInputStream> asyncData = do_QueryInterface(inputData, &rv);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
return aCallback->OnInputStreamReady(asyncData);
|
nsCOMPtr<nsIThread> mainThread;
|
||||||
|
rv = NS_GetMainThread(getter_AddRefs(mainThread));
|
||||||
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
|
nsCOMPtr<nsIInputStreamCallback> asyncCallback;
|
||||||
|
rv = NS_NewInputStreamReadyEvent(getter_AddRefs(asyncCallback), aCallback, mainThread);
|
||||||
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
|
return asyncCallback->OnInputStreamReady(asyncData);
|
||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
|
|
|
@ -310,9 +310,18 @@ HISTOGRAM(THUNDERBIRD_INDEXING_RATE_MSG_PER_S, 1, 100, 20, LINEAR, "Gloda: index
|
||||||
*/
|
*/
|
||||||
// Disable this application-specific #ifdef ftb. (See bug 710562)
|
// Disable this application-specific #ifdef ftb. (See bug 710562)
|
||||||
// #ifdef MOZ_PHOENIX
|
// #ifdef MOZ_PHOENIX
|
||||||
HISTOGRAM(FX_TAB_ANIM_OPEN_MS, 1, 3000, 10, EXPONENTIAL, "Firefox: Time taken by the tab opening animation")
|
HISTOGRAM(FX_TAB_ANIM_OPEN_MS, 1, 3000, 10, EXPONENTIAL, "Firefox: Time taken by the tab opening animation in milliseconds")
|
||||||
HISTOGRAM(FX_TAB_ANIM_CLOSE_MS, 1, 3000, 10, EXPONENTIAL, "Firefox: Time taken by the tab closing animation")
|
HISTOGRAM(FX_TAB_ANIM_CLOSE_MS, 1, 3000, 10, EXPONENTIAL, "Firefox: Time taken by the tab closing animation in milliseconds")
|
||||||
HISTOGRAM_BOOLEAN(FX_CONTEXT_SEARCH_AND_TAB_SELECT, "Firefox: Background tab was selected within 5 seconds of searching from the context menu")
|
HISTOGRAM_BOOLEAN(FX_CONTEXT_SEARCH_AND_TAB_SELECT, "Firefox: Background tab was selected within 5 seconds of searching from the context menu")
|
||||||
|
HISTOGRAM(FX_IDENTITY_POPUP_OPEN_MS, 1, 1000, 10, EXPONENTIAL, "Firefox: Time taken by the identity popup to open in milliseconds")
|
||||||
|
HISTOGRAM(FX_APP_MENU_OPEN_MS, 1, 1000, 10, EXPONENTIAL, "Firefox: Time taken by the app-menu opening in milliseconds")
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Thumbnail Service telemetry.
|
||||||
|
*/
|
||||||
|
HISTOGRAM(FX_THUMBNAILS_CAPTURE_TIME_MS, 1, 500, 15, EXPONENTIAL, "THUMBNAILS: Time (ms) it takes to capture a thumbnail")
|
||||||
|
HISTOGRAM(FX_THUMBNAILS_STORE_TIME_MS, 1, 500, 15, EXPONENTIAL, "THUMBNAILS: Time (ms) it takes to store a thumbnail in the cache")
|
||||||
|
HISTOGRAM(FX_THUMBNAILS_HIT_OR_MISS, 0, 1, 2, BOOLEAN, "THUMBNAILS: Thumbnail found")
|
||||||
// #endif
|
// #endif
|
||||||
|
|
||||||
HISTOGRAM_BOOLEAN(INNERWINDOWS_WITH_MUTATION_LISTENERS, "Deleted or to-be-reused innerwindow which has had mutation event listeners.")
|
HISTOGRAM_BOOLEAN(INNERWINDOWS_WITH_MUTATION_LISTENERS, "Deleted or to-be-reused innerwindow which has had mutation event listeners.")
|
||||||
|
|
|
@ -58,6 +58,7 @@ _TEST_FILES = \
|
||||||
test_videocontrols.html \
|
test_videocontrols.html \
|
||||||
test_videocontrols_video_direction.html \
|
test_videocontrols_video_direction.html \
|
||||||
test_videocontrols_audio_direction.html \
|
test_videocontrols_audio_direction.html \
|
||||||
|
test_audiocontrols_dimensions.html \
|
||||||
videocontrols_direction-1-ref.html \
|
videocontrols_direction-1-ref.html \
|
||||||
videocontrols_direction-1a.html \
|
videocontrols_direction-1a.html \
|
||||||
videocontrols_direction-1b.html \
|
videocontrols_direction-1b.html \
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Audio controls test</title>
|
||||||
|
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||||
|
<script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
|
||||||
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p id="display"></p>
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
<audio id="audio" src="audio.wav" controls preload="auto"></audio>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<pre id="test">
|
||||||
|
<script type="text/javascript" src="use_large_cache.js"></script>
|
||||||
|
<script class="testbody" type="text/javascript">
|
||||||
|
function loadedmetadata(event) {
|
||||||
|
is(event.type, "loadedmetadata", "checking event type");
|
||||||
|
is(audio.clientHeight, "28", "checking height of audio element");
|
||||||
|
|
||||||
|
SimpleTest.finish();
|
||||||
|
}
|
||||||
|
|
||||||
|
var audio = document.getElementById("audio"), video;
|
||||||
|
|
||||||
|
// Kick off test once audio has loaded.
|
||||||
|
audio.addEventListener("loadedmetadata", loadedmetadata, false);
|
||||||
|
|
||||||
|
SimpleTest.waitForExplicitFinish();
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</pre>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -1308,7 +1308,8 @@
|
||||||
// (Note: the |controls| attribute is already handled via layout/style/html.css)
|
// (Note: the |controls| attribute is already handled via layout/style/html.css)
|
||||||
var shouldShow = (!(this.video.autoplay && this.video.mozAutoplayEnabled) || !this.dynamicControls);
|
var shouldShow = (!(this.video.autoplay && this.video.mozAutoplayEnabled) || !this.dynamicControls);
|
||||||
// Hide the overlay if the video time is non-zero or if an error occurred to workaround bug 718107.
|
// Hide the overlay if the video time is non-zero or if an error occurred to workaround bug 718107.
|
||||||
this.startFade(this.clickToPlay, shouldShow && this.video.currentTime == 0 && !this.hasError(), true);
|
this.startFade(this.clickToPlay, shouldShow && !this.isAudioOnly &&
|
||||||
|
this.video.currentTime == 0 && !this.hasError(), true);
|
||||||
this.startFade(this.controlBar, shouldShow, true);
|
this.startFade(this.controlBar, shouldShow, true);
|
||||||
|
|
||||||
// Use the handleEvent() callback for all media events.
|
// Use the handleEvent() callback for all media events.
|
||||||
|
|
|
@ -70,30 +70,30 @@
|
||||||
</filter>
|
</filter>
|
||||||
<mask id="dropShadowMask">
|
<mask id="dropShadowMask">
|
||||||
<path
|
<path
|
||||||
d="M47.285,29.991L23.75,16.24c-0.357-0.208-0.692-0.278-0.969-0.221 C22.32,16.114,22,16.555,22,17.251v27.5c0,1.112,0.797,1.568,1.75,1.011l23.535-13.749C48.238,31.458,48.238,30.546,47.285,29.991z M0,0v64h64V0H0z M32,59C16.536,59,4,46.464,4,31S16.536,3,32,3s28,12.536,28,28S47.464,59,32,59z"
|
d="M47.285,30.991L23.75,17.24c-0.357-0.208-0.692-0.278-0.969-0.221 C22.32,17.115,22,17.555,22,18.252v27.499c0,1.112,0.797,1.568,1.75,1.011l23.535-13.748C48.238,32.458,48.238,31.547,47.285,30.991 z M0,0v64h64V0H0z M32,60C16.536,60,4,47.464,4,32S16.536,4,32,4s28,12.536,28,28S47.464,60,32,60z"
|
||||||
id="dropShadowMaskPath"
|
id="dropShadowMaskPath"
|
||||||
style="fill:#ffffff;fill-opacity:1;stroke:none" />
|
style="fill:#ffffff;fill-opacity:1;stroke:none" />
|
||||||
</mask>
|
</mask>
|
||||||
</defs>
|
</defs>
|
||||||
<path
|
<path
|
||||||
d="M32,3C16.536,3,4,15.536,4,31s12.536,28,28,28s28-12.536,28-28S47.464,3,32,3z M47.285,32.013L23.75,45.762C22.797,46.319,22,45.863,22,44.751v-27.5c0-0.697,0.32-1.137,0.781-1.232 c0.277-0.058,0.612,0.012,0.969,0.221l23.535,13.751C48.238,30.546,48.238,31.458,47.285,32.013z"
|
d="M32,4C16.536,4,4,16.536,4,32s12.536,28,28,28s28-12.536,28-28S47.464,4,32,4z M47.285,33.014 L23.75,46.762C22.797,47.319,22,46.863,22,45.751v-27.5c0-0.697,0.32-1.137,0.781-1.232c0.277-0.058,0.612,0.012,0.969,0.221 l23.535,13.751C48.238,31.546,48.238,32.458,47.285,33.014z"
|
||||||
mask="url(#dropShadowMask)"
|
mask="url(#dropShadowMask)"
|
||||||
id="playButtonShadow"
|
id="playButtonShadow"
|
||||||
style="fill:black;fill-opacity:1;stroke:none;filter:url(#dropShadow)" />
|
style="fill:black;fill-opacity:1;stroke:none;filter:url(#dropShadow)" />
|
||||||
<path
|
<path
|
||||||
d="M22.781,16.019C22.32,16.114,22,16.555,22,17.251v27.5c0,1.112,0.797,1.568,1.75,1.011 l23.535-13.749c0.953-0.556,0.953-1.467,0-2.022L23.75,16.24C23.393,16.031,23.058,15.961,22.781,16.019z"
|
d="M22.781,17.019C22.32,17.114,22,17.555,22,18.251v27.5c0,1.112,0.797,1.568,1.75,1.011 l23.535-13.748c0.953-0.556,0.953-1.467,0-2.023L23.75,17.24C23.393,17.031,23.058,16.961,22.781,17.019z"
|
||||||
id="playButtonArrow"
|
id="playButtonArrow"
|
||||||
style="fill:url(#arrowGradient);fill-opacity:1;stroke:none" />
|
style="fill:url(#arrowGradient);fill-opacity:1;stroke:none" />
|
||||||
<path
|
<path
|
||||||
d="M32,3C16.536,3,4,15.536,4,31s12.536,28,28,28s28-12.536,28-28S47.464,3,32,3z M47.285,32.013L23.75,45.762C22.797,46.319,22,45.863,22,44.751v-27.5c0-0.697,0.32-1.137,0.781-1.232 c0.277-0.058,0.612,0.012,0.969,0.221l23.535,13.751C48.238,30.546,48.238,31.458,47.285,32.013z"
|
d="M32,4C16.536,4,4,16.536,4,32s12.536,28,28,28s28-12.536,28-28S47.464,4,32,4z M47.285,33.014 L23.75,46.762C22.797,47.319,22,46.863,22,45.751v-27.5c0-0.697,0.32-1.137,0.781-1.232c0.277-0.058,0.612,0.012,0.969,0.221 l23.535,13.751C48.238,31.546,48.238,32.458,47.285,33.014z"
|
||||||
id="playButton"
|
id="playButton"
|
||||||
style="fill:url(#whiteGradient);fill-opacity:1;stroke:none" />
|
style="fill:url(#whiteGradient);fill-opacity:1;stroke:none" />
|
||||||
<path
|
<path
|
||||||
d="M32,3C16.536,3,4,15.536,4,31s12.536,28,28,28s28-12.536,28-28S47.464,3,32,3 z M32,58C17.112,58,5,45.888,5,31S17.112,4,32,4s27,12.112,27,27S46.888,58,32,58z M47.789,29.127l-23.534-13.75 C23.826,15.126,23.396,15,22.976,15c-0.135,0-0.27,0.014-0.398,0.041C21.62,15.238,21,16.106,21,17.251v27.5 C21,46.075,21.812,47,22.977,47c0.423,0,0.854-0.126,1.279-0.375L47.79,32.876c0.769-0.448,1.21-1.131,1.21-1.875 S48.559,29.576,47.789,29.127z M47.285,32.013L23.75,45.762C23.474,45.924,23.211,46,22.977,46C22.402,46,22,45.541,22,44.751v-27.5 c0-0.697,0.32-1.137,0.781-1.232L22.976,16c0.233,0,0.498,0.079,0.775,0.24l23.535,13.751 C48.238,30.546,48.238,31.458,47.285,32.013z"
|
d="M32,4C16.536,4,4,16.536,4,32s12.536,28,28,28s28-12.536,28-28S47.464,4,32,4z M32,59C17.112,59,5,46.888,5,32S17.112,5,32,5s27,12.112,27,27S46.888,59,32,59z M47.789,30.127l-23.534-13.75 C23.826,16.126,23.396,16,22.976,16c-0.135,0-0.27,0.014-0.398,0.041C21.62,16.238,21,17.106,21,18.251v27.5 C21,47.075,21.812,48,22.977,48c0.423,0,0.854-0.126,1.279-0.375L47.79,33.877c0.769-0.449,1.21-1.132,1.21-1.875 S48.559,30.576,47.789,30.127z M47.285,33.014L23.75,46.762C23.474,46.924,23.211,47,22.977,47C22.402,47,22,46.541,22,45.751v-27.5 c0-0.697,0.32-1.137,0.781-1.232L22.976,17c0.233,0,0.498,0.079,0.775,0.24l23.535,13.751 C48.238,31.546,48.238,32.458,47.285,33.014z"
|
||||||
id="playButtonEdgeHighlights"
|
id="playButtonEdgeHighlights"
|
||||||
style="fill:white;fill-opacity:.3;stroke:none" />
|
style="fill:white;fill-opacity:.3;stroke:none" />
|
||||||
<path
|
<path
|
||||||
d="M32,3C16.536,3,4,15.536,4,31c0,0.167,0.01,0.333,0.013,0.5C4.28,16.268,16.704,4,32,4 c15.296,0,27.72,12.268,27.987,27.5C59.99,31.333,60,31.167,60,31C60,15.536,47.464,3,32,3z M47.285,32.013L23.75,45.762 C22.797,46.319,22,45.863,22,44.751v1c0,1.112,0.797,1.568,1.75,1.011l23.535-13.748c0.697-0.407,0.879-1.003,0.556-1.512 C47.723,31.688,47.541,31.864,47.285,32.013z"
|
d="M32,4C16.536,4,4,16.536,4,32c0,0.167,0.01,0.333,0.013,0.5 C4.28,17.268,16.704,5,32,5c15.296,0,27.72,12.268,27.987,27.5C59.99,32.333,60,32.167,60,32C60,16.536,47.464,4,32,4z M47.285,33.014L23.75,46.762C22.797,47.319,22,46.863,22,45.751v1c0,1.112,0.797,1.568,1.75,1.011l23.535-13.748 c0.697-0.406,0.879-1.003,0.556-1.512C47.723,32.688,47.541,32.864,47.285,33.014z"
|
||||||
id="playButtonTopEdgeHighlights"
|
id="playButtonTopEdgeHighlights"
|
||||||
style="fill:white;fill-opacity:.8;stroke:none" />
|
style="fill:white;fill-opacity:.8;stroke:none" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|
До Ширина: | Высота: | Размер: 4.9 KiB После Ширина: | Высота: | Размер: 4.9 KiB |
|
@ -70,30 +70,30 @@
|
||||||
</filter>
|
</filter>
|
||||||
<mask id="dropShadowMask">
|
<mask id="dropShadowMask">
|
||||||
<path
|
<path
|
||||||
d="M47.285,29.991L23.75,16.24c-0.357-0.208-0.692-0.278-0.969-0.221 C22.32,16.114,22,16.555,22,17.251v27.5c0,1.112,0.797,1.568,1.75,1.011l23.535-13.749C48.238,31.458,48.238,30.546,47.285,29.991z M0,0v64h64V0H0z M32,59C16.536,59,4,46.464,4,31S16.536,3,32,3s28,12.536,28,28S47.464,59,32,59z"
|
d="M47.285,30.991L23.75,17.24c-0.357-0.208-0.692-0.278-0.969-0.221 C22.32,17.115,22,17.555,22,18.252v27.499c0,1.112,0.797,1.568,1.75,1.011l23.535-13.748C48.238,32.458,48.238,31.547,47.285,30.991 z M0,0v64h64V0H0z M32,60C16.536,60,4,47.464,4,32S16.536,4,32,4s28,12.536,28,28S47.464,60,32,60z"
|
||||||
id="dropShadowMaskPath"
|
id="dropShadowMaskPath"
|
||||||
style="fill:#ffffff;fill-opacity:1;stroke:none" />
|
style="fill:#ffffff;fill-opacity:1;stroke:none" />
|
||||||
</mask>
|
</mask>
|
||||||
</defs>
|
</defs>
|
||||||
<path
|
<path
|
||||||
d="M32,3C16.536,3,4,15.536,4,31s12.536,28,28,28s28-12.536,28-28S47.464,3,32,3z M47.285,32.013L23.75,45.762C22.797,46.319,22,45.863,22,44.751v-27.5c0-0.697,0.32-1.137,0.781-1.232 c0.277-0.058,0.612,0.012,0.969,0.221l23.535,13.751C48.238,30.546,48.238,31.458,47.285,32.013z"
|
d="M32,4C16.536,4,4,16.536,4,32s12.536,28,28,28s28-12.536,28-28S47.464,4,32,4z M47.285,33.014 L23.75,46.762C22.797,47.319,22,46.863,22,45.751v-27.5c0-0.697,0.32-1.137,0.781-1.232c0.277-0.058,0.612,0.012,0.969,0.221 l23.535,13.751C48.238,31.546,48.238,32.458,47.285,33.014z"
|
||||||
mask="url(#dropShadowMask)"
|
mask="url(#dropShadowMask)"
|
||||||
id="playButtonShadow"
|
id="playButtonShadow"
|
||||||
style="fill:black;fill-opacity:1;stroke:none;filter:url(#dropShadow)" />
|
style="fill:black;fill-opacity:1;stroke:none;filter:url(#dropShadow)" />
|
||||||
<path
|
<path
|
||||||
d="M22.781,16.019C22.32,16.114,22,16.555,22,17.251v27.5c0,1.112,0.797,1.568,1.75,1.011 l23.535-13.749c0.953-0.556,0.953-1.467,0-2.022L23.75,16.24C23.393,16.031,23.058,15.961,22.781,16.019z"
|
d="M22.781,17.019C22.32,17.114,22,17.555,22,18.251v27.5c0,1.112,0.797,1.568,1.75,1.011 l23.535-13.748c0.953-0.556,0.953-1.467,0-2.023L23.75,17.24C23.393,17.031,23.058,16.961,22.781,17.019z"
|
||||||
id="playButtonArrow"
|
id="playButtonArrow"
|
||||||
style="fill:url(#arrowGradient);fill-opacity:1;stroke:none" />
|
style="fill:url(#arrowGradient);fill-opacity:1;stroke:none" />
|
||||||
<path
|
<path
|
||||||
d="M32,3C16.536,3,4,15.536,4,31s12.536,28,28,28s28-12.536,28-28S47.464,3,32,3z M47.285,32.013L23.75,45.762C22.797,46.319,22,45.863,22,44.751v-27.5c0-0.697,0.32-1.137,0.781-1.232 c0.277-0.058,0.612,0.012,0.969,0.221l23.535,13.751C48.238,30.546,48.238,31.458,47.285,32.013z"
|
d="M32,4C16.536,4,4,16.536,4,32s12.536,28,28,28s28-12.536,28-28S47.464,4,32,4z M47.285,33.014 L23.75,46.762C22.797,47.319,22,46.863,22,45.751v-27.5c0-0.697,0.32-1.137,0.781-1.232c0.277-0.058,0.612,0.012,0.969,0.221 l23.535,13.751C48.238,31.546,48.238,32.458,47.285,33.014z"
|
||||||
id="playButton"
|
id="playButton"
|
||||||
style="fill:url(#whiteGradient);fill-opacity:1;stroke:none" />
|
style="fill:url(#whiteGradient);fill-opacity:1;stroke:none" />
|
||||||
<path
|
<path
|
||||||
d="M32,3C16.536,3,4,15.536,4,31s12.536,28,28,28s28-12.536,28-28S47.464,3,32,3 z M32,58C17.112,58,5,45.888,5,31S17.112,4,32,4s27,12.112,27,27S46.888,58,32,58z M47.789,29.127l-23.534-13.75 C23.826,15.126,23.396,15,22.976,15c-0.135,0-0.27,0.014-0.398,0.041C21.62,15.238,21,16.106,21,17.251v27.5 C21,46.075,21.812,47,22.977,47c0.423,0,0.854-0.126,1.279-0.375L47.79,32.876c0.769-0.448,1.21-1.131,1.21-1.875 S48.559,29.576,47.789,29.127z M47.285,32.013L23.75,45.762C23.474,45.924,23.211,46,22.977,46C22.402,46,22,45.541,22,44.751v-27.5 c0-0.697,0.32-1.137,0.781-1.232L22.976,16c0.233,0,0.498,0.079,0.775,0.24l23.535,13.751 C48.238,30.546,48.238,31.458,47.285,32.013z"
|
d="M32,4C16.536,4,4,16.536,4,32s12.536,28,28,28s28-12.536,28-28S47.464,4,32,4z M32,59C17.112,59,5,46.888,5,32S17.112,5,32,5s27,12.112,27,27S46.888,59,32,59z M47.789,30.127l-23.534-13.75 C23.826,16.126,23.396,16,22.976,16c-0.135,0-0.27,0.014-0.398,0.041C21.62,16.238,21,17.106,21,18.251v27.5 C21,47.075,21.812,48,22.977,48c0.423,0,0.854-0.126,1.279-0.375L47.79,33.877c0.769-0.449,1.21-1.132,1.21-1.875 S48.559,30.576,47.789,30.127z M47.285,33.014L23.75,46.762C23.474,46.924,23.211,47,22.977,47C22.402,47,22,46.541,22,45.751v-27.5 c0-0.697,0.32-1.137,0.781-1.232L22.976,17c0.233,0,0.498,0.079,0.775,0.24l23.535,13.751 C48.238,31.546,48.238,32.458,47.285,33.014z"
|
||||||
id="playButtonEdgeHighlights"
|
id="playButtonEdgeHighlights"
|
||||||
style="fill:white;fill-opacity:.3;stroke:none" />
|
style="fill:white;fill-opacity:.3;stroke:none" />
|
||||||
<path
|
<path
|
||||||
d="M32,3C16.536,3,4,15.536,4,31c0,0.167,0.01,0.333,0.013,0.5C4.28,16.268,16.704,4,32,4 c15.296,0,27.72,12.268,27.987,27.5C59.99,31.333,60,31.167,60,31C60,15.536,47.464,3,32,3z M47.285,32.013L23.75,45.762 C22.797,46.319,22,45.863,22,44.751v1c0,1.112,0.797,1.568,1.75,1.011l23.535-13.748c0.697-0.407,0.879-1.003,0.556-1.512 C47.723,31.688,47.541,31.864,47.285,32.013z"
|
d="M32,4C16.536,4,4,16.536,4,32c0,0.167,0.01,0.333,0.013,0.5 C4.28,17.268,16.704,5,32,5c15.296,0,27.72,12.268,27.987,27.5C59.99,32.333,60,32.167,60,32C60,16.536,47.464,4,32,4z M47.285,33.014L23.75,46.762C22.797,47.319,22,46.863,22,45.751v1c0,1.112,0.797,1.568,1.75,1.011l23.535-13.748 c0.697-0.406,0.879-1.003,0.556-1.512C47.723,32.688,47.541,32.864,47.285,33.014z"
|
||||||
id="playButtonTopEdgeHighlights"
|
id="playButtonTopEdgeHighlights"
|
||||||
style="fill:white;fill-opacity:.8;stroke:none" />
|
style="fill:white;fill-opacity:.8;stroke:none" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|
До Ширина: | Высота: | Размер: 4.9 KiB После Ширина: | Высота: | Размер: 4.9 KiB |
Загрузка…
Ссылка в новой задаче