зеркало из https://github.com/mozilla/pjs.git
merge m-c to fx-team
This commit is contained in:
Коммит
d7ecd7fbae
|
@ -1766,6 +1766,23 @@ function delayedStartup(isLoadingBlank, mustLoadSidebar) {
|
|||
document.getElementById("appmenu_charsetMenu").hidden = true;
|
||||
#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("dragover", MousePosTracker, false);
|
||||
|
||||
|
@ -8159,11 +8176,13 @@ var gIdentityHandler = {
|
|||
this._identityPopup.hidePopup();
|
||||
},
|
||||
|
||||
_popupOpenTime : null,
|
||||
|
||||
/**
|
||||
* Click handler for the identity-box element in primary chrome.
|
||||
*/
|
||||
handleIdentityButtonEvent : function(event) {
|
||||
|
||||
this._popupOpenTime = new Date();
|
||||
event.stopPropagation();
|
||||
|
||||
if ((event.type == "click" && event.button != 0) ||
|
||||
|
@ -8200,6 +8219,17 @@ var gIdentityHandler = {
|
|||
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) {
|
||||
if (gURLBar.getAttribute("pageproxystate") != "valid")
|
||||
return;
|
||||
|
|
|
@ -304,7 +304,7 @@
|
|||
type="arrow"
|
||||
hidden="true"
|
||||
noautofocus="true"
|
||||
onpopupshown="document.getElementById('identity-popup-more-info-button').focus();"
|
||||
onpopupshown="gIdentityHandler.onPopupShown(event);"
|
||||
level="top">
|
||||
<hbox id="identity-popup-container" align="top">
|
||||
<image id="identity-popup-icon"/>
|
||||
|
|
|
@ -45,3 +45,6 @@ const THUMB_HEIGHT = 127;
|
|||
#include dropTargetShim.js
|
||||
#include dropPreview.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"/>
|
||||
</ul>
|
||||
|
||||
<xul:script type="text/javascript;version=1.8" src="chrome://browser/content/newtab/newTab.js"/>
|
||||
<xul:script type="text/javascript;version=1.8">
|
||||
gPage.init("#toolbar", "#grid");
|
||||
</xul:script>
|
||||
<xul:script type="text/javascript;version=1.8"
|
||||
src="chrome://browser/content/newtab/newTab.js"/>
|
||||
</body>
|
||||
</xul:vbox>
|
||||
</xul:window>
|
||||
|
|
|
@ -1856,7 +1856,7 @@ GroupItem.prototype = Utils.extend(new Item(), new Subscribable(), {
|
|||
UI.setActive(this, { dontSetActiveTabInGroup: true });
|
||||
|
||||
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',
|
||||
'mousemove',
|
||||
'click',
|
||||
'dblclick',
|
||||
'resize',
|
||||
'change',
|
||||
'blur',
|
||||
|
|
|
@ -30,16 +30,12 @@ function test1() {
|
|||
closeGroupItem(groupItems[1], finish);
|
||||
});
|
||||
|
||||
// first click
|
||||
mouseClick(contentElement, 0);
|
||||
// second click
|
||||
mouseClick(contentElement, 0);
|
||||
// double click
|
||||
doubleClick(contentElement, 0);
|
||||
}
|
||||
|
||||
function mouseClick(targetElement, buttonCode) {
|
||||
function doubleClick(targetElement, buttonCode) {
|
||||
EventUtils.sendMouseEvent(
|
||||
{ type: "mousedown", button: buttonCode }, targetElement, contentWindow);
|
||||
EventUtils.sendMouseEvent(
|
||||
{ type: "mouseup", button: buttonCode }, targetElement, contentWindow);
|
||||
{ type: "dblclick", button: buttonCode }, targetElement, contentWindow);
|
||||
}
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ function finishTest() {
|
|||
"The total number of tab items is 1 after leaving the page");
|
||||
|
||||
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,
|
||||
"Active group is no longer the same");
|
||||
|
|
|
@ -79,8 +79,7 @@ function test() {
|
|||
let height = cw.innerHeight;
|
||||
|
||||
let body = cw.document.body;
|
||||
EventUtils.synthesizeMouse(body, width - 10, height - 10, {}, cw);
|
||||
EventUtils.synthesizeMouse(body, width - 10, height - 10, {}, cw);
|
||||
EventUtils.synthesizeMouse(body, width - 10, height - 10, { clickCount: 2 }, cw);
|
||||
|
||||
whenTabViewIsHidden(function () {
|
||||
assertNumberOfTabs(2);
|
||||
|
|
|
@ -34,14 +34,7 @@ function onTabViewWindowLoaded(win) {
|
|||
is(secondGroup.getBounds().top - firstGroup.getBounds().bottom, 40,
|
||||
"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() {
|
||||
contentWindow.UI.DBLCLICK_INTERVAL = origDBlClickInterval;
|
||||
|
||||
firstGroup.container.parentNode.removeChild(firstGroup.container);
|
||||
firstGroup.close();
|
||||
thirdGroup.container.parentNode.removeChild(thirdGroup.container);
|
||||
|
|
|
@ -51,16 +51,6 @@ let Keys = { meta: false };
|
|||
// Class: UI
|
||||
// Singleton top-level UI manager.
|
||||
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
|
||||
// True if the Tab View UI frame has been initialized.
|
||||
_frameInitialized: false,
|
||||
|
@ -100,11 +90,6 @@ let UI = {
|
|||
// Used to facilitate zooming down from a previous tab.
|
||||
_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
|
||||
// Keeps track of event listeners added to the AllTabs object.
|
||||
_eventListeners: {},
|
||||
|
@ -212,40 +197,28 @@ let UI = {
|
|||
element.blur();
|
||||
});
|
||||
}
|
||||
if (e.originalTarget.id == "content") {
|
||||
if (!Utils.isLeftClick(e)) {
|
||||
self._lastClick = 0;
|
||||
self._lastClickPositions = null;
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
if (e.originalTarget.id == "content" &&
|
||||
Utils.isLeftClick(e) &&
|
||||
e.detail == 1) {
|
||||
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() {
|
||||
self.uninit();
|
||||
});
|
||||
|
|
|
@ -77,6 +77,7 @@ let PageThumbs = {
|
|||
* @return The newly created canvas containing the image data.
|
||||
*/
|
||||
capture: function PageThumbs_capture(aWindow) {
|
||||
let telemetryCaptureTime = new Date();
|
||||
let [sw, sh, scale] = this._determineCropSize(aWindow);
|
||||
|
||||
let canvas = this._createCanvas();
|
||||
|
@ -93,6 +94,9 @@ let PageThumbs = {
|
|||
// We couldn't draw to the canvas for some reason.
|
||||
}
|
||||
|
||||
Services.telemetry.getHistogramById("FX_THUMBNAILS_CAPTURE_TIME_MS")
|
||||
.add(new Date() - telemetryCaptureTime);
|
||||
|
||||
return canvas;
|
||||
},
|
||||
|
||||
|
@ -105,13 +109,20 @@ let PageThumbs = {
|
|||
* stored (optional).
|
||||
*/
|
||||
store: function PageThumbs_store(aKey, aCanvas, aCallback) {
|
||||
let self = this;
|
||||
let telemetryStoreTime = new Date();
|
||||
|
||||
function finish(aSuccessful) {
|
||||
if (aSuccessful) {
|
||||
Services.telemetry.getHistogramById("FX_THUMBNAILS_STORE_TIME_MS")
|
||||
.add(new Date() - telemetryStoreTime);
|
||||
}
|
||||
|
||||
if (aCallback)
|
||||
aCallback(aSuccessful);
|
||||
}
|
||||
|
||||
let self = this;
|
||||
|
||||
// Get a writeable cache entry.
|
||||
PageThumbsCache.getWriteEntry(aKey, function (aEntry) {
|
||||
if (!aEntry) {
|
||||
|
|
|
@ -129,12 +129,18 @@ Channel.prototype = {
|
|||
|
||||
// Try to read the data from the thumbnail cache.
|
||||
this._readCache(function (aData) {
|
||||
let telemetryThumbnailFound = true;
|
||||
|
||||
// Update response if there's no data.
|
||||
if (!aData) {
|
||||
this._responseStatus = 404;
|
||||
this._responseText = "Not Found";
|
||||
telemetryThumbnailFound = false;
|
||||
}
|
||||
|
||||
Services.telemetry.getHistogramById("FX_THUMBNAILS_HIT_OR_MISS")
|
||||
.add(telemetryThumbnailFound);
|
||||
|
||||
this._startRequest();
|
||||
|
||||
if (!this.canceled) {
|
||||
|
|
|
@ -49,6 +49,7 @@
|
|||
#include "nsContentUtils.h"
|
||||
#include "nsJSUtils.h"
|
||||
#include "nsMathUtils.h"
|
||||
#include "nsStreamUtils.h"
|
||||
#include "mozilla/Preferences.h"
|
||||
#include "mozilla/Telemetry.h"
|
||||
|
||||
|
@ -235,7 +236,15 @@ nsHTMLCanvasElement::MozFetchAsStream(nsIInputStreamCallback *aCallback,
|
|||
nsCOMPtr<nsIAsyncInputStream> asyncData = do_QueryInterface(inputData, &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
|
||||
|
|
|
@ -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)
|
||||
// #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_CLOSE_MS, 1, 3000, 10, EXPONENTIAL, "Firefox: Time taken by the tab closing 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 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(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
|
||||
|
||||
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_video_direction.html \
|
||||
test_videocontrols_audio_direction.html \
|
||||
test_audiocontrols_dimensions.html \
|
||||
videocontrols_direction-1-ref.html \
|
||||
videocontrols_direction-1a.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)
|
||||
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.
|
||||
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);
|
||||
|
||||
// Use the handleEvent() callback for all media events.
|
||||
|
|
|
@ -70,30 +70,30 @@
|
|||
</filter>
|
||||
<mask id="dropShadowMask">
|
||||
<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"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none" />
|
||||
</mask>
|
||||
</defs>
|
||||
<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)"
|
||||
id="playButtonShadow"
|
||||
style="fill:black;fill-opacity:1;stroke:none;filter:url(#dropShadow)" />
|
||||
<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"
|
||||
style="fill:url(#arrowGradient);fill-opacity:1;stroke:none" />
|
||||
<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"
|
||||
style="fill:url(#whiteGradient);fill-opacity:1;stroke:none" />
|
||||
<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"
|
||||
style="fill:white;fill-opacity:.3;stroke:none" />
|
||||
<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"
|
||||
style="fill:white;fill-opacity:.8;stroke:none" />
|
||||
</svg>
|
||||
|
|
До Ширина: | Высота: | Размер: 4.9 KiB После Ширина: | Высота: | Размер: 4.9 KiB |
|
@ -70,30 +70,30 @@
|
|||
</filter>
|
||||
<mask id="dropShadowMask">
|
||||
<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"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none" />
|
||||
</mask>
|
||||
</defs>
|
||||
<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)"
|
||||
id="playButtonShadow"
|
||||
style="fill:black;fill-opacity:1;stroke:none;filter:url(#dropShadow)" />
|
||||
<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"
|
||||
style="fill:url(#arrowGradient);fill-opacity:1;stroke:none" />
|
||||
<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"
|
||||
style="fill:url(#whiteGradient);fill-opacity:1;stroke:none" />
|
||||
<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"
|
||||
style="fill:white;fill-opacity:.3;stroke:none" />
|
||||
<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"
|
||||
style="fill:white;fill-opacity:.8;stroke:none" />
|
||||
</svg>
|
||||
|
|
До Ширина: | Высота: | Размер: 4.9 KiB После Ширина: | Высота: | Размер: 4.9 KiB |
Загрузка…
Ссылка в новой задаче