This commit is contained in:
Phil Ringnalda 2015-05-23 14:39:57 -07:00
Родитель 4320928661 17cba2818f
Коммит 8bb760c7b0
425 изменённых файлов: 6395 добавлений и 5169 удалений

Просмотреть файл

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="e862ab9177af664f00b4522e2350f4cb13866d73">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="f4486f7c7785b66e8dbfc775677d1b6386718e96"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="4bcd260ae62f2d40db8523f92cf7590b91d09465"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="fffc68521ebb1501d6b015c6d1c4a17a04fdb2e2"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>

Просмотреть файл

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="e862ab9177af664f00b4522e2350f4cb13866d73">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="f4486f7c7785b66e8dbfc775677d1b6386718e96"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="4bcd260ae62f2d40db8523f92cf7590b91d09465"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="fffc68521ebb1501d6b015c6d1c4a17a04fdb2e2"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>

Просмотреть файл

@ -19,7 +19,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="f4486f7c7785b66e8dbfc775677d1b6386718e96"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="4bcd260ae62f2d40db8523f92cf7590b91d09465"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="fffc68521ebb1501d6b015c6d1c4a17a04fdb2e2"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="22664edc4c73e5fe8f5095ff1d5549db78a2bc10"/>

Просмотреть файл

@ -17,7 +17,7 @@
</project>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="f4486f7c7785b66e8dbfc775677d1b6386718e96"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="4bcd260ae62f2d40db8523f92cf7590b91d09465"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="fffc68521ebb1501d6b015c6d1c4a17a04fdb2e2"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="46da1a05ac04157669685246d70ac59d48699c9e"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="53517af1f57810bef745f03602f407161a475d76"/>

Просмотреть файл

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="e862ab9177af664f00b4522e2350f4cb13866d73">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="f4486f7c7785b66e8dbfc775677d1b6386718e96"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="4bcd260ae62f2d40db8523f92cf7590b91d09465"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="fffc68521ebb1501d6b015c6d1c4a17a04fdb2e2"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>

Просмотреть файл

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="61e82f99bb8bc78d52b5717e9a2481ec7267fa33">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="f4486f7c7785b66e8dbfc775677d1b6386718e96"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="4bcd260ae62f2d40db8523f92cf7590b91d09465"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="fffc68521ebb1501d6b015c6d1c4a17a04fdb2e2"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>

Просмотреть файл

@ -19,7 +19,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="f4486f7c7785b66e8dbfc775677d1b6386718e96"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="4bcd260ae62f2d40db8523f92cf7590b91d09465"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="fffc68521ebb1501d6b015c6d1c4a17a04fdb2e2"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="22664edc4c73e5fe8f5095ff1d5549db78a2bc10"/>

Просмотреть файл

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="e862ab9177af664f00b4522e2350f4cb13866d73">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="f4486f7c7785b66e8dbfc775677d1b6386718e96"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="4bcd260ae62f2d40db8523f92cf7590b91d09465"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="fffc68521ebb1501d6b015c6d1c4a17a04fdb2e2"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>

Просмотреть файл

@ -1,9 +1,9 @@
{
"git": {
"git_revision": "f4486f7c7785b66e8dbfc775677d1b6386718e96",
"git_revision": "4bcd260ae62f2d40db8523f92cf7590b91d09465",
"remote": "https://git.mozilla.org/releases/gaia.git",
"branch": ""
},
"revision": "667627b8fc148996b1a51155b4c123d63cf27c59",
"revision": "beb10c6639853af1842bc2017257b07e6695863d",
"repo_path": "integration/gaia-central"
}

Просмотреть файл

@ -17,7 +17,7 @@
</project>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="f4486f7c7785b66e8dbfc775677d1b6386718e96"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="4bcd260ae62f2d40db8523f92cf7590b91d09465"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="fffc68521ebb1501d6b015c6d1c4a17a04fdb2e2"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="46da1a05ac04157669685246d70ac59d48699c9e"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="53517af1f57810bef745f03602f407161a475d76"/>

Просмотреть файл

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="61e82f99bb8bc78d52b5717e9a2481ec7267fa33">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="f4486f7c7785b66e8dbfc775677d1b6386718e96"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="4bcd260ae62f2d40db8523f92cf7590b91d09465"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="fffc68521ebb1501d6b015c6d1c4a17a04fdb2e2"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>

Просмотреть файл

@ -1,5 +1,5 @@
<?xml version="1.0"?>
<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist" lastupdate="1428708782000">
<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist" lastupdate="1432051555000">
<emItems>
<emItem blockID="i58" id="webmaster@buzzzzvideos.info">
<versionRange minVersion="0" maxVersion="*">
@ -2970,6 +2970,30 @@
<match name="filename" exp="(NPSWF32.*\.dll)|(Flash\ Player\.plugin)" /> <versionRange minVersion="13.0.0.263" maxVersion="13.0.0.268" severity="0" vulnerabilitystatus="1"></versionRange>
<infoURL>https://get.adobe.com/flashplayer/</infoURL>
</pluginItem>
<pluginItem blockID="p902">
<match name="filename" exp="JavaAppletPlugin\.plugin" /> <versionRange minVersion="Java 7 Update 45" maxVersion="Java 7 Update 78" severity="0" vulnerabilitystatus="1"></versionRange>
<infoURL>https://java.com/</infoURL>
</pluginItem>
<pluginItem blockID="p904">
<match name="filename" exp="JavaAppletPlugin\.plugin" /> <versionRange minVersion="Java 8" maxVersion="Java 8 Update 44" severity="0" vulnerabilitystatus="1"></versionRange>
<infoURL>https://java.com/</infoURL>
</pluginItem>
<pluginItem blockID="p906">
<match name="name" exp="Java\(TM\) Platform SE 7 U(4[5-9]|(5|6)\d|7[0-8])(\s[^\d\._U]|$)" /> <match name="filename" exp="npjp2\.dll" /> <versionRange severity="0" vulnerabilitystatus="1"></versionRange>
<infoURL>https://java.com/</infoURL>
</pluginItem>
<pluginItem blockID="p908">
<match name="name" exp="Java\(TM\) Platform SE 8( U([1-3]?\d|4[0-4]))?(\s[^\d\._U]|$)" /> <match name="filename" exp="npjp2\.dll" /> <versionRange severity="0" vulnerabilitystatus="1"></versionRange>
<infoURL>https://java.com/</infoURL>
</pluginItem>
<pluginItem blockID="p910">
<match name="name" exp="Java(\(TM\))? Plug-in 10\.(4[5-9]|(5|6)\d|7[0-8])(\.[0-9]+)?([^\d\._]|$)" /> <match name="filename" exp="libnpjp2\.so" /> <versionRange severity="0" vulnerabilitystatus="1"></versionRange>
<infoURL>https://java.com/</infoURL>
</pluginItem>
<pluginItem blockID="p912">
<match name="name" exp="Java(\(TM\))? Plug-in 11\.(\d|[1-3]\d|4[0-4])(\.[0-9]+)?([^\d\._]|$)" /> <match name="filename" exp="libnpjp2\.so" /> <versionRange severity="0" vulnerabilitystatus="1"></versionRange>
<infoURL>https://java.com/</infoURL>
</pluginItem>
</pluginItems>
<gfxItems>

Просмотреть файл

@ -1704,6 +1704,7 @@ pref("shumway.swf.whitelist", "http://g-ecx.images-amazon.com/*/AiryBasicRendere
pref("image.mem.max_decoded_image_kb", 256000);
pref("loop.enabled", true);
pref("loop.textChat.enabled", false);
pref("loop.server", "https://loop.services.mozilla.com/v0");
pref("loop.seenToS", "unseen");
pref("loop.showPartnerLogo", true);

Просмотреть файл

@ -46,13 +46,14 @@
}
function parseQueryString() {
let searchParams = new URLSearchParams(location.href.split("?")[1]);
let searchParams = new URLSearchParams(document.documentURI.split("?")[1]);
let mode = searchParams.get("mode");
config.directory = searchParams.get("directory");
config.origin = searchParams.get("origin");
let encodedURL = searchParams.get("url");
let url = decodeURIComponent(encodedURL);
if (config.directory) {
// directory does not have origin set, in that case use the url origin for
// the error message.
if (!config.origin) {
let URI = Services.io.newURI(url, null, null);
config.origin = Services.scriptSecurityManager.getNoAppCodebasePrincipal(URI).origin;
}

Просмотреть файл

@ -218,7 +218,15 @@ let LoopUI;
// Add observer notifications before the service is initialized
Services.obs.addObserver(this, "loop-status-changed", false);
this.MozLoopService.initialize();
// This is a promise for test purposes, but we don't want to be logging
// expected errors to the console, so we catch them here.
this.MozLoopService.initialize().catch(ex => {
if (!ex.message ||
(!ex.message.contains("not enabled") &&
!ex.message.contains("not needed"))) {
console.error(ex);
}
});
this.updateToolbarState();
},

Просмотреть файл

@ -400,7 +400,7 @@
#ifndef XP_MACOSX
class="menuitem-iconic"
#endif
oncommand="window.pktUI.openTabWithUrl(Pocket.listURL);"/>
oncommand="openUILink(Pocket.listURL, event);"/>
<menuseparator id="menu_pocketSeparator"/>
<menuitem id="menu_bookmarkThisPage"
command="Browser:AddBookmarkAs"

Просмотреть файл

@ -60,6 +60,9 @@ SocialUI = {
if (this._initialized) {
return;
}
let mm = window.getGroupMessageManager("social");
mm.loadFrameScript("chrome://browser/content/content.js", true);
mm.loadFrameScript("chrome://browser/content/social-content.js", true);
Services.obs.addObserver(this, "social:ambient-notification-changed", false);
Services.obs.addObserver(this, "social:profile-changed", false);
@ -154,7 +157,7 @@ SocialUI = {
break;
case "social:frameworker-error":
if (this.enabled && SocialSidebar.provider && SocialSidebar.provider.origin == data) {
SocialSidebar.setSidebarErrorMessage();
SocialSidebar.loadFrameworkerFailure();
}
break;
case "nsPref:changed":
@ -351,21 +354,21 @@ SocialFlyout = {
if (!SocialUI.enabled || panel.firstChild)
return;
// create and initialize the panel for this window
let iframe = document.createElement("iframe");
let iframe = document.createElement("browser");
iframe.setAttribute("type", "content");
iframe.setAttribute("class", "social-panel-frame");
iframe.setAttribute("flex", "1");
iframe.setAttribute("message", "true");
iframe.setAttribute("messagemanagergroup", "social");
iframe.setAttribute("tooltip", "aHTMLTooltip");
iframe.setAttribute("context", "contentAreaContextMenu");
iframe.setAttribute("origin", SocialSidebar.provider.origin);
panel.appendChild(iframe);
},
setFlyoutErrorMessage: function SF_setFlyoutErrorMessage() {
this.iframe.removeAttribute("src");
this.iframe.webNavigation.loadURI("about:socialerror?mode=compactInfo&origin=" +
encodeURIComponent(this.iframe.getAttribute("origin")),
null, null, null, null);
sizeSocialPanelToContent(this.panel, this.iframe);
// the xbl bindings for the iframe probably don't exist yet, so we can't
// access iframe.messageManager directly - but can get at it with this dance.
let mm = iframe.QueryInterface(Components.interfaces.nsIFrameLoaderOwner).frameLoader.messageManager;
mm.sendAsyncMessage("Social:SetErrorURL", null,
{ template: "about:socialerror?mode=compactInfo&origin=%{origin}" });
},
unload: function() {
@ -374,8 +377,6 @@ SocialFlyout = {
if (!panel.firstChild)
return
let iframe = panel.firstChild;
if (iframe.socialErrorListener)
iframe.socialErrorListener.remove();
panel.removeChild(iframe);
},
@ -383,8 +384,7 @@ SocialFlyout = {
let panel = this.panel;
let iframe = this.iframe;
this._dynamicResizer = new DynamicResizeWatcher();
iframe.docShell.isActive = true;
iframe.docShell.isAppTab = true;
iframe.docShellIsActive = true;
if (iframe.contentDocument.readyState == "complete") {
this._dynamicResizer.start(panel, iframe);
this.dispatchPanelEvent("socialFrameShow");
@ -405,7 +405,7 @@ SocialFlyout = {
onHidden: function(aEvent) {
this._dynamicResizer.stop();
this._dynamicResizer = null;
this.iframe.docShell.isActive = false;
this.iframe.docShellIsActive = false;
this.dispatchPanelEvent("socialFrameHide");
},
@ -423,7 +423,6 @@ SocialFlyout = {
iframe.removeEventListener("load", documentLoaded, true);
cb();
}, true);
Social.setErrorListener(iframe, SocialFlyout.setFlyoutErrorMessage.bind(SocialFlyout))
iframe.setAttribute("src", aURL);
} else {
// we still need to set the src to trigger the contents hashchange event
@ -503,11 +502,13 @@ SocialShare = {
iframe.setAttribute("tooltip", "aHTMLTooltip");
iframe.setAttribute("disableglobalhistory", "true");
iframe.setAttribute("flex", "1");
iframe.setAttribute("message", "true");
iframe.setAttribute("messagemanagergroup", "social");
panel.lastChild.appendChild(iframe);
iframe.addEventListener("load", function _firstload() {
iframe.removeEventListener("load", _firstload, true);
iframe.messageManager.loadFrameScript("chrome://browser/content/content.js", true);
}, true);
let mm = iframe.QueryInterface(Components.interfaces.nsIFrameLoaderOwner).frameLoader.messageManager;
mm.sendAsyncMessage("Social:SetErrorURL", null,
{ template: "about:socialerror?mode=compactInfo&origin=%{origin}&url=%{url}" });
this.populateProviderMenu();
},
@ -596,23 +597,6 @@ SocialShare = {
}
},
setErrorMessage: function() {
let iframe = this.iframe;
if (!iframe)
return;
let url;
let origin = iframe.getAttribute("origin");
if (!origin) {
// directory site is down
url = "about:socialerror?mode=tryAgainOnly&directory=1&url=" + encodeURIComponent(iframe.getAttribute("src"));
} else {
url = "about:socialerror?mode=compactInfo&origin=" + encodeURIComponent(origin);
}
iframe.webNavigation.loadURI(url, null, null, null, null);
sizeSocialPanelToContent(this.panel, iframe);
},
sharePage: function(providerOrigin, graphData, target) {
// if providerOrigin is undefined, we use the last-used provider, or the
// current/default provider. The provider selection in the share panel
@ -694,8 +678,7 @@ SocialShare = {
let endpointMatch = shareEndpoint == iframe.getAttribute("src");
if (endpointMatch) {
this._dynamicResizer.start(iframe.parentNode, iframe, size);
iframe.docShell.isActive = true;
iframe.docShell.isAppTab = true;
iframe.docShellIsActive = true;
let evt = iframe.contentDocument.createEvent("CustomEvent");
evt.initCustomEvent("OpenGraphData", true, true, JSON.stringify(pageData));
iframe.contentDocument.documentElement.dispatchEvent(evt);
@ -704,8 +687,7 @@ SocialShare = {
// first time load, wait for load and dispatch after load
iframe.addEventListener("load", function panelBrowserOnload(e) {
iframe.removeEventListener("load", panelBrowserOnload, true);
iframe.docShell.isActive = true;
iframe.docShell.isAppTab = true;
iframe.docShellIsActive = true;
iframe.parentNode.removeAttribute("loading");
// to support standard share endpoints mimick window.open by setting
// window.opener, some share endpoints rely on w.opener to know they
@ -764,7 +746,6 @@ SocialShare = {
_openPanel: function() {
let anchor = document.getAnonymousElementByAttribute(this.anchor, "class", "toolbarbutton-icon");
this.panel.openPopup(anchor, "bottomcenter topright", 0, 0, false, false);
Social.setErrorListener(this.iframe, this.setErrorMessage.bind(this));
Services.telemetry.getHistogramById("SOCIAL_TOOLBAR_BUTTONS").add(0);
}
};
@ -918,19 +899,12 @@ SocialSidebar = {
}
} else {
sbrowser.setAttribute("origin", this.provider.origin);
if (this.provider.errorState == "frameworker-error") {
SocialSidebar.setSidebarErrorMessage();
return;
}
// Make sure the right sidebar URL is loaded
if (sbrowser.getAttribute("src") != this.provider.sidebarURL) {
// we check readyState right after setting src, we need a new content
// viewer to ensure we are checking against the correct document.
sbrowser.docShell.createAboutBlankContentViewer(null);
Social.setErrorListener(sbrowser, this.setSidebarErrorMessage.bind(this));
// setting isAppTab causes clicks on untargeted links to open new tabs
sbrowser.docShell.isAppTab = true;
sbrowser.setAttribute("src", this.provider.sidebarURL);
PopupNotifications.locationChange(sbrowser);
}
@ -976,18 +950,13 @@ SocialSidebar = {
_unloadTimeoutId: 0,
setSidebarErrorMessage: function() {
let sbrowser = document.getElementById("social-sidebar-browser");
// a frameworker error "trumps" a sidebar error.
let origin = sbrowser.getAttribute("origin");
if (origin) {
origin = "&origin=" + encodeURIComponent(origin);
}
if (this.provider.errorState == "frameworker-error") {
sbrowser.setAttribute("src", "about:socialerror?mode=workerFailure" + origin);
} else {
let url = encodeURIComponent(this.provider.sidebarURL);
sbrowser.loadURI("about:socialerror?mode=tryAgain&url=" + url + origin, null, null);
loadFrameworkerFailure: function() {
if (this.provider && this.provider.errorState == "frameworker-error") {
// we have to explicitly load this error page since it is not being
// handled via the normal error page paths.
let sbrowser = document.getElementById("social-sidebar-browser");
sbrowser.setAttribute("src", "about:socialerror?mode=workerFailure&origin=" +
encodeURIComponent(this.provider.origin));
}
},
@ -1298,8 +1267,6 @@ SocialStatus = {
_onclose: function(frame) {
frame.removeEventListener("close", this._onclose, true);
frame.removeEventListener("click", this._onclick, true);
if (frame.socialErrorListener)
frame.socialErrorListener.remove();
},
_onclick: function() {
@ -1316,29 +1283,28 @@ SocialStatus = {
(frame) => {
frame.addEventListener("close", () => { SocialStatus._onclose(frame) }, true);
frame.addEventListener("click", this._onclick, true);
Social.setErrorListener(frame, this.setPanelErrorMessage.bind(this));
});
Services.telemetry.getHistogramById("SOCIAL_TOOLBAR_BUTTONS").add(1);
},
setPanelErrorMessage: function(aNotificationFrame) {
if (!aNotificationFrame)
return;
let src = aNotificationFrame.getAttribute("src");
aNotificationFrame.removeAttribute("src");
let origin = aNotificationFrame.getAttribute("origin");
aNotificationFrame.webNavigation.loadURI("about:socialerror?mode=tryAgainOnly&url=" +
encodeURIComponent(src) + "&origin=" +
encodeURIComponent(origin),
null, null, null, null);
let panel = aNotificationFrame.parentNode;
sizeSocialPanelToContent(panel, aNotificationFrame);
},
}
};
let SocialMarksWidgetListener = {
onWidgetAdded: function(aWidgetId, aArea, aPosition) {
let node = document.getElementById(aWidgetId);
if (!node || !node.classList.contains("social-mark-button"))
return;
node._receiveMessage = node.receiveMessage.bind(node);
messageManager.addMessageListener("Social:ErrorPageNotify", node._receiveMessage);
},
onWidgetBeforeDOMChange: function(aNode, aNextNode, aContainer, isRemoval) {
if (!isRemoval || !aNode || !aNode.classList.contains("social-mark-button"))
return;
messageManager.removeMessageListener("Social:ErrorPageNotify", aNode._receiveMessage);
delete aNode._receiveMessage;
}
}
/**
* SocialMarks
*
@ -1442,7 +1408,9 @@ SocialMarks = {
get _toolbarHelper() {
delete this._toolbarHelper;
this._toolbarHelper = new ToolbarHelper("social-mark-button", CreateSocialMarkWidget);
this._toolbarHelper = new ToolbarHelper("social-mark-button",
CreateSocialMarkWidget,
SocialMarksWidgetListener);
return this._toolbarHelper;
},

Просмотреть файл

@ -1223,6 +1223,8 @@
<browser id="social-sidebar-browser"
type="content"
context="contentAreaContextMenu"
message="true"
messagemanagergroup="social"
disableglobalhistory="true"
tooltip="aHTMLTooltip"
popupnotificationanchor="social-sidebar-favico"

Просмотреть файл

@ -375,6 +375,12 @@ let ClickEventHandler = {
bookmark: false, referrerPolicy: ownerDoc.referrerPolicy };
if (href) {
try {
BrowserUtils.urlSecurityCheck(href, node.ownerDocument.nodePrincipal);
} catch (e) {
return;
}
json.href = href;
if (node) {
json.title = node.getAttribute("title");

Просмотреть файл

@ -247,6 +247,7 @@ input[type=button] {
.newtab-title {
left: 0;
padding: 0 4px;
}
.newtab-sponsored {

Просмотреть файл

@ -217,7 +217,10 @@ let gPage = {
for (let site of gGrid.sites) {
if (site) {
site.captureIfMissing();
// The site may need to modify and/or re-render itself if
// something changed after newtab was created by preloader.
// For example, the suggested tile endTime may have passed.
site.onFirstVisible();
}
}

Просмотреть файл

@ -136,10 +136,32 @@ Site.prototype = {
return newTabString("suggested.button", [targetedName]);
},
/**
* Checks for and modifies link at campaign end time
*/
_checkLinkEndTime: function Site_checkLinkEndTime() {
if (this.link.endTime && this.link.endTime < Date.now()) {
let oldUrl = this.url;
// chop off the path part from url
this.link.url = Services.io.newURI(this.url, null, null).resolve("/");
// clear supplied images - this triggers thumbnail download for new url
delete this.link.imageURI;
delete this.link.enhancedImageURI;
// remove endTime to avoid further time checks
delete this.link.endTime;
// clear enhanced-content image that may still exist in preloaded page
this._querySelector(".enhanced-content").style.backgroundImage = "";
gPinnedLinks.replace(oldUrl, this.link);
}
},
/**
* Renders the site's data (fills the HTML fragment).
*/
_render: function Site_render() {
// first check for end time, as it may modify the link
this._checkLinkEndTime();
// setup display variables
let enhanced = gAllPages.enhanced && DirectoryLinksProvider.getEnhancedLink(this.link);
let url = this.url;
let title = enhanced && enhanced.title ? enhanced.title :
@ -174,6 +196,21 @@ Site.prototype = {
this.refreshThumbnail();
},
/**
* Called when the site's tab becomes visible for the first time.
* Since the newtab may be preloaded long before it's displayed,
* check for changed conditions and re-render if needed
*/
onFirstVisible: function Site_onFirstVisible() {
if (this.link.endTime && this.link.endTime < Date.now()) {
// site needs to change landing url and background image
this._render();
}
else {
this.captureIfMissing();
}
},
/**
* Captures the site's thumbnail in the background, but only if there's no
* existing thumbnail and the page allows background captures.

Просмотреть файл

@ -0,0 +1,105 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/* This content script should work in any browser or iframe and should not
* depend on the frame being contained in tabbrowser. */
const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm");
// social frames are always treated as app tabs
docShell.isAppTab = true;
// Error handling class used to listen for network errors in the social frames
// and replace them with a social-specific error page
SocialErrorListener = {
QueryInterface: XPCOMUtils.generateQI([Ci.nsIWebProgressListener,
Ci.nsISupportsWeakReference,
Ci.nsISupports]),
defaultTemplate: "about:socialerror?mode=tryAgainOnly&url=%{url}&origin=%{origin}",
urlTemplate: null,
init() {
addMessageListener("Social:SetErrorURL", this);
let webProgress = docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebProgress);
webProgress.addProgressListener(this, Ci.nsIWebProgress.NOTIFY_STATE_REQUEST |
Ci.nsIWebProgress.NOTIFY_LOCATION);
},
receiveMessage(message) {
switch(message.name) {
case "Social:SetErrorURL": {
// either a url or null to reset to default template
this.urlTemplate = message.objects.template;
}
}
},
setErrorPage() {
// if this is about:providerdirectory, use the directory iframe
let frame = docShell.chromeEventHandler;
let origin = frame.getAttribute("origin");
let src = frame.getAttribute("src");
if (src == "about:providerdirectory") {
frame = content.document.getElementById("activation-frame");
src = frame.getAttribute("src");
}
let url = this.urlTemplate || this.defaultTemplate;
url = url.replace("%{url}", encodeURIComponent(src));
url = url.replace("%{origin}", encodeURIComponent(origin));
if (frame != docShell.chromeEventHandler) {
// Unable to access frame.docShell here. This is our own frame and doesn't
// provide reload, so we'll just set the src.
frame.setAttribute("src", url);
} else {
let webNav = docShell.QueryInterface(Ci.nsIWebNavigation);
webNav.loadURI(url, null, null, null, null);
}
sendAsyncMessage("Social:ErrorPageNotify", {
origin: origin,
url: src
});
},
onStateChange(aWebProgress, aRequest, aState, aStatus) {
let failure = false;
if ((aState & Ci.nsIWebProgressListener.STATE_STOP)) {
if (aRequest instanceof Ci.nsIHttpChannel) {
try {
// Change the frame to an error page on 4xx (client errors)
// and 5xx (server errors). responseStatus throws if it is not set.
failure = aRequest.responseStatus >= 400 &&
aRequest.responseStatus < 600;
} catch (e) {
failure = aStatus != Components.results.NS_OK;
}
}
}
// Calling cancel() will raise some OnStateChange notifications by itself,
// so avoid doing that more than once
if (failure && aStatus != Components.results.NS_BINDING_ABORTED) {
aRequest.cancel(Components.results.NS_BINDING_ABORTED);
this.setErrorPage();
}
},
onLocationChange(aWebProgress, aRequest, aLocation, aFlags) {
if (aRequest && aFlags & Ci.nsIWebProgressListener.LOCATION_CHANGE_ERROR_PAGE) {
aRequest.cancel(Components.results.NS_BINDING_ABORTED);
this.setErrorPage();
}
},
onProgressChange() {},
onStatusChange() {},
onSecurityChange() {},
};
SocialErrorListener.init();

Просмотреть файл

@ -30,6 +30,8 @@
<xul:browser anonid="content" class="chat-frame" flex="1"
context="contentAreaContextMenu"
disableglobalhistory="true"
message="true"
messagemanagergroup="social"
tooltip="aHTMLTooltip"
xbl:inherits="src,origin" type="content"/>
</content>
@ -72,13 +74,6 @@
this._deferredChatLoaded.resolve(this);
}, true);
// load content.js to support webrtc, fullscreen, etc.
this.addEventListener("load", function loaded(event) {
this.removeEventListener("load", loaded, true);
let mm = this.content.messageManager;
mm.loadFrameScript("chrome://browser/content/content.js", true);
}, true);
if (this.src)
this.setAttribute("src", this.src);
]]></constructor>
@ -141,10 +136,10 @@
<property name="isActive">
<getter>
return this.content.docShell.isActive;
return this.content.docShellIsActive;
</getter>
<setter>
this.content.docShell.isActive = !!val;
this.content.docShellIsActive = !!val;
// let the chat frame know if it is being shown or hidden
let evt = this.contentDocument.createEvent("CustomEvent");

Просмотреть файл

@ -54,6 +54,8 @@
iframe.setAttribute("type", "content");
iframe.setAttribute("class", "social-panel-frame");
iframe.setAttribute("flex", "1");
iframe.setAttribute("message", "true");
iframe.setAttribute("messagemanagergroup", "social");
iframe.setAttribute("tooltip", "aHTMLTooltip");
iframe.setAttribute("context", "contentAreaContextMenu");
iframe.setAttribute("origin", provider.origin);
@ -134,6 +136,15 @@
]]></body>
</method>
<method name="receiveMessage">
<parameter name="message"/>
<body><![CDATA[
if (message.name != "Social:ErrorPageNotify" || message.target != this.content)
return;
this.openPanel();
]]></body>
</method>
<method name="loadPanel">
<parameter name="pageData"/>
<parameter name="target"/>
@ -206,37 +217,16 @@
let unload = () => {
contentWindow.removeEventListener("unload", unload);
contentWindow.removeEventListener("socialMarkUpdate", markUpdate);
if (this.content.socialErrorListener)
this.content.socialErrorListener.remove();
}
contentWindow.addEventListener("socialMarkUpdate", markUpdate);
contentWindow.addEventListener("unload", unload);
}
this.content.addEventListener("DOMContentLoaded", DOMContentLoaded, true);
Social.setErrorListener(this.content, this.setErrorMessage.bind(this));
this._loading = true;
this.content.setAttribute("src", endpoint);
]]></body>
</method>
<method name="setErrorMessage">
<parameter name="aNotificationFrame"/>
<body><![CDATA[
if (!aNotificationFrame)
return;
let src = aNotificationFrame.getAttribute("src");
aNotificationFrame.removeAttribute("src");
let origin = aNotificationFrame.getAttribute("origin");
aNotificationFrame.webNavigation.loadURI("about:socialerror?mode=tryAgainOnly&url=" +
encodeURIComponent(src) + "&origin=" +
encodeURIComponent(origin),
null, null, null, null);
// ensure the panel is open if error occurs on first click
this.openPanel();
]]></body>
</method>
<method name="openPanel">
<parameter name="aResetOnClose"/>
<body><![CDATA[

Просмотреть файл

@ -1,6 +1,8 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
const {TabStateFlusher} = Cu.import("resource:///modules/sessionstore/TabStateFlusher.jsm", {});
const DUMMY = "http://example.com/browser/browser/base/content/test/general/dummy_page.html";
function getMinidumpDirectory() {
@ -86,7 +88,7 @@ let restart = Task.async(function*(browser) {
return browser;
// Make sure the main process has all of the current tab state before crashing
TabState.flush(browser);
yield TabStateFlusher.flush(browser);
browser.messageManager.sendAsyncMessage("Test:Crash");
yield promiseWaitForEvent(browser, "AboutTabCrashedLoad", false, true);

Просмотреть файл

@ -1,5 +1,7 @@
"use strict";
const {TabStateFlusher} = Cu.import("resource:///modules/sessionstore/TabStateFlusher.jsm", {});
add_task(function*() {
let uri = "http://example.com/browser/browser/base/content/test/general/dummy_page.html";
@ -10,7 +12,7 @@ add_task(function*() {
let tab = gBrowser.addTab();
tab.linkedBrowser.loadURI(uri);
yield BrowserTestUtils.browserLoaded(tab.linkedBrowser);
TabState.flush(tab.linkedBrowser);
yield TabStateFlusher.flush(tab.linkedBrowser);
let key = tab.linkedBrowser.permanentKey;
let win = gBrowser.replaceTabWithWindow(tab);

Просмотреть файл

@ -1,4 +1,4 @@
<svg width="640px" height="480px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0">
<svg width="640px" height="480px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>This is a root SVG element's title</title>
<foreignObject>
<html xmlns="http://www.w3.org/1999/xhtml">

До

Ширина:  |  Высота:  |  Размер: 1.8 KiB

После

Ширина:  |  Высота:  |  Размер: 1.8 KiB

Просмотреть файл

@ -46,3 +46,4 @@ support-files =
[browser_newtab_undo.js]
[browser_newtab_unpin.js]
[browser_newtab_update.js]
[browser_newtab_bug1145428.js]

Просмотреть файл

@ -0,0 +1,88 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
/*
* These tests make sure that pinning suggested tile results in:
* - making suggested tile a history tile and replacing enhancedImageURI with imageURI
* - upond end of campaign, replaces landing url with baseDomain and switches
* background image to thumbnail
*/
gDirectorySource = "data:application/json," + JSON.stringify({
"suggested": [{
url: "http://example.com/landing/page.html",
imageURI: "data:image/png;base64,helloWORLD3",
enhancedImageURI: "data:image/png;base64,helloWORLD2",
title: "title",
type: "affiliate",
frecent_sites: ["example0.com"],
}]
});
function runTests() {
let origGetFrecentSitesName = DirectoryLinksProvider.getFrecentSitesName;
DirectoryLinksProvider.getFrecentSitesName = () => "";
function getData(cellNum) {
let cell = getCell(cellNum);
if (!cell.site)
return null;
let siteNode = cell.site.node;
return {
type: siteNode.getAttribute("type"),
thumbnail: siteNode.querySelector(".newtab-thumbnail").style.backgroundImage,
enhanced: siteNode.querySelector(".enhanced-content").style.backgroundImage,
title: siteNode.querySelector(".newtab-title").textContent,
suggested: siteNode.getAttribute("suggested"),
url: siteNode.querySelector(".newtab-link").getAttribute("href"),
};
}
yield setLinks("0,1,2,3,4,5,6,7,8,9");
setPinnedLinks("");
yield addNewTabPageTab();
// load another newtab since the first may not get suggested tile
yield addNewTabPageTab();
checkGrid("http://example.com/landing/page.html,0,1,2,3,4,5,6,7,8,9");
// evaluate suggested tile
let tileData = getData(0);
is(tileData.type, "affiliate", "unpinned type");
is(tileData.thumbnail, "url(\"data:image/png;base64,helloWORLD3\")", "unpinned thumbnail");
is(tileData.enhanced, "url(\"data:image/png;base64,helloWORLD2\")", "unpinned enhanced");
is(tileData.suggested, "true", "has suggested set", "unpinned suggested exists");
is(tileData.url, "http://example.com/landing/page.html", "unpinned landing page");
// suggested tile should not be pinned
is(NewTabUtils.pinnedLinks.isPinned({url: "http://example.com/landing/page.html"}), false, "suggested tile is not pinned");
// pin suggested tile
whenPagesUpdated();
let siteNode = getCell(0).node.querySelector(".newtab-site");
let pinButton = siteNode.querySelector(".newtab-control-pin");
EventUtils.synthesizeMouseAtCenter(pinButton, {}, getContentWindow());
// wait for whenPagesUpdated
yield null;
// tile should be pinned and turned into history tile
is(NewTabUtils.pinnedLinks.isPinned({url: "http://example.com/landing/page.html"}), true, "suggested tile is pinned");
tileData = getData(0);
is(tileData.type, "history", "pinned type");
is(tileData.suggested, null, "no suggested attribute");
is(tileData.url, "http://example.com/landing/page.html", "original landing page");
// set pinned tile endTime into past and reload the page
NewTabUtils.pinnedLinks._links[0].endTime = Date.now() - 1000;
yield addNewTabPageTab();
// check that url is reset to base domain and thumbnail points to moz-page-thumb service
is(NewTabUtils.pinnedLinks.isPinned({url: "http://example.com/"}), true, "baseDomain url is pinned");
tileData = getData(0);
is(tileData.type, "history", "type is history");
is(tileData.title, "example.com", "title changed to baseDomain");
is(tileData.thumbnail.indexOf("moz-page-thumb") != -1, true, "thumbnail contains moz-page-thumb");
is(tileData.enhanced, "", "no enhanced image");
is(tileData.url, "http://example.com/", "url points to baseDomian");
DirectoryLinksProvider.getFrecentSitesName = origGetFrecentSitesName;
}

Просмотреть файл

@ -159,6 +159,7 @@ function runTests() {
suggestedLink.adgroup_name = "Technology";
Services.prefs.setCharPref(PREF_NEWTAB_DIRECTORYSOURCE,
"data:application/json," + JSON.stringify({"suggested": [suggestedLink]}));
yield watchLinksChangeOnce().then(TestRunner.next);
yield addNewTabPageTab();
({type, enhanced, title, suggested} = getData(0));
@ -170,6 +171,7 @@ function runTests() {
suggestedLink.explanation = "Suggested for %1$S enthusiasts who visit sites like %2$S";
Services.prefs.setCharPref(PREF_NEWTAB_DIRECTORYSOURCE,
"data:application/json," + encodeURIComponent(JSON.stringify({"suggested": [suggestedLink]})));
yield watchLinksChangeOnce().then(TestRunner.next);
yield addNewTabPageTab();
({type, enhanced, title, suggested} = getData(0));
@ -181,6 +183,7 @@ function runTests() {
delete suggestedLink.adgroup_name;
Services.prefs.setCharPref(PREF_NEWTAB_DIRECTORYSOURCE,
"data:application/json," + encodeURIComponent(JSON.stringify({"suggested": [suggestedLink]})));
yield watchLinksChangeOnce().then(TestRunner.next);
yield addNewTabPageTab();
({type, enhanced, title, suggested} = getData(0));

Просмотреть файл

@ -41,20 +41,27 @@ function runTests() {
yield null;
yield null;
whenPagesUpdated();
// Click the pin button on the link in the 1th tile spot
let siteNode = getCell(1).node.querySelector(".newtab-site");
let pinButton = siteNode.querySelector(".newtab-control-pin");
expected.action = "pin";
// tiles become "history" when pinned
expected.type = "history";
expected.pinned = true;
EventUtils.synthesizeMouseAtCenter(pinButton, {}, getContentWindow());
// Wait for reportSitesAction
// Wait for whenPagesUpdated and reportSitesAction
yield null;
yield null;
// Unpin that link
expected.action = "unpin";
expected.pinned = false;
whenPagesUpdated();
// need to reget siteNode for it could have been re-rendered after pin
siteNode = getCell(1).node.querySelector(".newtab-site");
pinButton = siteNode.querySelector(".newtab-control-pin");
EventUtils.synthesizeMouseAtCenter(pinButton, {}, getContentWindow());
// Wait for whenPagesUpdated and reportSitesAction
@ -75,7 +82,7 @@ function runTests() {
yield null;
// Click the 1th link now in the 0th tile spot
expected.type = "sponsored";
expected.type = "history";
expected.action = "click";
EventUtils.synthesizeMouseAtCenter(siteNode, {}, getContentWindow());

Просмотреть файл

@ -34,7 +34,7 @@ skip-if = e10s && debug # Leaking docshells (bug 1150147)
[browser_share.js]
skip-if = true # bug 1115131
[browser_social_activation.js]
skip-if = e10s # Bug 933103 synthesizeMouseAtCenter not e10s friendly
skip-if = e10s && debug # e10s/Linux/Debug Leaking docshells (bug 1150147)
[browser_social_chatwindow.js]
[browser_social_chatwindow_resize.js]
[browser_social_chatwindowfocus.js]

Просмотреть файл

@ -62,12 +62,7 @@ function addTab(url, callback) {
function sendActivationEvent(tab, callback, nullManifest) {
// hack Social.lastEventReceived so we don't hit the "too many events" check.
Social.lastEventReceived = 0;
let doc = tab.linkedBrowser.contentDocument;
// if our test has a frame, use it
if (doc.defaultView.frames[0])
doc = doc.defaultView.frames[0].document;
let button = doc.getElementById(nullManifest ? "activation-old" : "activation");
EventUtils.synthesizeMouseAtCenter(button, {}, doc.defaultView);
BrowserTestUtils.synthesizeMouseAtCenter("#activation", {}, tab.linkedBrowser);
executeSoon(callback);
}
@ -117,24 +112,22 @@ function clickAddonRemoveButton(tab, aCallback) {
AddonManager.getAddonsByTypes(["service"], function(aAddons) {
let addon = aAddons[0];
let doc = tab.linkedBrowser.contentDocument;
let doc = tab.linkedBrowser.contentDocument;;
let list = doc.getElementById("addon-list");
let item = getAddonItemInList(addon.id, list);
isnot(item, null, "Should have found the add-on in the list");
var button = doc.getAnonymousElementByAttribute(item, "anonid", "remove-btn");
let button = item._removeBtn;
isnot(button, null, "Should have a remove button");
ok(!button.disabled, "Button should not be disabled");
EventUtils.synthesizeMouseAtCenter(button, { }, doc.defaultView);
// uninstall happens after about:addons tab is closed, so we wait on
// disabled
promiseObserverNotified("social:provider-disabled").then(() => {
is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling");
executeSoon(function() { aCallback(addon); });
});
// Force XBL to apply
item.clientTop;
is(item.getAttribute("pending"), "uninstall", "Add-on should be uninstalling");
executeSoon(function() { aCallback(addon); });
BrowserTestUtils.synthesizeMouseAtCenter(button, {}, tab.linkedBrowser);
});
}

Просмотреть файл

@ -62,17 +62,17 @@ var tests = {
testSidebar: function(next) {
let sbrowser = document.getElementById("social-sidebar-browser");
onSidebarLoad(function() {
ok(sbrowser.contentDocument.location.href.indexOf("about:socialerror?")==0, "sidebar is on social error page");
ok(sbrowser.contentDocument.documentURI.indexOf("about:socialerror?mode=tryAgainOnly")==0, "sidebar is on social error page");
gc();
// Add a new load listener, then find and click the "try again" button.
onSidebarLoad(function() {
// should still be on the error page.
ok(sbrowser.contentDocument.location.href.indexOf("about:socialerror?")==0, "sidebar is still on social error page");
ok(sbrowser.contentDocument.documentURI.indexOf("about:socialerror?mode=tryAgainOnly")==0, "sidebar is still on social error page");
// go online and try again - this should work.
goOnline().then(function () {
onSidebarLoad(function() {
// should now be on the correct page.
is(sbrowser.contentDocument.location.href, manifest.sidebarURL, "sidebar is now on social sidebar page");
is(sbrowser.contentDocument.documentURI, manifest.sidebarURL, "sidebar is now on social sidebar page");
next();
});
sbrowser.contentDocument.getElementById("btnTryAgain").click();
@ -97,8 +97,8 @@ var tests = {
},
function() { // the "load" callback.
todo_is(panelCallbackCount, 0, "Bug 833207 - should be no callback when error page loads.");
let href = panel.firstChild.contentDocument.location.href;
ok(href.indexOf("about:socialerror?")==0, "flyout is on social error page");
let href = panel.firstChild.contentDocument.documentURI;
ok(href.indexOf("about:socialerror?mode=compactInfo")==0, "flyout is on social error page");
// Bug 832943 - the listeners previously stopped working after a GC, so
// force a GC now and try again.
gc();
@ -109,8 +109,8 @@ var tests = {
},
function() { // the "load" callback.
todo_is(panelCallbackCount, 0, "Bug 833207 - should be no callback when error page loads.");
let href = panel.firstChild.contentDocument.location.href;
ok(href.indexOf("about:socialerror?")==0, "flyout is on social error page");
let href = panel.firstChild.contentDocument.documentURI;
ok(href.indexOf("about:socialerror?mode=compactInfo")==0, "flyout is on social error page");
gc();
SocialFlyout.unload();
next();
@ -134,7 +134,7 @@ var tests = {
function() { // the "load" callback.
todo_is(panelCallbackCount, 0, "Bug 833207 - should be no callback when error page loads.");
let chat = getChatBar().selectedChat;
waitForCondition(function() chat.content != null && chat.contentDocument.location.href.indexOf("about:socialerror?")==0,
waitForCondition(function() chat.content != null && chat.contentDocument.documentURI.indexOf("about:socialerror?mode=tryAgainOnly")==0,
function() {
chat.close();
next();
@ -157,7 +157,7 @@ var tests = {
null,
function() { // the "load" callback.
let chat = getChatBar().selectedChat;
is(chat.contentDocument.location.href, url, "correct url loaded");
is(chat.contentDocument.documentURI, url, "correct url loaded");
// toggle to a detached window.
chat.swapWindows().then(
chat => {
@ -169,7 +169,7 @@ var tests = {
ok(!!chat.content, "we have chat content 2");
chat.contentDocument.location.reload();
info("chat reload called");
waitForCondition(function() chat.contentDocument.location.href.indexOf("about:socialerror?")==0,
waitForCondition(function() chat.contentDocument.documentURI.indexOf("about:socialerror?mode=tryAgainOnly")==0,
function() {
chat.close();
next();

Просмотреть файл

@ -238,7 +238,7 @@ var tests = {
ensureEventFired(btn.panel, "popupshown").then(() => {
info("marks panel is open");
ensureFrameLoaded(btn.content).then(() => {
is(btn.contentDocument.location.href.indexOf("about:socialerror?"), 0, "social error page is showing");
is(btn.contentDocument.documentURI.indexOf("about:socialerror?mode=tryAgainOnly"), 0, "social error page is showing "+btn.contentDocument.documentURI);
// cleanup after the page has been unmarked
ensureBrowserTabClosed(tab).then(() => {
ok(btn.disabled, "button is disabled");

Просмотреть файл

@ -183,7 +183,7 @@ var tests = {
let panel = document.getElementById("social-notification-panel");
ensureEventFired(panel, "popupshown").then(() => {
ensureFrameLoaded(frame).then(() => {
is(frame.contentDocument.location.href.indexOf("about:socialerror?"), 0, "social error page is showing "+frame.contentDocument.location.href);
is(frame.contentDocument.documentURI.indexOf("about:socialerror?mode=tryAgainOnly"), 0, "social error page is showing "+frame.contentDocument.documentURI);
panel.hidePopup();
goOnline().then(next);
});

Просмотреть файл

@ -63,7 +63,7 @@ var tests = {
Services.obs.removeObserver(observer, 'ipc:content-shutdown');
// Add another sidebar load listener - it should be the error page.
onSidebarLoad(function() {
ok(sbrowser.contentDocument.location.href.indexOf("about:socialerror?")==0, "is on social error page");
ok(sbrowser.contentDocument.location.href.indexOf("about:socialerror?mode=workerFailure")==0, "is on social error page");
// after reloading, the sidebar should reload
onSidebarLoad(function() {
// now ping both workers - they should both be alive.

Просмотреть файл

@ -85,6 +85,7 @@ browser.jar:
* content/browser/chatWindow.xul (content/chatWindow.xul)
content/browser/tab-content.js (content/tab-content.js)
content/browser/content.js (content/content.js)
content/browser/social-content.js (content/social-content.js)
content/browser/defaultthemes/1.footer.jpg (content/defaultthemes/1.footer.jpg)
content/browser/defaultthemes/1.header.jpg (content/defaultthemes/1.header.jpg)
content/browser/defaultthemes/1.icon.jpg (content/defaultthemes/1.icon.jpg)

Просмотреть файл

@ -1,60 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 132 62" width="132" height="62">
<path d="M5.3,45.2H2.7L0.1,57.3h3.2c1.8,0,3-0.4,4.2-1.5c1.4-1.2,2.6-4.1,2.6-6.2c0-1.7-0.4-2.8-1.2-3.5C8,45.4,7.1,45.2,5.3,45.2z
M6.6,54.9c-0.7,0.9-1.9,1.3-3.5,1.3H1.8l2.1-9.8h1.5c1.3,0,2,0.2,2.6,1.1c0.4,0.5,0.5,1.3,0.5,2.4C8.5,51.2,7.9,53.4,6.6,54.9z
M15.3,48.3c-1.1,0-2,0.4-2.9,1.2c-1.3,1.2-2,3.1-2,4.8c0,2,1.3,3.2,2.9,3.2c1.8,0,2.7-0.4,3.6-1.3l-0.6-0.8c-0.8,0.7-1.5,1-2.6,1
c-0.9,0-1.8-0.7-1.8-1.9c0-0.3,0-0.7,0.1-1.1c0.4,0,0.8,0,1.1,0c1.9,0,3.1-0.3,3.8-1c0.5-0.5,0.8-1.1,0.8-1.8
C17.8,49.2,17,48.3,15.3,48.3z M16,51.7c-0.5,0.4-1.2,0.7-2.8,0.7c-0.3,0-0.7,0-0.9,0c0.5-1.8,1.6-3,2.8-3c1,0,1.4,0.5,1.4,1.2
C16.4,51,16.2,51.4,16,51.7z M25,48.5l-3.3,5.9c-0.4,0.6-0.5,1-0.7,1.5h0c0-0.4-0.1-0.9-0.1-1.5l-0.8-6.1l-1.4,0.3l1.3,8.8h1.4
l5.2-8.9L25,48.5z M30.7,48.3c-1.1,0-2,0.4-2.9,1.2c-1.3,1.2-2,3.1-2,4.8c0,2,1.3,3.2,2.9,3.2c1.8,0,2.7-0.4,3.6-1.3l-0.6-0.8
c-0.8,0.7-1.5,1-2.6,1c-0.9,0-1.8-0.7-1.8-1.9c0-0.3,0-0.7,0.1-1.1c0.4,0,0.8,0,1.1,0c1.9,0,3.1-0.3,3.8-1c0.5-0.5,0.8-1.1,0.8-1.8
C33.3,49.2,32.4,48.3,30.7,48.3z M31.4,51.7c-0.5,0.4-1.2,0.7-2.8,0.7c-0.3,0-0.7,0-0.9,0c0.5-1.8,1.6-3,2.8-3c1,0,1.4,0.5,1.4,1.2
C31.9,51,31.7,51.4,31.4,51.7z M37.2,47.5c0.2-1.1,0.4-2.5,0.1-3.2l-1.5,0.6c0.2,0.6,0.2,1.5-0.1,2.7L34,55.7
c-0.1,0.3-0.1,0.5-0.1,0.8c0,0.7,0.4,1,1.2,1c0.4,0,0.7,0,1.1-0.2l-0.1-0.9c-0.1,0-0.2,0-0.3,0c-0.2,0-0.4-0.1-0.4-0.4
c0-0.2,0-0.4,0.1-0.6L37.2,47.5z M42.3,48.2c-2.8,0-4.9,2.6-4.9,6.1c0,2,1.1,3.2,3,3.2c2.9,0,4.9-2.7,4.9-6.1
C45.3,49.5,44.4,48.2,42.3,48.2z M40.7,56.4c-1.1,0-1.7-0.6-1.7-1.9c0-2.9,1.2-5.1,3.2-5.1c0.9,0,1.7,0.5,1.7,1.9
C43.8,54,42.7,56.4,40.7,56.4z M52.1,48.3c-1,0-2.3,0.5-3.2,1.8c0.2-0.9,0.1-1.4-0.1-1.9l-1.3,0.6c0.2,0.6,0.2,1-0.1,2.2l-2.2,10
l1.4-0.3l0.8-3.6c0.6,0.3,1.2,0.4,2.1,0.4c1.2,0,2.4-0.6,3.3-1.6c0.9-1.1,1.5-3.2,1.5-4.8C54.4,49.4,53.7,48.3,52.1,48.3z
M51.8,55.2c-0.4,0.7-1.4,1.2-2.2,1.2c-0.7,0-1.4-0.2-1.8-0.5l0.9-4.3c0.9-1.3,2-1.9,2.9-1.9c0.9,0,1.3,0.5,1.3,1.7
C52.9,52.5,52.4,54.3,51.8,55.2z M60.1,48.3c-1.1,0-2,0.4-2.9,1.2c-1.3,1.2-2,3.1-2,4.8c0,2,1.3,3.2,2.9,3.2c1.8,0,2.7-0.4,3.6-1.3
l-0.6-0.8c-0.8,0.7-1.5,1-2.6,1c-0.9,0-1.8-0.7-1.8-1.9c0-0.3,0-0.7,0.1-1.1c0.4,0,0.8,0,1.1,0c1.9,0,3.1-0.3,3.8-1
c0.5-0.5,0.8-1.1,0.8-1.8C62.6,49.2,61.8,48.3,60.1,48.3z M60.8,51.7c-0.5,0.4-1.2,0.7-2.8,0.7c-0.3,0-0.7,0-0.9,0
c0.5-1.8,1.6-3,2.8-3c1,0,1.4,0.5,1.4,1.2C61.2,51,61,51.4,60.8,51.7z M65.8,50.3c0.2-1,0.2-1.5-0.1-2.1l-1.3,0.6
c0.2,0.6,0.2,1.2-0.1,2.5l-1.3,6h1.4l1.2-5.5c0.9-1.3,1.8-2,2.6-2c0.3,0,0.4,0,0.6,0.1l0.6-1.5c-0.2-0.1-0.3-0.1-0.7-0.1
C67.8,48.3,66.6,49.1,65.8,50.3z M78.1,51.6l0.3-1.3h-4.2l0.8-4h5l0.5-1.2h-6.7l-2.6,12.1H78l0.3-1.3h-5.4l0.9-4.4H78.1z M86.6,54.5
l2.1-9.8l-1.4-0.2l-0.9,4.3c-0.4-0.2-1-0.3-2-0.3c-1,0-2.2,0.4-3.1,1.3c-1.3,1.3-2,3.1-2,4.9c0,1.9,0.8,3,2.5,3
c1.3,0,2.3-0.5,3.1-1.6c-0.1,1,0.2,1.4,0.7,1.9l1.2-0.9C86.4,56.3,86.2,55.9,86.6,54.5z M85.2,54.2c-0.9,1.5-2,2.1-3,2.1
c-0.9,0-1.3-0.6-1.3-1.7c0-1.3,0.6-3.2,1.4-4.1c0.6-0.6,1.4-1,2.1-1c0.8,0,1.2,0.1,1.7,0.4L85.2,54.2z M88.2,57.3h1.5l1.9-9
l-1.5,0.2L88.2,57.3z M91.4,44.7c-0.6,0-1.1,0.5-1.1,1.1c0,0.6,0.5,1.1,1.1,1.1s1.1-0.5,1.1-1.1S92,44.7,91.4,44.7z M93.7,55.7
c0-0.2,0-0.6,0.1-1l1.1-5.2h1.9l0.6-1h-2.2c0.2-0.8,0.5-1.9,0.7-2.5l-1.5,0.3c-0.2,0.7-0.4,1.5-0.6,2.2h-1.2l-0.2,1h1.2l-1.1,5.3
c-0.1,0.5-0.1,1-0.1,1.3c0,0.9,0.5,1.4,1.6,1.4c0.6,0,1.1-0.1,1.6-0.4v-0.9c-0.3,0.1-0.5,0.2-0.9,0.2C94,56.5,93.7,56.3,93.7,55.7z
M99.8,44.7c-0.6,0-1.1,0.5-1.1,1.1c0,0.6,0.5,1.1,1.1,1.1s1.1-0.5,1.1-1.1S100.4,44.7,99.8,44.7z M96.6,57.3h1.5l1.9-9l-1.5,0.2
L96.6,57.3z M105.3,48.2c-2.8,0-4.9,2.6-4.9,6.1c0,2,1.1,3.2,3,3.2c2.9,0,4.9-2.7,4.9-6.1C108.3,49.5,107.3,48.2,105.3,48.2z
M103.6,56.4c-1.1,0-1.7-0.6-1.7-1.9c0-2.9,1.2-5.1,3.1-5.1c0.9,0,1.7,0.5,1.7,1.9C106.8,54,105.7,56.4,103.6,56.4z M115.3,48.3
c-1.1,0-2.5,0.6-3.4,1.9c0.2-0.9,0.1-1.4-0.1-1.9l-1.3,0.6c0.2,0.7,0.2,1-0.1,2.2l-1.4,6.3h1.4l1.2-5.8c1.2-1.5,2.4-2.1,3.1-2.1
c0.6,0,0.9,0.3,0.9,0.9c0,0.2,0,0.5-0.1,1l-1.3,6h1.4l1.4-6.7c0-0.2,0.1-0.4,0.1-0.6C117.1,49,116.4,48.3,115.3,48.3z M130.9,12.5
c-0.1-0.2-0.2-0.4-0.4-0.6c-0.2-0.2-0.4-0.3-0.6-0.4c-0.2-0.1-0.5-0.1-0.7-0.1c-0.2,0-0.5,0-0.7,0.1c-0.2,0.1-0.4,0.2-0.6,0.4
c-0.2,0.2-0.3,0.4-0.4,0.6c-0.1,0.2-0.1,0.5-0.1,0.7c0,0.3,0,0.5,0.1,0.7c0.1,0.2,0.2,0.4,0.4,0.6c0.2,0.2,0.4,0.3,0.6,0.4
c0.2,0.1,0.5,0.1,0.7,0.1c0.2,0,0.5,0,0.7-0.1c0.2-0.1,0.4-0.2,0.6-0.4c0.2-0.2,0.3-0.4,0.4-0.6c0.1-0.2,0.1-0.5,0.1-0.7
C131,13,131,12.7,130.9,12.5z M130.5,13.8c-0.1,0.2-0.2,0.3-0.3,0.5c-0.1,0.1-0.3,0.2-0.5,0.3c-0.2,0.1-0.4,0.1-0.6,0.1
c-0.2,0-0.4,0-0.6-0.1c-0.2-0.1-0.3-0.2-0.5-0.3c-0.1-0.1-0.2-0.3-0.3-0.5c-0.1-0.2-0.1-0.4-0.1-0.6c0-0.2,0-0.4,0.1-0.6
c0.1-0.2,0.2-0.3,0.3-0.5c0.1-0.1,0.3-0.2,0.5-0.3c0.2-0.1,0.4-0.1,0.6-0.1c0.2,0,0.4,0,0.6,0.1c0.2,0.1,0.3,0.2,0.5,0.3
c0.1,0.1,0.2,0.3,0.3,0.5c0.1,0.2,0.1,0.4,0.1,0.6C130.6,13.5,130.6,13.6,130.5,13.8z M129.6,13.6c0,0-0.1-0.1-0.1-0.1
c0,0-0.1-0.1-0.1-0.1c0,0,0,0-0.1-0.1c0.2,0,0.3-0.1,0.4-0.2c0.1-0.1,0.1-0.2,0.1-0.4c0-0.1,0-0.2,0-0.2c0-0.1-0.1-0.1-0.1-0.2
c-0.1-0.1-0.1-0.1-0.2-0.1c-0.1,0-0.2,0-0.3,0h-0.6v2h0.3v-0.9c0,0,0.1,0,0.1,0c0,0,0,0,0.1,0c0.1,0.1,0.1,0.1,0.2,0.2
c0.1,0.1,0.1,0.2,0.2,0.3l0.2,0.3h0.4l-0.3-0.5C129.7,13.7,129.6,13.7,129.6,13.6z M129.1,13.1h-0.2v-0.6h0.2c0.2,0,0.3,0,0.3,0.1
c0.1,0.1,0.1,0.1,0.1,0.2c0,0.1,0,0.2-0.1,0.2c0,0-0.1,0.1-0.1,0.1C129.3,13.1,129.2,13.1,129.1,13.1z M0,36.8h5.8V20.9h9.7v-4.7
H5.8V6.9h11.9l0.7-4.7H0V36.8z M24.3,7.7C26.4,7.7,28,6,28,4c0-2.1-1.7-3.7-3.6-3.7c-2.1,0-3.7,1.7-3.7,3.7
C20.7,6,22.3,7.7,24.3,7.7z M21.5,36.8h5.6V10.9l-5.6,1V36.8z M32.4,36.8H38V19.7c0.5-2.1,2.5-3.7,4.8-3.7c0.6,0,1,0.2,1.6,0.4
l1.7-5.1c-0.7-0.3-1.2-0.4-2-0.4c-2.5,0-4.5,1.3-6.5,4.1c0-1.4-0.4-2.9-1-4l-5.1,1.3c0.6,1.6,0.9,3.6,0.9,6.8V36.8z M56.9,37.4
c3.4,0,6.5-1.1,9.2-3.4l-2.2-3.4c-1.9,1.7-4,2.5-6.3,2.5c-5,0-6.3-3.7-6.3-7.2v-0.4h15.2v-1.2c0-5.9-1.1-9-3.3-11
c-2.2-2-4.5-2.6-7-2.6c-3.2,0-5.7,1.1-7.8,3.4c-2.2,2.5-3.2,5.4-3.2,9.9C45.2,32.3,49.8,37.4,56.9,37.4z M56.2,15
c2.8,0,4.6,2.4,4.6,6.6h-9.4C51.4,17.5,53.1,15,56.2,15z M76.1,36.8V15.3h5.2l1.4-3.8h-6.6V7.6c0-2.3,1.2-3.6,3.1-3.6
C80.2,4,81,4.4,82.2,5l1.8-3.5c-1.8-1-3.6-1.5-5.7-1.5c-4.5,0-7.7,2.5-7.7,7.7c0,2.4,0.2,3.8,0.2,3.8h-2.5v3.8h2.4v21.5H76.1z
M93.1,37.4c6.9,0,11.3-5.1,11.3-13.2c0-8-4.1-13.4-11.4-13.4c-6.7,0-11.1,5.2-11.1,13.3C81.9,32.3,86.2,37.4,93.1,37.4z M93.1,15
c3.2,0,5.2,2.1,5.2,9.3c0,6.4-1.8,9-5.1,9c-3.3,0-5.2-2.2-5.2-9.5C88.1,17.7,89.6,15,93.1,15z M126.1,11.5h-6.4
c-0.8,1.1-3.3,6.1-4,7.8c-1.2-2.3-3.5-6.3-4.6-8.2l-6,1.2l7.3,10.9L103,36.8h7c1-1.4,4.6-7.6,5.5-9.5c0.5,0.9,4.6,8,5.5,9.5h6.9
L118.6,23L126.1,11.5z" fill="#fff" />
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 132 62" width="132" height="62">
<path fill="#fff" d="M5.3,45.2H2.7L0.1,57.3h3.2c1.8,0,3-0.4,4.2-1.5c1.4-1.2,2.6-4.1,2.6-6.2c0-1.7-0.4-2.8-1.2-3.5C8,45.4,7.1,45.2,5.3,45.2z
M6.6,54.9c-0.7,0.9-1.9,1.3-3.5,1.3H1.8l2.1-9.8h1.5c1.3,0,2,0.2,2.6,1.1c0.4,0.5,0.5,1.3,0.5,2.4C8.5,51.2,7.9,53.4,6.6,54.9z
M15.3,48.3c-1.1,0-2,0.4-2.9,1.2c-1.3,1.2-2,3.1-2,4.8c0,2,1.3,3.2,2.9,3.2c1.8,0,2.7-0.4,3.6-1.3l-0.6-0.8c-0.8,0.7-1.5,1-2.6,1
c-0.9,0-1.8-0.7-1.8-1.9c0-0.3,0-0.7,0.1-1.1c0.4,0,0.8,0,1.1,0c1.9,0,3.1-0.3,3.8-1c0.5-0.5,0.8-1.1,0.8-1.8
C17.8,49.2,17,48.3,15.3,48.3z M16,51.7c-0.5,0.4-1.2,0.7-2.8,0.7c-0.3,0-0.7,0-0.9,0c0.5-1.8,1.6-3,2.8-3c1,0,1.4,0.5,1.4,1.2
C16.4,51,16.2,51.4,16,51.7z M25,48.5l-3.3,5.9c-0.4,0.6-0.5,1-0.7,1.5h0c0-0.4-0.1-0.9-0.1-1.5l-0.8-6.1l-1.4,0.3l1.3,8.8h1.4
l5.2-8.9L25,48.5z M30.7,48.3c-1.1,0-2,0.4-2.9,1.2c-1.3,1.2-2,3.1-2,4.8c0,2,1.3,3.2,2.9,3.2c1.8,0,2.7-0.4,3.6-1.3l-0.6-0.8
c-0.8,0.7-1.5,1-2.6,1c-0.9,0-1.8-0.7-1.8-1.9c0-0.3,0-0.7,0.1-1.1c0.4,0,0.8,0,1.1,0c1.9,0,3.1-0.3,3.8-1c0.5-0.5,0.8-1.1,0.8-1.8
C33.3,49.2,32.4,48.3,30.7,48.3z M31.4,51.7c-0.5,0.4-1.2,0.7-2.8,0.7c-0.3,0-0.7,0-0.9,0c0.5-1.8,1.6-3,2.8-3c1,0,1.4,0.5,1.4,1.2
C31.9,51,31.7,51.4,31.4,51.7z M37.2,47.5c0.2-1.1,0.4-2.5,0.1-3.2l-1.5,0.6c0.2,0.6,0.2,1.5-0.1,2.7L34,55.7
c-0.1,0.3-0.1,0.5-0.1,0.8c0,0.7,0.4,1,1.2,1c0.4,0,0.7,0,1.1-0.2l-0.1-0.9c-0.1,0-0.2,0-0.3,0c-0.2,0-0.4-0.1-0.4-0.4
c0-0.2,0-0.4,0.1-0.6L37.2,47.5z M42.3,48.2c-2.8,0-4.9,2.6-4.9,6.1c0,2,1.1,3.2,3,3.2c2.9,0,4.9-2.7,4.9-6.1
C45.3,49.5,44.4,48.2,42.3,48.2z M40.7,56.4c-1.1,0-1.7-0.6-1.7-1.9c0-2.9,1.2-5.1,3.2-5.1c0.9,0,1.7,0.5,1.7,1.9
C43.8,54,42.7,56.4,40.7,56.4z M52.1,48.3c-1,0-2.3,0.5-3.2,1.8c0.2-0.9,0.1-1.4-0.1-1.9l-1.3,0.6c0.2,0.6,0.2,1-0.1,2.2l-2.2,10
l1.4-0.3l0.8-3.6c0.6,0.3,1.2,0.4,2.1,0.4c1.2,0,2.4-0.6,3.3-1.6c0.9-1.1,1.5-3.2,1.5-4.8C54.4,49.4,53.7,48.3,52.1,48.3z
M51.8,55.2c-0.4,0.7-1.4,1.2-2.2,1.2c-0.7,0-1.4-0.2-1.8-0.5l0.9-4.3c0.9-1.3,2-1.9,2.9-1.9c0.9,0,1.3,0.5,1.3,1.7
C52.9,52.5,52.4,54.3,51.8,55.2z M60.1,48.3c-1.1,0-2,0.4-2.9,1.2c-1.3,1.2-2,3.1-2,4.8c0,2,1.3,3.2,2.9,3.2c1.8,0,2.7-0.4,3.6-1.3
l-0.6-0.8c-0.8,0.7-1.5,1-2.6,1c-0.9,0-1.8-0.7-1.8-1.9c0-0.3,0-0.7,0.1-1.1c0.4,0,0.8,0,1.1,0c1.9,0,3.1-0.3,3.8-1
c0.5-0.5,0.8-1.1,0.8-1.8C62.6,49.2,61.8,48.3,60.1,48.3z M60.8,51.7c-0.5,0.4-1.2,0.7-2.8,0.7c-0.3,0-0.7,0-0.9,0
c0.5-1.8,1.6-3,2.8-3c1,0,1.4,0.5,1.4,1.2C61.2,51,61,51.4,60.8,51.7z M65.8,50.3c0.2-1,0.2-1.5-0.1-2.1l-1.3,0.6
c0.2,0.6,0.2,1.2-0.1,2.5l-1.3,6h1.4l1.2-5.5c0.9-1.3,1.8-2,2.6-2c0.3,0,0.4,0,0.6,0.1l0.6-1.5c-0.2-0.1-0.3-0.1-0.7-0.1
C67.8,48.3,66.6,49.1,65.8,50.3z M78.1,51.6l0.3-1.3h-4.2l0.8-4h5l0.5-1.2h-6.7l-2.6,12.1H78l0.3-1.3h-5.4l0.9-4.4H78.1z M86.6,54.5
l2.1-9.8l-1.4-0.2l-0.9,4.3c-0.4-0.2-1-0.3-2-0.3c-1,0-2.2,0.4-3.1,1.3c-1.3,1.3-2,3.1-2,4.9c0,1.9,0.8,3,2.5,3
c1.3,0,2.3-0.5,3.1-1.6c-0.1,1,0.2,1.4,0.7,1.9l1.2-0.9C86.4,56.3,86.2,55.9,86.6,54.5z M85.2,54.2c-0.9,1.5-2,2.1-3,2.1
c-0.9,0-1.3-0.6-1.3-1.7c0-1.3,0.6-3.2,1.4-4.1c0.6-0.6,1.4-1,2.1-1c0.8,0,1.2,0.1,1.7,0.4L85.2,54.2z M88.2,57.3h1.5l1.9-9
l-1.5,0.2L88.2,57.3z M91.4,44.7c-0.6,0-1.1,0.5-1.1,1.1c0,0.6,0.5,1.1,1.1,1.1s1.1-0.5,1.1-1.1S92,44.7,91.4,44.7z M93.7,55.7
c0-0.2,0-0.6,0.1-1l1.1-5.2h1.9l0.6-1h-2.2c0.2-0.8,0.5-1.9,0.7-2.5l-1.5,0.3c-0.2,0.7-0.4,1.5-0.6,2.2h-1.2l-0.2,1h1.2l-1.1,5.3
c-0.1,0.5-0.1,1-0.1,1.3c0,0.9,0.5,1.4,1.6,1.4c0.6,0,1.1-0.1,1.6-0.4v-0.9c-0.3,0.1-0.5,0.2-0.9,0.2C94,56.5,93.7,56.3,93.7,55.7z
M99.8,44.7c-0.6,0-1.1,0.5-1.1,1.1c0,0.6,0.5,1.1,1.1,1.1s1.1-0.5,1.1-1.1S100.4,44.7,99.8,44.7z M96.6,57.3h1.5l1.9-9l-1.5,0.2
L96.6,57.3z M105.3,48.2c-2.8,0-4.9,2.6-4.9,6.1c0,2,1.1,3.2,3,3.2c2.9,0,4.9-2.7,4.9-6.1C108.3,49.5,107.3,48.2,105.3,48.2z
M103.6,56.4c-1.1,0-1.7-0.6-1.7-1.9c0-2.9,1.2-5.1,3.1-5.1c0.9,0,1.7,0.5,1.7,1.9C106.8,54,105.7,56.4,103.6,56.4z M115.3,48.3
c-1.1,0-2.5,0.6-3.4,1.9c0.2-0.9,0.1-1.4-0.1-1.9l-1.3,0.6c0.2,0.7,0.2,1-0.1,2.2l-1.4,6.3h1.4l1.2-5.8c1.2-1.5,2.4-2.1,3.1-2.1
c0.6,0,0.9,0.3,0.9,0.9c0,0.2,0,0.5-0.1,1l-1.3,6h1.4l1.4-6.7c0-0.2,0.1-0.4,0.1-0.6C117.1,49,116.4,48.3,115.3,48.3z M130.9,12.5
c-0.1-0.2-0.2-0.4-0.4-0.6c-0.2-0.2-0.4-0.3-0.6-0.4c-0.2-0.1-0.5-0.1-0.7-0.1c-0.2,0-0.5,0-0.7,0.1c-0.2,0.1-0.4,0.2-0.6,0.4
c-0.2,0.2-0.3,0.4-0.4,0.6c-0.1,0.2-0.1,0.5-0.1,0.7c0,0.3,0,0.5,0.1,0.7c0.1,0.2,0.2,0.4,0.4,0.6c0.2,0.2,0.4,0.3,0.6,0.4
c0.2,0.1,0.5,0.1,0.7,0.1c0.2,0,0.5,0,0.7-0.1c0.2-0.1,0.4-0.2,0.6-0.4c0.2-0.2,0.3-0.4,0.4-0.6c0.1-0.2,0.1-0.5,0.1-0.7
C131,13,131,12.7,130.9,12.5z M130.5,13.8c-0.1,0.2-0.2,0.3-0.3,0.5c-0.1,0.1-0.3,0.2-0.5,0.3c-0.2,0.1-0.4,0.1-0.6,0.1
c-0.2,0-0.4,0-0.6-0.1c-0.2-0.1-0.3-0.2-0.5-0.3c-0.1-0.1-0.2-0.3-0.3-0.5c-0.1-0.2-0.1-0.4-0.1-0.6c0-0.2,0-0.4,0.1-0.6
c0.1-0.2,0.2-0.3,0.3-0.5c0.1-0.1,0.3-0.2,0.5-0.3c0.2-0.1,0.4-0.1,0.6-0.1c0.2,0,0.4,0,0.6,0.1c0.2,0.1,0.3,0.2,0.5,0.3
c0.1,0.1,0.2,0.3,0.3,0.5c0.1,0.2,0.1,0.4,0.1,0.6C130.6,13.5,130.6,13.6,130.5,13.8z M129.6,13.6c0,0-0.1-0.1-0.1-0.1
c0,0-0.1-0.1-0.1-0.1c0,0,0,0-0.1-0.1c0.2,0,0.3-0.1,0.4-0.2c0.1-0.1,0.1-0.2,0.1-0.4c0-0.1,0-0.2,0-0.2c0-0.1-0.1-0.1-0.1-0.2
c-0.1-0.1-0.1-0.1-0.2-0.1c-0.1,0-0.2,0-0.3,0h-0.6v2h0.3v-0.9c0,0,0.1,0,0.1,0c0,0,0,0,0.1,0c0.1,0.1,0.1,0.1,0.2,0.2
c0.1,0.1,0.1,0.2,0.2,0.3l0.2,0.3h0.4l-0.3-0.5C129.7,13.7,129.6,13.7,129.6,13.6z M129.1,13.1h-0.2v-0.6h0.2c0.2,0,0.3,0,0.3,0.1
c0.1,0.1,0.1,0.1,0.1,0.2c0,0.1,0,0.2-0.1,0.2c0,0-0.1,0.1-0.1,0.1C129.3,13.1,129.2,13.1,129.1,13.1z M0,36.8h5.8V20.9h9.7v-4.7
H5.8V6.9h11.9l0.7-4.7H0V36.8z M24.3,7.7C26.4,7.7,28,6,28,4c0-2.1-1.7-3.7-3.6-3.7c-2.1,0-3.7,1.7-3.7,3.7
C20.7,6,22.3,7.7,24.3,7.7z M21.5,36.8h5.6V10.9l-5.6,1V36.8z M32.4,36.8H38V19.7c0.5-2.1,2.5-3.7,4.8-3.7c0.6,0,1,0.2,1.6,0.4
l1.7-5.1c-0.7-0.3-1.2-0.4-2-0.4c-2.5,0-4.5,1.3-6.5,4.1c0-1.4-0.4-2.9-1-4l-5.1,1.3c0.6,1.6,0.9,3.6,0.9,6.8V36.8z M56.9,37.4
c3.4,0,6.5-1.1,9.2-3.4l-2.2-3.4c-1.9,1.7-4,2.5-6.3,2.5c-5,0-6.3-3.7-6.3-7.2v-0.4h15.2v-1.2c0-5.9-1.1-9-3.3-11
c-2.2-2-4.5-2.6-7-2.6c-3.2,0-5.7,1.1-7.8,3.4c-2.2,2.5-3.2,5.4-3.2,9.9C45.2,32.3,49.8,37.4,56.9,37.4z M56.2,15
c2.8,0,4.6,2.4,4.6,6.6h-9.4C51.4,17.5,53.1,15,56.2,15z M76.1,36.8V15.3h5.2l1.4-3.8h-6.6V7.6c0-2.3,1.2-3.6,3.1-3.6
C80.2,4,81,4.4,82.2,5l1.8-3.5c-1.8-1-3.6-1.5-5.7-1.5c-4.5,0-7.7,2.5-7.7,7.7c0,2.4,0.2,3.8,0.2,3.8h-2.5v3.8h2.4v21.5H76.1z
M93.1,37.4c6.9,0,11.3-5.1,11.3-13.2c0-8-4.1-13.4-11.4-13.4c-6.7,0-11.1,5.2-11.1,13.3C81.9,32.3,86.2,37.4,93.1,37.4z M93.1,15
c3.2,0,5.2,2.1,5.2,9.3c0,6.4-1.8,9-5.1,9c-3.3,0-5.2-2.2-5.2-9.5C88.1,17.7,89.6,15,93.1,15z M126.1,11.5h-6.4
c-0.8,1.1-3.3,6.1-4,7.8c-1.2-2.3-3.5-6.3-4.6-8.2l-6,1.2l7.3,10.9L103,36.8h7c1-1.4,4.6-7.6,5.5-9.5c0.5,0.9,4.6,8,5.5,9.5h6.9
L118.6,23L126.1,11.5z"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 6.6 KiB

После

Ширина:  |  Высота:  |  Размер: 6.8 KiB

Просмотреть файл

@ -1,25 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg"
x="0px" y="0px" viewBox="-45 31 40 40"
enable-background="new -45 31 40 40">
<path fill="#CCCCCC" d="M-14.1,54.7c0.7-1.4,1.7-4.4,0.8-6.9c0,0,0,0,0,0.1l0,0c0,0-0.2,0.5-0.4,1.3c0-0.1,0-0.2,0-0.3
c0.1-0.9,0-1.9-0.1-2.9c-0.3-1.5-1.4-2.8-2-3.2c0,0,0.1,0,0.1,0.1c-0.1-0.1-0.1-0.1-0.1-0.1s0,0.1,0.1,0.4c-0.7-1.1-1.6-1.5-1.6-1.5
s0,0.2,0.1,0.5c-2-1.9-4.7-3-7.6-3c-3,0-5.7,1.2-7.8,3.1c0.1,0.1,0.2,0.3,0.4,0.5c0,0,0.8-0.1,1.7-0.1c1.7-1.2,3.6-1.8,5.7-1.8
c2.6,0,5.1,1.1,7,3c-0.2-0.1-0.1,0,0,0.1c-0.6-0.4-1.2-0.8-1.7-0.8c1,0.8,2.6,2.7,2.4,6.2c-0.3-0.6-0.6-1-0.9-1.3
c0.4,3.5,0,4.2-0.2,5.1c0-0.4-0.2-0.7-0.3-0.9c0,0,0,1.1-0.7,2.6c-0.5,1.2-1.1,1.5-1.3,1.5c-0.2,0-0.1-0.2-0.1-0.4
c0,0-0.4,0.2-0.7,0.6c-0.3,0.4-0.6,0.8-0.8,0.6c0.1-0.1,0.2-0.3,0.3-0.4c-0.1,0.1-0.5,0.4-1.2,0.5c-0.3,0-1.6,0.3-3.3-0.6
c0.3,0,0.6-0.1,0.9,0.1c-0.3-0.3-1-0.3-1.5-0.4c-0.5-0.4-1.1-1-1.4-1.4c1.3,0.3,2.8,0.1,3.6-0.5s1.3-1,1.8-0.9
c0.4,0.1,0.7-0.4,0.4-0.8c-0.3-0.4-1.2-1-2.3-0.7c-0.8,0.2-1.8,1.1-3.3,0.2c-1.3-0.8-1.3-1.4-1.3-1.8c0-0.3,0.2-0.7,0.5-0.8
c0.2,0.1,0.3,0.1,0.3,0.1s-0.1-0.1-0.1-0.2l0,0c0.1,0,0.4,0.2,0.6,0.2c0.2,0.1,0.3,0.2,0.3,0.2s0,0,0-0.1c0,0-0.1-0.2-0.3-0.3l0,0
c0.1,0,0.2,0.1,0.4,0.2c0-0.2,0.1-0.4,0.1-0.7c0-0.2,0-0.3-0.1-0.4c-0.1-0.1,0-0.1,0.1,0c0-0.1,0-0.1-0.1-0.2l0,0c0,0,0,0,0-0.1
c0.2-0.3,1.8-1.2,1.9-1.3c0.2-0.1,0.3-0.3,0.4-0.5c0.2-0.1,0.3-0.5,0.3-0.8c0-0.1-0.2-0.3-0.4-0.3c-0.1,0-0.4-0.1-0.6,0l0,0
c-0.3,0-0.7,0-1.2,0s-0.8-0.3-1-0.6c0-0.1-0.1-0.1-0.1-0.2c0-0.1-0.1-0.2-0.1-0.2c0.2-0.8,0.7-1.5,1.4-2.1c0,0-0.2,0-0.1,0
c0,0,0.3-0.2,0.4-0.2c0.1,0-0.3-0.1-0.6-0.1c-0.5,0.2-0.6,0.2-0.8,0.3c0.1-0.1,0.3-0.2,0.2-0.2c-0.3,0.1-0.7,0.4-1.1,0.6v-0.1
c-0.2,0.1-0.6,0.4-0.7,0.7c0-0.1,0-0.1,0-0.1c-0.1,0-0.2,0.2-0.3,0.3l0,0c-1.1-0.3-2-0.2-2.8,0c-0.2-0.1-0.6-0.5-0.9-1
c0,0,0,0.1-0.1,0.1c-0.1-0.4-0.3-0.9-0.3-1.3v-0.1c0,0-0.1,0.1-0.3,0.3c-0.1,0.2-0.2,0.3-0.2,0.5c0,0.1-0.1,0.2-0.1,0.2v-0.2
c0,0.1-0.1,0.2-0.2,0.3c0,0.2,0,0.3-0.1,0.4l0,0c0,0,0-0.2,0-0.1c-0.1,0.2-0.2,0.5-0.2,0.8c-0.1,0.3-0.1,0.5-0.1,0.8s0,0.7,0,1.2
c0,0.1,0,0.1,0,0.2c-0.3,0.4-0.5,0.7-0.6,0.9c-0.4,0.7-0.7,1.8-1,3.5c0,0,0.2-0.6,0.6-1.3l0,0c-0.3,0.9-0.5,2.3-0.4,4.4
c0-0.1,0.1-0.6,0.2-1.3c0.1,1.4,0.5,3.1,1.5,5c0.8,1.4,1.7,2.4,2.7,3.2c0.2,0.2,0.4,0.3,0.6,0.5c1.3,1,3.3,2.1,5,2.4
c-0.6-0.2-1-0.5-1-0.5s2,0.7,3.5,0.6c-0.5-0.1-0.6-0.3-0.6-0.3s4.2,0.2,6.4-1.5c0.5-0.4,0.8-0.8,0.9-1.2c0.6-0.4,1.3-0.8,2-1.6
c1.2-1.2,1.3-2.1,1.4-3v0.1C-14,55.2-14,54.9-14.1,54.7z"/>
</svg>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-45 31 40 40">
<path fill="#ccc" d="M-14.1,54.7c0.7-1.4,1.7-4.4,0.8-6.9c0,0,0,0,0,0.1l0,0c0,0-0.2,0.5-0.4,1.3c0-0.1,0-0.2,0-0.3
c0.1-0.9,0-1.9-0.1-2.9c-0.3-1.5-1.4-2.8-2-3.2c0,0,0.1,0,0.1,0.1c-0.1-0.1-0.1-0.1-0.1-0.1s0,0.1,0.1,0.4c-0.7-1.1-1.6-1.5-1.6-1.5
s0,0.2,0.1,0.5c-2-1.9-4.7-3-7.6-3c-3,0-5.7,1.2-7.8,3.1c0.1,0.1,0.2,0.3,0.4,0.5c0,0,0.8-0.1,1.7-0.1c1.7-1.2,3.6-1.8,5.7-1.8
c2.6,0,5.1,1.1,7,3c-0.2-0.1-0.1,0,0,0.1c-0.6-0.4-1.2-0.8-1.7-0.8c1,0.8,2.6,2.7,2.4,6.2c-0.3-0.6-0.6-1-0.9-1.3
c0.4,3.5,0,4.2-0.2,5.1c0-0.4-0.2-0.7-0.3-0.9c0,0,0,1.1-0.7,2.6c-0.5,1.2-1.1,1.5-1.3,1.5c-0.2,0-0.1-0.2-0.1-0.4
c0,0-0.4,0.2-0.7,0.6c-0.3,0.4-0.6,0.8-0.8,0.6c0.1-0.1,0.2-0.3,0.3-0.4c-0.1,0.1-0.5,0.4-1.2,0.5c-0.3,0-1.6,0.3-3.3-0.6
c0.3,0,0.6-0.1,0.9,0.1c-0.3-0.3-1-0.3-1.5-0.4c-0.5-0.4-1.1-1-1.4-1.4c1.3,0.3,2.8,0.1,3.6-0.5s1.3-1,1.8-0.9
c0.4,0.1,0.7-0.4,0.4-0.8c-0.3-0.4-1.2-1-2.3-0.7c-0.8,0.2-1.8,1.1-3.3,0.2c-1.3-0.8-1.3-1.4-1.3-1.8c0-0.3,0.2-0.7,0.5-0.8
c0.2,0.1,0.3,0.1,0.3,0.1s-0.1-0.1-0.1-0.2l0,0c0.1,0,0.4,0.2,0.6,0.2c0.2,0.1,0.3,0.2,0.3,0.2s0,0,0-0.1c0,0-0.1-0.2-0.3-0.3l0,0
c0.1,0,0.2,0.1,0.4,0.2c0-0.2,0.1-0.4,0.1-0.7c0-0.2,0-0.3-0.1-0.4c-0.1-0.1,0-0.1,0.1,0c0-0.1,0-0.1-0.1-0.2l0,0c0,0,0,0,0-0.1
c0.2-0.3,1.8-1.2,1.9-1.3c0.2-0.1,0.3-0.3,0.4-0.5c0.2-0.1,0.3-0.5,0.3-0.8c0-0.1-0.2-0.3-0.4-0.3c-0.1,0-0.4-0.1-0.6,0l0,0
c-0.3,0-0.7,0-1.2,0s-0.8-0.3-1-0.6c0-0.1-0.1-0.1-0.1-0.2c0-0.1-0.1-0.2-0.1-0.2c0.2-0.8,0.7-1.5,1.4-2.1c0,0-0.2,0-0.1,0
c0,0,0.3-0.2,0.4-0.2c0.1,0-0.3-0.1-0.6-0.1c-0.5,0.2-0.6,0.2-0.8,0.3c0.1-0.1,0.3-0.2,0.2-0.2c-0.3,0.1-0.7,0.4-1.1,0.6v-0.1
c-0.2,0.1-0.6,0.4-0.7,0.7c0-0.1,0-0.1,0-0.1c-0.1,0-0.2,0.2-0.3,0.3l0,0c-1.1-0.3-2-0.2-2.8,0c-0.2-0.1-0.6-0.5-0.9-1
c0,0,0,0.1-0.1,0.1c-0.1-0.4-0.3-0.9-0.3-1.3v-0.1c0,0-0.1,0.1-0.3,0.3c-0.1,0.2-0.2,0.3-0.2,0.5c0,0.1-0.1,0.2-0.1,0.2v-0.2
c0,0.1-0.1,0.2-0.2,0.3c0,0.2,0,0.3-0.1,0.4l0,0c0,0,0-0.2,0-0.1c-0.1,0.2-0.2,0.5-0.2,0.8c-0.1,0.3-0.1,0.5-0.1,0.8s0,0.7,0,1.2
c0,0.1,0,0.1,0,0.2c-0.3,0.4-0.5,0.7-0.6,0.9c-0.4,0.7-0.7,1.8-1,3.5c0,0,0.2-0.6,0.6-1.3l0,0c-0.3,0.9-0.5,2.3-0.4,4.4
c0-0.1,0.1-0.6,0.2-1.3c0.1,1.4,0.5,3.1,1.5,5c0.8,1.4,1.7,2.4,2.7,3.2c0.2,0.2,0.4,0.3,0.6,0.5c1.3,1,3.3,2.1,5,2.4
c-0.6-0.2-1-0.5-1-0.5s2,0.7,3.5,0.6c-0.5-0.1-0.6-0.3-0.6-0.3s4.2,0.2,6.4-1.5c0.5-0.4,0.8-0.8,0.9-1.2c0.6-0.4,1.3-0.8,2-1.6
c1.2-1.2,1.3-2.1,1.4-3v0.1C-14,55.2-14,54.9-14.1,54.7z"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 2.5 KiB

После

Ширина:  |  Высота:  |  Размер: 2.6 KiB

Просмотреть файл

@ -1,36 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" id="aboutWordmark" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="270px" height="48px" viewBox="0 0 270 48" xml:space="preserve">
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" width="270px" height="48px" viewBox="0 0 270 48">
<path fill="#fff" d="M75.5,11.8V7.9c0-2.2,1.2-3.5,3.1-3.5c1,0,1.8,0.3,3,0.9l1.8-3.5c-1.7-1-3.5-1.4-5.7-1.4
C73.2,0.3,70,2.8,70,8c0,2.3,0.2,3.7,0.2,3.7h-2.5v3.8H70V37h5.4V15.6h5.1l1.4-3.8H75.5z M92.3,11.2c-6.7,0-11,5.2-11,13.3
c0,8.1,4.3,13.2,11.1,13.2c6.8,0,11.2-5,11.2-13.2C103.6,16.5,99.5,11.2,92.3,11.2z M92.5,33.6c-3.3,0-5.1-2.1-5.1-9.5
c0-6.1,1.5-8.8,5-8.8c3.2,0,5.2,2.1,5.2,9.3C97.6,30.9,95.8,33.6,92.5,33.6z M43.7,11.1c-2.5,0-4.4,1.3-6.4,4c0-1.4-0.3-2.8-0.9-4
l-5,1.3c0.6,1.6,0.9,3.6,0.9,6.8V37h5.5V19.9c0.5-2,2.4-3.7,4.7-3.7c0.6,0,1,0.1,1.6,0.4l1.7-5.1C45,11.2,44.5,11.1,43.7,11.1z
M0,37h5.7V21.2h9.6v-4.6H5.7V7.2h11.8l0.7-4.7H0V37z M21.4,37h5.5V11.2l-5.5,1V37z M24.2,0.7c-2,0-3.6,1.6-3.6,3.7
c0,2,1.5,3.6,3.5,3.6c2,0,3.7-1.6,3.7-3.6C27.8,2.3,26.2,0.7,24.2,0.7z M125.2,11.8h-6.4c-0.7,1.1-3.3,6.1-4,7.7
c-1.2-2.3-3.4-6.3-4.6-8.2l-5.9,1.2l7.3,10.8L102.2,37h6.9c0.9-1.4,4.5-7.5,5.5-9.4c0.5,0.9,4.6,8,5.5,9.4h6.9l-9.2-13.8L125.2,11.8
z M62.7,13.8c-2.1-1.9-4.4-2.6-6.9-2.6c-3.2,0-5.7,1-7.7,3.4C45.9,17.1,45,20,45,24.5c0,8.1,4.5,13.2,11.6,13.2
c3.4,0,6.4-1.1,9.1-3.3L63.4,31c-1.9,1.6-3.9,2.5-6.3,2.5c-4.9,0-6.2-3.7-6.2-7.2v-0.4H66v-1.2C66,18.9,64.9,15.8,62.7,13.8z
M51,21.8c0-4.1,1.7-6.5,4.8-6.5c2.8,0,4.5,2.4,4.5,6.5H51z M198.5,14.3l-2.4-2.4c-1.2,0.8-2.2,1.1-3.5,1.1c-3,0-3.8-1.4-7.6-1.4
c-5.4,0-9.2,3.4-9.2,8.4c0,3.3,2.2,6.1,5.6,7.2c-3.4,1-4.5,2.2-4.5,4.3c0,2.2,1.8,3.6,4.7,3.6h3.8c2.5,0,3.9,0.2,4.9,0.9
c0.9,0.6,1.4,1.6,1.4,3c0,3.1-2.2,4.4-6,4.4c-2,0-3.8-0.5-5.1-1.2c-0.9-0.6-1.5-1.6-1.5-2.9c0-0.8,0.3-1.7,0.7-2.2l-4.1,0.4
c-0.3,1-0.5,1.7-0.5,2.6c0,3.5,3,6.4,10.8,6.4c6.1,0,9.9-2.5,9.9-7.9c0-2.1-0.8-3.9-2.7-5.3c-1.5-1.1-3.1-1.4-6-1.4h-4
c-1.3,0-2-0.5-2-1.2c0-0.8,1.1-1.7,4.5-2.9c1.8,0,3.4-0.3,4.7-1.1c2.3-1.4,3.7-4.1,3.7-6.8c0-1.6-0.5-3-1.5-4.3
c0.4,0.2,1.1,0.3,1.7,0.3C195.8,15.8,196.9,15.4,198.5,14.3z M185,24.8c-3.1,0-4.8-1.7-4.8-4.8c0-3.5,1.6-5.1,4.7-5.1
c3.3,0,4.6,1.5,4.6,4.9C189.5,23.1,188,24.8,185,24.8z M168.6,1.3c-1.7,0-3,1.4-3,3.1c0,1.7,1.4,3,3,3c1.7,0,3.1-1.3,3.1-3
C171.6,2.7,170.3,1.3,168.6,1.3z M245.7,34.5c-1.1,0-1.4-0.6-1.4-2.5V6.5c0-3.8-0.6-5.9-0.6-5.9l-3.9,0.8c0,0,0.6,1.9,0.6,5.1v26.4
c0,1.8,0.4,2.8,1.2,3.5c0.7,0.7,1.7,1,2.9,1c1,0,1.5-0.1,2.5-0.5l-0.8-2.5C246.2,34.4,245.8,34.5,245.7,34.5z M212.7,11.6
c-3.2,0-6.1,1.8-8.3,3.9c0,0,0.2-1.8,0.2-3.4V6.3c0-3.8-0.7-5.9-0.7-5.9L200,1.1c0,0,0.7,1.9,0.7,5.1V37h3.9V19.3
c2.1-2.7,4.9-4.2,7.2-4.2c1.3,0,2.3,0.4,2.9,1c0.7,0.7,0.9,1.8,0.9,3.7V37h3.8V19.1c0-1.8-0.1-2.6-0.4-3.6
C218.4,13.2,215.7,11.6,212.7,11.6z M265.4,12.1l-4.9,16.4c-0.6,2-1.6,5.2-1.6,5.2s-0.7-3.9-1.5-6.2l-5.1-16.2l-3.9,1.3l5.4,15.6
c0.8,2.5,2.2,7.4,2.5,9l1.6-0.3c-1.3,5.1-2.5,6.7-5.7,7.6l1.2,2.7c4.4-1,6.4-4.3,8-9.3l8.6-25.8H265.4z M234.9,15l1.2-2.9h-6.2
c0-3.3,0.5-7.2,0.5-7.2l-4.1,0.9c0,0-0.4,3.9-0.4,6.3h-3.2V15h3.2v17.1c0,2.5,0.7,4.1,2.4,5c0.9,0.4,1.9,0.7,3.3,0.7
c1.8,0,3.1-0.4,4.4-1l-0.6-2.5c-0.7,0.3-1.3,0.5-2.4,0.5c-2.4,0-3.2-0.9-3.2-3.7V15H234.9z M166.5,37h4.1V11.5l-4.1,0.6V37z
M156.8,21.3c0,5,0.4,10.5,0.4,10.5s-1.4-3.8-3.2-7.2L142.7,2.7h-4.8V37h4.2l-0.2-19.9c0-4.5-0.4-9.3-0.4-9.3s1.7,4.1,3.9,8.2l11,21
h4.3V2.7h-4L156.8,21.3z M128.3,12.9c-0.3-0.1-0.7-0.1-1-0.1v2.3h0.3v-1c0.3,0,0.7,1,0.7,1s0.2,0,0.4,0c-0.2-0.3-0.3-0.7-0.6-1
C128.8,14.1,128.9,13.1,128.3,12.9z M127.6,13.8v-0.7c0,0,0.7,0,0.7,0.3C128.3,13.9,127.8,13.9,127.6,13.8z M128,12
c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S129.1,12,128,12z M128,15.5c-0.8,0-1.5-0.7-1.5-1.5s0.7-1.5,1.5-1.5s1.5,0.7,1.5,1.5
S128.8,15.5,128,15.5z"/>
C73.2,0.3,70,2.8,70,8c0,2.3,0.2,3.7,0.2,3.7h-2.5v3.8H70V37h5.4V15.6h5.1l1.4-3.8H75.5z M92.3,11.2c-6.7,0-11,5.2-11,13.3
c0,8.1,4.3,13.2,11.1,13.2c6.8,0,11.2-5,11.2-13.2C103.6,16.5,99.5,11.2,92.3,11.2z M92.5,33.6c-3.3,0-5.1-2.1-5.1-9.5
c0-6.1,1.5-8.8,5-8.8c3.2,0,5.2,2.1,5.2,9.3C97.6,30.9,95.8,33.6,92.5,33.6z M43.7,11.1c-2.5,0-4.4,1.3-6.4,4c0-1.4-0.3-2.8-0.9-4
l-5,1.3c0.6,1.6,0.9,3.6,0.9,6.8V37h5.5V19.9c0.5-2,2.4-3.7,4.7-3.7c0.6,0,1,0.1,1.6,0.4l1.7-5.1C45,11.2,44.5,11.1,43.7,11.1z
M0,37h5.7V21.2h9.6v-4.6H5.7V7.2h11.8l0.7-4.7H0V37z M21.4,37h5.5V11.2l-5.5,1V37z M24.2,0.7c-2,0-3.6,1.6-3.6,3.7
c0,2,1.5,3.6,3.5,3.6c2,0,3.7-1.6,3.7-3.6C27.8,2.3,26.2,0.7,24.2,0.7z M125.2,11.8h-6.4c-0.7,1.1-3.3,6.1-4,7.7
c-1.2-2.3-3.4-6.3-4.6-8.2l-5.9,1.2l7.3,10.8L102.2,37h6.9c0.9-1.4,4.5-7.5,5.5-9.4c0.5,0.9,4.6,8,5.5,9.4h6.9l-9.2-13.8L125.2,11.8
z M62.7,13.8c-2.1-1.9-4.4-2.6-6.9-2.6c-3.2,0-5.7,1-7.7,3.4C45.9,17.1,45,20,45,24.5c0,8.1,4.5,13.2,11.6,13.2
c3.4,0,6.4-1.1,9.1-3.3L63.4,31c-1.9,1.6-3.9,2.5-6.3,2.5c-4.9,0-6.2-3.7-6.2-7.2v-0.4H66v-1.2C66,18.9,64.9,15.8,62.7,13.8z
M51,21.8c0-4.1,1.7-6.5,4.8-6.5c2.8,0,4.5,2.4,4.5,6.5H51z M198.5,14.3l-2.4-2.4c-1.2,0.8-2.2,1.1-3.5,1.1c-3,0-3.8-1.4-7.6-1.4
c-5.4,0-9.2,3.4-9.2,8.4c0,3.3,2.2,6.1,5.6,7.2c-3.4,1-4.5,2.2-4.5,4.3c0,2.2,1.8,3.6,4.7,3.6h3.8c2.5,0,3.9,0.2,4.9,0.9
c0.9,0.6,1.4,1.6,1.4,3c0,3.1-2.2,4.4-6,4.4c-2,0-3.8-0.5-5.1-1.2c-0.9-0.6-1.5-1.6-1.5-2.9c0-0.8,0.3-1.7,0.7-2.2l-4.1,0.4
c-0.3,1-0.5,1.7-0.5,2.6c0,3.5,3,6.4,10.8,6.4c6.1,0,9.9-2.5,9.9-7.9c0-2.1-0.8-3.9-2.7-5.3c-1.5-1.1-3.1-1.4-6-1.4h-4
c-1.3,0-2-0.5-2-1.2c0-0.8,1.1-1.7,4.5-2.9c1.8,0,3.4-0.3,4.7-1.1c2.3-1.4,3.7-4.1,3.7-6.8c0-1.6-0.5-3-1.5-4.3
c0.4,0.2,1.1,0.3,1.7,0.3C195.8,15.8,196.9,15.4,198.5,14.3z M185,24.8c-3.1,0-4.8-1.7-4.8-4.8c0-3.5,1.6-5.1,4.7-5.1
c3.3,0,4.6,1.5,4.6,4.9C189.5,23.1,188,24.8,185,24.8z M168.6,1.3c-1.7,0-3,1.4-3,3.1c0,1.7,1.4,3,3,3c1.7,0,3.1-1.3,3.1-3
C171.6,2.7,170.3,1.3,168.6,1.3z M245.7,34.5c-1.1,0-1.4-0.6-1.4-2.5V6.5c0-3.8-0.6-5.9-0.6-5.9l-3.9,0.8c0,0,0.6,1.9,0.6,5.1v26.4
c0,1.8,0.4,2.8,1.2,3.5c0.7,0.7,1.7,1,2.9,1c1,0,1.5-0.1,2.5-0.5l-0.8-2.5C246.2,34.4,245.8,34.5,245.7,34.5z M212.7,11.6
c-3.2,0-6.1,1.8-8.3,3.9c0,0,0.2-1.8,0.2-3.4V6.3c0-3.8-0.7-5.9-0.7-5.9L200,1.1c0,0,0.7,1.9,0.7,5.1V37h3.9V19.3
c2.1-2.7,4.9-4.2,7.2-4.2c1.3,0,2.3,0.4,2.9,1c0.7,0.7,0.9,1.8,0.9,3.7V37h3.8V19.1c0-1.8-0.1-2.6-0.4-3.6
C218.4,13.2,215.7,11.6,212.7,11.6z M265.4,12.1l-4.9,16.4c-0.6,2-1.6,5.2-1.6,5.2s-0.7-3.9-1.5-6.2l-5.1-16.2l-3.9,1.3l5.4,15.6
c0.8,2.5,2.2,7.4,2.5,9l1.6-0.3c-1.3,5.1-2.5,6.7-5.7,7.6l1.2,2.7c4.4-1,6.4-4.3,8-9.3l8.6-25.8H265.4z M234.9,15l1.2-2.9h-6.2
c0-3.3,0.5-7.2,0.5-7.2l-4.1,0.9c0,0-0.4,3.9-0.4,6.3h-3.2V15h3.2v17.1c0,2.5,0.7,4.1,2.4,5c0.9,0.4,1.9,0.7,3.3,0.7
c1.8,0,3.1-0.4,4.4-1l-0.6-2.5c-0.7,0.3-1.3,0.5-2.4,0.5c-2.4,0-3.2-0.9-3.2-3.7V15H234.9z M166.5,37h4.1V11.5l-4.1,0.6V37z
M156.8,21.3c0,5,0.4,10.5,0.4,10.5s-1.4-3.8-3.2-7.2L142.7,2.7h-4.8V37h4.2l-0.2-19.9c0-4.5-0.4-9.3-0.4-9.3s1.7,4.1,3.9,8.2l11,21
h4.3V2.7h-4L156.8,21.3z M128.3,12.9c-0.3-0.1-0.7-0.1-1-0.1v2.3h0.3v-1c0.3,0,0.7,1,0.7,1s0.2,0,0.4,0c-0.2-0.3-0.3-0.7-0.6-1
C128.8,14.1,128.9,13.1,128.3,12.9z M127.6,13.8v-0.7c0,0,0.7,0,0.7,0.3C128.3,13.9,127.8,13.9,127.6,13.8z M128,12
c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S129.1,12,128,12z M128,15.5c-0.8,0-1.5-0.7-1.5-1.5s0.7-1.5,1.5-1.5s1.5,0.7,1.5,1.5
S128.8,15.5,128,15.5z"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 3.7 KiB

После

Ширина:  |  Высота:  |  Размер: 3.7 KiB

Просмотреть файл

@ -1,8 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1"
xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" viewBox="-45 31 40 40"
enable-background="new -45 31 40 40">
<path fill="#CCCCCC" d="M-25,62.991c-6.622,0-11.991-5.369-11.991-11.991S-31.622,39.009-25,39.009S-13.009,44.378-13.009,51
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-45 31 40 40">
<path fill="#ccc" d="M-25,62.991c-6.622,0-11.991-5.369-11.991-11.991S-31.622,39.009-25,39.009S-13.009,44.378-13.009,51
S-18.378,62.991-25,62.991z M-34.439,48.549c-0.002,0.007-0.004,0.013-0.006,0.02c0.002-0.004,0.006-0.006,0.007-0.01
C-34.437,48.555-34.438,48.552-34.439,48.549z M-34.259,47.956c-0.001-0.006-0.003-0.005-0.002-0.012l0,0
c-0.001,0.004-0.003,0.008-0.004,0.012l0.008,0.006C-34.258,47.96-34.258,47.958-34.259,47.956z M-34.245,48.067

До

Ширина:  |  Высота:  |  Размер: 148 KiB

После

Ширина:  |  Высота:  |  Размер: 148 KiB

Просмотреть файл

@ -1,23 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" id="aboutWordmark" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="130px" height="38px" viewBox="0 0 130 38" xml:space="preserve">
<path fill="#55575C" d="M128.4,14.4c0,0-0.1-0.1-0.1-0.1c0,0-0.1-0.1-0.1-0.1c0,0-0.1-0.1-0.1-0.1c0.2,0,0.3-0.1,0.4-0.2
c0.1-0.1,0.1-0.3,0.1-0.4c0-0.1,0-0.2,0-0.2c0-0.1-0.1-0.1-0.1-0.2c-0.1-0.1-0.1-0.1-0.2-0.1c-0.1,0-0.2-0.1-0.3-0.1h-0.7v2.2h0.4
v-1c0,0,0.1,0,0.1,0c0,0,0,0,0.1,0.1c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0.1,0.1,0.2,0.2,0.3l0.2,0.4h0.4l-0.3-0.5
C128.4,14.5,128.4,14.5,128.4,14.4z M127.8,13.9h-0.2v-0.7h0.2c0.2,0,0.3,0,0.4,0.1c0.1,0.1,0.1,0.1,0.1,0.3c0,0.1,0,0.2-0.1,0.3
c0,0-0.1,0.1-0.1,0.1C128,13.9,127.9,13.9,127.8,13.9z M0,37h5.7V21.2h9.6v-4.6H5.7V7.2h11.8l0.7-4.7H0V37z M24.2,0.7
c-2,0-3.6,1.6-3.6,3.7c0,2,1.5,3.6,3.5,3.6c2,0,3.7-1.6,3.7-3.6C27.8,2.3,26.2,0.7,24.2,0.7z M21.4,37h5.5V11.2l-5.5,1V37z
M43.7,11.1c-2.5,0-4.4,1.3-6.4,4c0-1.4-0.3-2.8-0.9-4l-5,1.3c0.6,1.6,0.9,3.6,0.9,6.8V37h5.5V19.9c0.5-2,2.4-3.7,4.7-3.7
c0.6,0,1,0.1,1.6,0.4l1.7-5.1C45,11.2,44.5,11.1,43.7,11.1z M62.7,13.8c-2.1-1.9-4.4-2.6-6.9-2.6c-3.2,0-5.7,1-7.7,3.4
c-2.2,2.5-3.1,5.4-3.1,9.9c0,8.1,4.5,13.2,11.6,13.2c3.4,0,6.4-1.1,9.1-3.3L63.4,31c-1.9,1.6-3.9,2.5-6.3,2.5
c-4.9,0-6.2-3.7-6.2-7.2v-0.4H66v-1.2C66,18.9,64.9,15.8,62.7,13.8z M51,21.8c0-4.1,1.7-6.5,4.8-6.5c2.8,0,4.5,2.4,4.5,6.5H51z
M75.5,11.8V7.9c0-2.2,1.2-3.5,3.1-3.5c1,0,1.8,0.3,3,0.9l1.8-3.5c-1.7-1-3.5-1.4-5.7-1.4C73.2,0.3,70,2.8,70,8
c0,2.3,0.2,3.7,0.2,3.7h-2.5v3.8h2.3V37h5.4V15.6h5.1l1.4-3.8H75.5z M92.3,11.2c-6.7,0-11,5.2-11,13.3c0,8.1,4.3,13.2,11.1,13.2
c6.8,0,11.2-5,11.2-13.2C103.6,16.5,99.5,11.2,92.3,11.2z M92.5,33.6c-3.3,0-5.1-2.1-5.1-9.5c0-6.1,1.5-8.8,5-8.8
c3.2,0,5.2,2.1,5.2,9.3C97.6,30.9,95.8,33.6,92.5,33.6z M125.2,11.8h-6.4c-0.7,1.1-3.3,6.1-4,7.7c-1.2-2.3-3.4-6.3-4.6-8.2l-5.9,1.2
l7.3,10.8L102.2,37h6.9c0.9-1.4,4.5-7.5,5.5-9.4c0.5,0.9,4.6,8,5.5,9.4h6.9l-9.2-13.8L125.2,11.8z M128,12c-1.1,0-2,0.9-2,2
s0.9,2,2,2c1.1,0,2-0.9,2-2S129.1,12,128,12z M128,15.5c-0.8,0-1.5-0.7-1.5-1.5s0.7-1.5,1.5-1.5c0.8,0,1.5,0.7,1.5,1.5
S128.8,15.5,128,15.5z"/>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" width="130px" height="38px" viewBox="0 0 130 38">
<path fill="#55575c" d="M128.4,14.4c0,0-0.1-0.1-0.1-0.1c0,0-0.1-0.1-0.1-0.1c0,0-0.1-0.1-0.1-0.1c0.2,0,0.3-0.1,0.4-0.2
c0.1-0.1,0.1-0.3,0.1-0.4c0-0.1,0-0.2,0-0.2c0-0.1-0.1-0.1-0.1-0.2c-0.1-0.1-0.1-0.1-0.2-0.1c-0.1,0-0.2-0.1-0.3-0.1h-0.7v2.2h0.4
v-1c0,0,0.1,0,0.1,0c0,0,0,0,0.1,0.1c0.1,0.1,0.1,0.1,0.2,0.2c0.1,0.1,0.1,0.2,0.2,0.3l0.2,0.4h0.4l-0.3-0.5
C128.4,14.5,128.4,14.5,128.4,14.4z M127.8,13.9h-0.2v-0.7h0.2c0.2,0,0.3,0,0.4,0.1c0.1,0.1,0.1,0.1,0.1,0.3c0,0.1,0,0.2-0.1,0.3
c0,0-0.1,0.1-0.1,0.1C128,13.9,127.9,13.9,127.8,13.9z M0,37h5.7V21.2h9.6v-4.6H5.7V7.2h11.8l0.7-4.7H0V37z M24.2,0.7
c-2,0-3.6,1.6-3.6,3.7c0,2,1.5,3.6,3.5,3.6c2,0,3.7-1.6,3.7-3.6C27.8,2.3,26.2,0.7,24.2,0.7z M21.4,37h5.5V11.2l-5.5,1V37z
M43.7,11.1c-2.5,0-4.4,1.3-6.4,4c0-1.4-0.3-2.8-0.9-4l-5,1.3c0.6,1.6,0.9,3.6,0.9,6.8V37h5.5V19.9c0.5-2,2.4-3.7,4.7-3.7
c0.6,0,1,0.1,1.6,0.4l1.7-5.1C45,11.2,44.5,11.1,43.7,11.1z M62.7,13.8c-2.1-1.9-4.4-2.6-6.9-2.6c-3.2,0-5.7,1-7.7,3.4
c-2.2,2.5-3.1,5.4-3.1,9.9c0,8.1,4.5,13.2,11.6,13.2c3.4,0,6.4-1.1,9.1-3.3L63.4,31c-1.9,1.6-3.9,2.5-6.3,2.5
c-4.9,0-6.2-3.7-6.2-7.2v-0.4H66v-1.2C66,18.9,64.9,15.8,62.7,13.8z M51,21.8c0-4.1,1.7-6.5,4.8-6.5c2.8,0,4.5,2.4,4.5,6.5H51z
M75.5,11.8V7.9c0-2.2,1.2-3.5,3.1-3.5c1,0,1.8,0.3,3,0.9l1.8-3.5c-1.7-1-3.5-1.4-5.7-1.4C73.2,0.3,70,2.8,70,8
c0,2.3,0.2,3.7,0.2,3.7h-2.5v3.8h2.3V37h5.4V15.6h5.1l1.4-3.8H75.5z M92.3,11.2c-6.7,0-11,5.2-11,13.3c0,8.1,4.3,13.2,11.1,13.2
c6.8,0,11.2-5,11.2-13.2C103.6,16.5,99.5,11.2,92.3,11.2z M92.5,33.6c-3.3,0-5.1-2.1-5.1-9.5c0-6.1,1.5-8.8,5-8.8
c3.2,0,5.2,2.1,5.2,9.3C97.6,30.9,95.8,33.6,92.5,33.6z M125.2,11.8h-6.4c-0.7,1.1-3.3,6.1-4,7.7c-1.2-2.3-3.4-6.3-4.6-8.2l-5.9,1.2
l7.3,10.8L102.2,37h6.9c0.9-1.4,4.5-7.5,5.5-9.4c0.5,0.9,4.6,8,5.5,9.4h6.9l-9.2-13.8L125.2,11.8z M128,12c-1.1,0-2,0.9-2,2
s0.9,2,2,2c1.1,0,2-0.9,2-2S129.1,12,128,12z M128,15.5c-0.8,0-1.5-0.7-1.5-1.5s0.7-1.5,1.5-1.5c0.8,0,1.5,0.7,1.5,1.5
S128.8,15.5,128,15.5z"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 2.2 KiB

После

Ширина:  |  Высота:  |  Размер: 2.2 KiB

Просмотреть файл

@ -1,8 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1"
xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" viewBox="-45 31 40 40"
enable-background="new -45 31 40 40">
<path fill="#CCCCCC" d="M-14.1,54.7c0.7-1.4,1.7-4.4,0.8-6.9c0,0,0,0,0,0.1l0,0c0,0-0.2,0.5-0.4,1.3c0-0.1,0-0.2,0-0.3
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-45 31 40 40">
<path fill="#ccc" d="M-14.1,54.7c0.7-1.4,1.7-4.4,0.8-6.9c0,0,0,0,0,0.1l0,0c0,0-0.2,0.5-0.4,1.3c0-0.1,0-0.2,0-0.3
c0.1-0.9,0-1.9-0.1-2.9c-0.3-1.5-1.4-2.8-2-3.2c0,0,0.1,0,0.1,0.1c-0.1-0.1-0.1-0.1-0.1-0.1s0,0.1,0.1,0.4c-0.7-1.1-1.6-1.5-1.6-1.5
s0,0.2,0.1,0.5c-2-1.9-4.7-3-7.6-3c-3,0-5.7,1.2-7.8,3.1c0.1,0.1,0.2,0.3,0.4,0.5c0,0,0.8-0.1,1.7-0.1c1.7-1.2,3.6-1.8,5.7-1.8
c2.6,0,5.1,1.1,7,3c-0.2-0.1-0.1,0,0,0.1c-0.6-0.4-1.2-0.8-1.7-0.8c1,0.8,2.6,2.7,2.4,6.2c-0.3-0.6-0.6-1-0.9-1.3

До

Ширина:  |  Высота:  |  Размер: 2.5 KiB

После

Ширина:  |  Высота:  |  Размер: 2.6 KiB

Просмотреть файл

@ -1,22 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" id="aboutWordmark" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="132px" height="48px" viewBox="0 0 132 48" xml:space="preserve">
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" width="132px" height="48px" viewBox="0 0 132 48">
<path fill="#fff" d="M60.6,14.3l-2.4-2.4C57,12.7,56,13,54.7,13c-3,0-3.8-1.4-7.6-1.4c-5.4,0-9.2,3.4-9.2,8.4
c0,3.3,2.2,6.1,5.6,7.2c-3.4,1-4.5,2.2-4.5,4.3c0,2.2,1.8,3.6,4.7,3.6h3.8c2.5,0,3.9,0.2,4.9,0.9c0.9,0.6,1.4,1.6,1.4,3
c0,3.1-2.2,4.4-6,4.4c-2,0-3.8-0.5-5.1-1.2c-0.9-0.6-1.5-1.6-1.5-2.9c0-0.8,0.3-1.7,0.7-2.2l-4.1,0.4c-0.3,1-0.5,1.7-0.5,2.6
c0,3.5,3,6.4,10.8,6.4c6.1,0,9.9-2.5,9.9-7.9c0-2.1-0.8-3.9-2.7-5.3c-1.5-1.1-3.1-1.4-6-1.4h-4c-1.3,0-2-0.5-2-1.2
c0-0.8,1.1-1.7,4.5-2.9c1.8,0,3.4-0.3,4.7-1.1c2.3-1.4,3.7-4.1,3.7-6.8c0-1.6-0.5-3-1.5-4.3c0.4,0.2,1.1,0.3,1.7,0.3
C57.9,15.8,59,15.4,60.6,14.3z M47.1,24.8c-3.1,0-4.8-1.7-4.8-4.8c0-3.5,1.6-5.1,4.7-5.1c3.3,0,4.6,1.5,4.6,4.9
C51.6,23.1,50.1,24.8,47.1,24.8z M30.7,1.3c-1.7,0-3,1.4-3,3.1s1.4,3,3,3c1.7,0,3.1-1.3,3.1-3C33.7,2.7,32.4,1.3,30.7,1.3z
M107.7,34.5c-1.1,0-1.4-0.6-1.4-2.5V6.5c0-3.8-0.6-5.9-0.6-5.9l-3.9,0.8c0,0,0.6,1.9,0.6,5.1v26.4c0,1.8,0.4,2.8,1.2,3.5
c0.7,0.7,1.7,1,2.9,1c1,0,1.5-0.1,2.5-0.5l-0.8-2.5C108.2,34.4,107.8,34.5,107.7,34.5z M74.7,11.6c-3.2,0-6.1,1.8-8.3,3.9
c0,0,0.2-1.8,0.2-3.4V6.3c0-3.8-0.7-5.9-0.7-5.9l-3.9,0.7c0,0,0.7,1.9,0.7,5.1V37h3.9V19.3c2.1-2.7,4.9-4.2,7.2-4.2
c1.3,0,2.3,0.4,2.9,1c0.7,0.7,0.9,1.8,0.9,3.7V37h3.8V19.1c0-1.8-0.1-2.6-0.4-3.6C80.4,13.2,77.7,11.6,74.7,11.6z M127.4,12.1
l-4.9,16.4c-0.6,2-1.6,5.2-1.6,5.2s-0.7-3.9-1.5-6.2l-5.1-16.2l-3.9,1.3l5.4,15.6c0.8,2.5,2.2,7.4,2.5,9l1.6-0.3
c-1.3,5.1-2.5,6.7-5.7,7.6l1.2,2.7c4.4-1,6.4-4.3,8-9.3l8.6-25.8H127.4z M96.9,15l1.2-2.9h-6.2c0-3.3,0.5-7.2,0.5-7.2l-4.1,0.9
c0,0-0.4,3.9-0.4,6.3h-3.2V15h3.2v17.1c0,2.5,0.7,4.1,2.4,5c0.9,0.4,1.9,0.7,3.3,0.7c1.8,0,3.1-0.4,4.4-1l-0.6-2.5
c-0.7,0.3-1.3,0.5-2.4,0.5c-2.4,0-3.2-0.9-3.2-3.7V15H96.9z M28.6,37h4.1V11.5l-4.1,0.6V37z M18.9,21.3c0,5,0.4,10.5,0.4,10.5
s-1.4-3.8-3.2-7.2L4.8,2.7H0V37h4.2L4,17.1c0-4.5-0.4-9.3-0.4-9.3s1.7,4.1,3.9,8.2l11,21h4.3V2.7h-4L18.9,21.3z"/>
c0,3.3,2.2,6.1,5.6,7.2c-3.4,1-4.5,2.2-4.5,4.3c0,2.2,1.8,3.6,4.7,3.6h3.8c2.5,0,3.9,0.2,4.9,0.9c0.9,0.6,1.4,1.6,1.4,3
c0,3.1-2.2,4.4-6,4.4c-2,0-3.8-0.5-5.1-1.2c-0.9-0.6-1.5-1.6-1.5-2.9c0-0.8,0.3-1.7,0.7-2.2l-4.1,0.4c-0.3,1-0.5,1.7-0.5,2.6
c0,3.5,3,6.4,10.8,6.4c6.1,0,9.9-2.5,9.9-7.9c0-2.1-0.8-3.9-2.7-5.3c-1.5-1.1-3.1-1.4-6-1.4h-4c-1.3,0-2-0.5-2-1.2
c0-0.8,1.1-1.7,4.5-2.9c1.8,0,3.4-0.3,4.7-1.1c2.3-1.4,3.7-4.1,3.7-6.8c0-1.6-0.5-3-1.5-4.3c0.4,0.2,1.1,0.3,1.7,0.3
C57.9,15.8,59,15.4,60.6,14.3z M47.1,24.8c-3.1,0-4.8-1.7-4.8-4.8c0-3.5,1.6-5.1,4.7-5.1c3.3,0,4.6,1.5,4.6,4.9
C51.6,23.1,50.1,24.8,47.1,24.8z M30.7,1.3c-1.7,0-3,1.4-3,3.1s1.4,3,3,3c1.7,0,3.1-1.3,3.1-3C33.7,2.7,32.4,1.3,30.7,1.3z
M107.7,34.5c-1.1,0-1.4-0.6-1.4-2.5V6.5c0-3.8-0.6-5.9-0.6-5.9l-3.9,0.8c0,0,0.6,1.9,0.6,5.1v26.4c0,1.8,0.4,2.8,1.2,3.5
c0.7,0.7,1.7,1,2.9,1c1,0,1.5-0.1,2.5-0.5l-0.8-2.5C108.2,34.4,107.8,34.5,107.7,34.5z M74.7,11.6c-3.2,0-6.1,1.8-8.3,3.9
c0,0,0.2-1.8,0.2-3.4V6.3c0-3.8-0.7-5.9-0.7-5.9l-3.9,0.7c0,0,0.7,1.9,0.7,5.1V37h3.9V19.3c2.1-2.7,4.9-4.2,7.2-4.2
c1.3,0,2.3,0.4,2.9,1c0.7,0.7,0.9,1.8,0.9,3.7V37h3.8V19.1c0-1.8-0.1-2.6-0.4-3.6C80.4,13.2,77.7,11.6,74.7,11.6z M127.4,12.1
l-4.9,16.4c-0.6,2-1.6,5.2-1.6,5.2s-0.7-3.9-1.5-6.2l-5.1-16.2l-3.9,1.3l5.4,15.6c0.8,2.5,2.2,7.4,2.5,9l1.6-0.3
c-1.3,5.1-2.5,6.7-5.7,7.6l1.2,2.7c4.4-1,6.4-4.3,8-9.3l8.6-25.8H127.4z M96.9,15l1.2-2.9h-6.2c0-3.3,0.5-7.2,0.5-7.2l-4.1,0.9
c0,0-0.4,3.9-0.4,6.3h-3.2V15h3.2v17.1c0,2.5,0.7,4.1,2.4,5c0.9,0.4,1.9,0.7,3.3,0.7c1.8,0,3.1-0.4,4.4-1l-0.6-2.5
c-0.7,0.3-1.3,0.5-2.4,0.5c-2.4,0-3.2-0.9-3.2-3.7V15H96.9z M28.6,37h4.1V11.5l-4.1,0.6V37z M18.9,21.3c0,5,0.4,10.5,0.4,10.5
s-1.4-3.8-3.2-7.2L4.8,2.7H0V37h4.2L4,17.1c0-4.5-0.4-9.3-0.4-9.3s1.7,4.1,3.9,8.2l11,21h4.3V2.7h-4L18.9,21.3z"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 2.1 KiB

После

Ширина:  |  Высота:  |  Размер: 2.2 KiB

Просмотреть файл

@ -1,8 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1"
xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" viewBox="-45 31 40 40"
enable-background="new -45 31 40 40">
<path fill="#CCCCCC" d="M-25,62.991c-6.622,0-11.991-5.369-11.991-11.991S-31.622,39.009-25,39.009S-13.009,44.378-13.009,51
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-45 31 40 40">
<path fill="#ccc" d="M-25,62.991c-6.622,0-11.991-5.369-11.991-11.991S-31.622,39.009-25,39.009S-13.009,44.378-13.009,51
S-18.378,62.991-25,62.991z M-34.439,48.549c-0.002,0.007-0.004,0.013-0.006,0.02c0.002-0.004,0.006-0.006,0.007-0.01
C-34.437,48.555-34.438,48.552-34.439,48.549z M-34.259,47.956c-0.001-0.006-0.003-0.005-0.002-0.012l0,0
c-0.001,0.004-0.003,0.008-0.004,0.012l0.008,0.006C-34.258,47.96-34.258,47.958-34.259,47.956z M-34.245,48.067

До

Ширина:  |  Высота:  |  Размер: 148 KiB

После

Ширина:  |  Высота:  |  Размер: 148 KiB

Просмотреть файл

@ -18,6 +18,7 @@ content/js/conversationViews.js
content/js/panel.js
content/js/roomViews.js
content/shared/js/feedbackViews.js
content/shared/js/textChatView.js
content/shared/js/views.js
standalone/content/js/fxOSMarketplace.js
standalone/content/js/standaloneRoomViews.js

Просмотреть файл

@ -60,7 +60,7 @@
"no-unused-vars": 0, // TODO: Remove (use default)
"no-use-before-define": 0, // TODO: Remove (use default)
"no-wrap-func": 0, // TODO: Remove (use default)
"quotes": 0, // [2, "double", "avoid-escape"],
"quotes": [2, "double", "avoid-escape"],
"strict": 0, // [2, "function"],
// eslint-plugin-react rules. These are documented at
// <https://github.com/yannickcr/eslint-plugin-react#list-of-supported-rules>

Просмотреть файл

@ -40,6 +40,8 @@
<script type="text/javascript" src="loop/shared/js/feedbackStore.js"></script>
<script type="text/javascript" src="loop/shared/js/views.js"></script>
<script type="text/javascript" src="loop/shared/js/feedbackViews.js"></script>
<script type="text/javascript" src="loop/shared/js/textChatStore.js"></script>
<script type="text/javascript" src="loop/shared/js/textChatView.js"></script>
<script type="text/javascript" src="loop/js/conversationViews.js"></script>
<script type="text/javascript" src="loop/shared/js/websocket.js"></script>
<script type="text/javascript" src="loop/js/conversationAppStore.js"></script>

Просмотреть файл

@ -86,10 +86,14 @@ loop.conversation = (function(mozL10n) {
}
});
// We want data channels only if the text chat preference is enabled.
var useDataChannels = loop.shared.utils.getBoolPreference("textChat.enabled");
var dispatcher = new loop.Dispatcher();
var client = new loop.Client();
var sdkDriver = new loop.OTSdkDriver({
isDesktop: true,
useDataChannels: useDataChannels,
dispatcher: dispatcher,
sdk: OT,
mozLoop: navigator.mozLoop
@ -130,11 +134,15 @@ loop.conversation = (function(mozL10n) {
var feedbackStore = new loop.store.FeedbackStore(dispatcher, {
feedbackClient: feedbackClient
});
var textChatStore = new loop.store.TextChatStore(dispatcher, {
sdkDriver: sdkDriver
});
loop.store.StoreMixin.register({
conversationAppStore: conversationAppStore,
conversationStore: conversationStore,
feedbackStore: feedbackStore
feedbackStore: feedbackStore,
textChatStore: textChatStore
});
// Obtain the windowId and pass it through
@ -153,8 +161,7 @@ loop.conversation = (function(mozL10n) {
React.render(React.createElement(AppControllerView, {
roomStore: roomStore,
dispatcher: dispatcher,
mozLoop: navigator.mozLoop}
), document.querySelector('#main'));
mozLoop: navigator.mozLoop}), document.querySelector("#main"));
document.body.setAttribute("dir", mozL10n.getDirection());
document.body.setAttribute("platform", loop.shared.utils.getPlatform());
@ -178,4 +185,4 @@ loop.conversation = (function(mozL10n) {
};
})(document.mozL10n);
document.addEventListener('DOMContentLoaded', loop.conversation.init);
document.addEventListener("DOMContentLoaded", loop.conversation.init);

Просмотреть файл

@ -86,10 +86,14 @@ loop.conversation = (function(mozL10n) {
}
});
// We want data channels only if the text chat preference is enabled.
var useDataChannels = loop.shared.utils.getBoolPreference("textChat.enabled");
var dispatcher = new loop.Dispatcher();
var client = new loop.Client();
var sdkDriver = new loop.OTSdkDriver({
isDesktop: true,
useDataChannels: useDataChannels,
dispatcher: dispatcher,
sdk: OT,
mozLoop: navigator.mozLoop
@ -130,11 +134,15 @@ loop.conversation = (function(mozL10n) {
var feedbackStore = new loop.store.FeedbackStore(dispatcher, {
feedbackClient: feedbackClient
});
var textChatStore = new loop.store.TextChatStore(dispatcher, {
sdkDriver: sdkDriver
});
loop.store.StoreMixin.register({
conversationAppStore: conversationAppStore,
conversationStore: conversationStore,
feedbackStore: feedbackStore
feedbackStore: feedbackStore,
textChatStore: textChatStore
});
// Obtain the windowId and pass it through
@ -153,8 +161,7 @@ loop.conversation = (function(mozL10n) {
React.render(<AppControllerView
roomStore={roomStore}
dispatcher={dispatcher}
mozLoop={navigator.mozLoop}
/>, document.querySelector('#main'));
mozLoop={navigator.mozLoop} />, document.querySelector("#main"));
document.body.setAttribute("dir", mozL10n.getDirection());
document.body.setAttribute("platform", loop.shared.utils.getPlatform());
@ -178,4 +185,4 @@ loop.conversation = (function(mozL10n) {
};
})(document.mozL10n);
document.addEventListener('DOMContentLoaded', loop.conversation.init);
document.addEventListener("DOMContentLoaded", loop.conversation.init);

Просмотреть файл

@ -163,7 +163,7 @@ loop.conversationViews = (function(mozL10n) {
clickHandler: function(e) {
var target = e.target;
if (!target.classList.contains('btn-chevron')) {
if (!target.classList.contains("btn-chevron")) {
this._hideDeclineMenu();
}
},

Просмотреть файл

@ -163,7 +163,7 @@ loop.conversationViews = (function(mozL10n) {
clickHandler: function(e) {
var target = e.target;
if (!target.classList.contains('btn-chevron')) {
if (!target.classList.contains("btn-chevron")) {
this._hideDeclineMenu();
}
},

Просмотреть файл

@ -3,8 +3,8 @@
* You can obtain one at http://mozilla.org/MPL/2.0/. */
window.OTProperties = {
cdnURL: 'loop/'
cdnURL: "loop/"
};
window.OTProperties.assetURL = window.OTProperties.cdnURL + 'sdk-content/';
window.OTProperties.configURL = window.OTProperties.assetURL + 'js/dynamic_config.min.js';
window.OTProperties.cssURL = window.OTProperties.assetURL + 'css/ot.css';
window.OTProperties.assetURL = window.OTProperties.cdnURL + "sdk-content/";
window.OTProperties.configURL = window.OTProperties.assetURL + "js/dynamic_config.min.js";
window.OTProperties.cssURL = window.OTProperties.assetURL + "css/ot.css";

Просмотреть файл

@ -128,11 +128,11 @@ loop.panel = (function(_, mozL10n) {
return function(event) {
// Note: side effect!
switch (newAvailabilty) {
case 'available':
case "available":
this.setState({doNotDisturb: false});
navigator.mozLoop.doNotDisturb = false;
break;
case 'do-not-disturb':
case "do-not-disturb":
this.setState({doNotDisturb: true});
navigator.mozLoop.doNotDisturb = true;
break;
@ -145,13 +145,13 @@ loop.panel = (function(_, mozL10n) {
// XXX https://github.com/facebook/react/issues/310 for === htmlFor
var cx = React.addons.classSet;
var availabilityStatus = cx({
'status': true,
'status-dnd': this.state.doNotDisturb,
'status-available': !this.state.doNotDisturb
"status": true,
"status-dnd": this.state.doNotDisturb,
"status-available": !this.state.doNotDisturb
});
var availabilityDropdown = cx({
'dropdown-menu': true,
'hide': !this.state.showMenu
"dropdown-menu": true,
"hide": !this.state.showMenu
});
var availabilityText = this.state.doNotDisturb ?
mozL10n.get("display_name_dnd_status") :
@ -289,7 +289,7 @@ loop.panel = (function(_, mozL10n) {
}
var locale = mozL10n.getLanguage();
navigator.mozLoop.setLoopPref('showPartnerLogo', false);
navigator.mozLoop.setLoopPref("showPartnerLogo", false);
return (
React.createElement("p", {id: "powered-by", className: "powered-by"},
mozL10n.get("powered_by_beforeLogo"),
@ -301,8 +301,8 @@ loop.panel = (function(_, mozL10n) {
render: function() {
if (!this.state.gettingStartedSeen || this.state.seenToS == "unseen") {
var terms_of_use_url = navigator.mozLoop.getLoopPref('legal.ToS_url');
var privacy_notice_url = navigator.mozLoop.getLoopPref('legal.privacy_url');
var terms_of_use_url = navigator.mozLoop.getLoopPref("legal.ToS_url");
var privacy_notice_url = navigator.mozLoop.getLoopPref("legal.privacy_url");
var tosHTML = mozL10n.get("legal_text_and_links3", {
"clientShortname": mozL10n.get("clientShortname2"),
"terms_of_use": React.renderToStaticMarkup(
@ -700,7 +700,10 @@ loop.panel = (function(_, mozL10n) {
userDisplayName: React.PropTypes.string.isRequired
},
mixins: [sharedMixins.DocumentVisibilityMixin],
mixins: [
sharedMixins.DocumentVisibilityMixin,
React.addons.PureRenderMixin
],
getInitialState: function() {
return {
@ -712,6 +715,11 @@ loop.panel = (function(_, mozL10n) {
},
onDocumentVisible: function() {
// We would use onDocumentHidden to null out the data ready for the next
// opening. However, this seems to cause an awkward glitch in the display
// when opening the panel, and it seems cleaner just to update the data
// even if there's a small delay.
this.props.mozLoop.getSelectedTabMetadata(function callback(metadata) {
var previewImage = metadata.favicon || "";
var description = metadata.title || metadata.description;
@ -724,14 +732,6 @@ loop.panel = (function(_, mozL10n) {
}.bind(this));
},
onDocumentHidden: function() {
this.setState({
previewImage: "",
description: "",
url: ""
});
},
onCheckboxChange: function(newState) {
this.setState({checked: newState.checked});
},
@ -1006,8 +1006,8 @@ loop.panel = (function(_, mozL10n) {
document.body.setAttribute("platform", loop.shared.utils.getPlatform());
// Notify the window that we've finished initalization and initial layout
var evtObject = document.createEvent('Event');
evtObject.initEvent('loopPanelInitialized', true, false);
var evtObject = document.createEvent("Event");
evtObject.initEvent("loopPanelInitialized", true, false);
window.dispatchEvent(evtObject);
}
@ -1027,4 +1027,4 @@ loop.panel = (function(_, mozL10n) {
};
})(_, document.mozL10n);
document.addEventListener('DOMContentLoaded', loop.panel.init);
document.addEventListener("DOMContentLoaded", loop.panel.init);

Просмотреть файл

@ -128,11 +128,11 @@ loop.panel = (function(_, mozL10n) {
return function(event) {
// Note: side effect!
switch (newAvailabilty) {
case 'available':
case "available":
this.setState({doNotDisturb: false});
navigator.mozLoop.doNotDisturb = false;
break;
case 'do-not-disturb':
case "do-not-disturb":
this.setState({doNotDisturb: true});
navigator.mozLoop.doNotDisturb = true;
break;
@ -145,13 +145,13 @@ loop.panel = (function(_, mozL10n) {
// XXX https://github.com/facebook/react/issues/310 for === htmlFor
var cx = React.addons.classSet;
var availabilityStatus = cx({
'status': true,
'status-dnd': this.state.doNotDisturb,
'status-available': !this.state.doNotDisturb
"status": true,
"status-dnd": this.state.doNotDisturb,
"status-available": !this.state.doNotDisturb
});
var availabilityDropdown = cx({
'dropdown-menu': true,
'hide': !this.state.showMenu
"dropdown-menu": true,
"hide": !this.state.showMenu
});
var availabilityText = this.state.doNotDisturb ?
mozL10n.get("display_name_dnd_status") :
@ -289,7 +289,7 @@ loop.panel = (function(_, mozL10n) {
}
var locale = mozL10n.getLanguage();
navigator.mozLoop.setLoopPref('showPartnerLogo', false);
navigator.mozLoop.setLoopPref("showPartnerLogo", false);
return (
<p id="powered-by" className="powered-by">
{mozL10n.get("powered_by_beforeLogo")}
@ -301,8 +301,8 @@ loop.panel = (function(_, mozL10n) {
render: function() {
if (!this.state.gettingStartedSeen || this.state.seenToS == "unseen") {
var terms_of_use_url = navigator.mozLoop.getLoopPref('legal.ToS_url');
var privacy_notice_url = navigator.mozLoop.getLoopPref('legal.privacy_url');
var terms_of_use_url = navigator.mozLoop.getLoopPref("legal.ToS_url");
var privacy_notice_url = navigator.mozLoop.getLoopPref("legal.privacy_url");
var tosHTML = mozL10n.get("legal_text_and_links3", {
"clientShortname": mozL10n.get("clientShortname2"),
"terms_of_use": React.renderToStaticMarkup(
@ -700,7 +700,10 @@ loop.panel = (function(_, mozL10n) {
userDisplayName: React.PropTypes.string.isRequired
},
mixins: [sharedMixins.DocumentVisibilityMixin],
mixins: [
sharedMixins.DocumentVisibilityMixin,
React.addons.PureRenderMixin
],
getInitialState: function() {
return {
@ -712,6 +715,11 @@ loop.panel = (function(_, mozL10n) {
},
onDocumentVisible: function() {
// We would use onDocumentHidden to null out the data ready for the next
// opening. However, this seems to cause an awkward glitch in the display
// when opening the panel, and it seems cleaner just to update the data
// even if there's a small delay.
this.props.mozLoop.getSelectedTabMetadata(function callback(metadata) {
var previewImage = metadata.favicon || "";
var description = metadata.title || metadata.description;
@ -724,14 +732,6 @@ loop.panel = (function(_, mozL10n) {
}.bind(this));
},
onDocumentHidden: function() {
this.setState({
previewImage: "",
description: "",
url: ""
});
},
onCheckboxChange: function(newState) {
this.setState({checked: newState.checked});
},
@ -1006,8 +1006,8 @@ loop.panel = (function(_, mozL10n) {
document.body.setAttribute("platform", loop.shared.utils.getPlatform());
// Notify the window that we've finished initalization and initial layout
var evtObject = document.createEvent('Event');
evtObject.initEvent('loopPanelInitialized', true, false);
var evtObject = document.createEvent("Event");
evtObject.initEvent("loopPanelInitialized", true, false);
window.dispatchEvent(evtObject);
}
@ -1027,4 +1027,4 @@ loop.panel = (function(_, mozL10n) {
};
})(_, document.mozL10n);
document.addEventListener('DOMContentLoaded', loop.panel.init);
document.addEventListener("DOMContentLoaded", loop.panel.init);

Просмотреть файл

@ -665,6 +665,7 @@ loop.roomViews = (function(mozL10n) {
default: {
return (
React.createElement("div", {className: "room-conversation-wrapper"},
React.createElement(sharedViews.TextChatView, {dispatcher: this.props.dispatcher}),
React.createElement(DesktopRoomInvitationView, {
dispatcher: this.props.dispatcher,
error: this.state.error,

Просмотреть файл

@ -665,6 +665,7 @@ loop.roomViews = (function(mozL10n) {
default: {
return (
<div className="room-conversation-wrapper">
<sharedViews.TextChatView dispatcher={this.props.dispatcher} />
<DesktopRoomInvitationView
dispatcher={this.props.dispatcher}
error={this.state.error}

Просмотреть файл

@ -690,6 +690,27 @@ html, .fx-embedded, #main,
height: 100%;
}
/**
* The .fx-embbeded .text-chat-* styles are very temporarily whilst we work on
* text chat (bug 1108892 and dependencies).
*/
.fx-embedded .text-chat-view {
height: 60px;
color: white;
background-color: black;
}
.fx-embedded .text-chat-entries {
/* XXX Should use flex, this is just for the initial implementation. */
height: calc(100% - 2em);
width: 100%;
}
.fx-embedded .text-chat-box {
width: 100%;
margin: auto;
}
@media screen and (min-width:640px) {
.standalone .conversation-toolbar {
position: absolute;
@ -1268,6 +1289,27 @@ body[dir=rtl] .room-context-btn-edit {
height: auto;
}
.text-chat-entries {
margin: auto;
overflow: scroll;
border: 1px solid red;
}
.text-chat-entry {
text-align: left;
}
.text-chat-entry.received {
text-align: right;
}
.text-chat-box {
margin: auto;
}
.text-chat-box > form > input {
width: 100%;
}
@media screen and (max-width:640px) {
.standalone-room-info {

Просмотреть файл

@ -1,3 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="129 5 252 253" width="21pc" height="253pt"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2014-08-13 17:00Z</dc:date><!-- Produced by OmniGraffle Professional 5.4.4 --></metadata><defs><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#4ba6e9"/><stop offset="1" stop-color="#4ba7bf"/></linearGradient></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><g><title>Layer 1</title><rect x="129" y="5" width="252" height="252" fill="#4BA6E7"/><circle cx="255" cy="106" r="54.000088" fill="#badbeb"/><path d="M 159.01782 257 L 350.98218 257 C 351.46667 236.66908 342.1 216.2136 322.88218 200.69928 C 285.39187 170.43352 224.60813 170.43352 187.11782 200.69928 C 167.9 216.2136 158.53333 236.66909 159.01782 257 Z" fill="#badbeb"/></g></g></svg>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="129 5 252 253" width="21pc" height="253pt">
<rect x="129" y="5" width="252" height="252" fill="#4ba6e7"/>
<circle cx="255" cy="106" r="54" fill="#badbeb"/>
<path fill="#badbeb" d="M 159.01782 257 L 350.98218 257 C 351.46667 236.66908 342.1 216.2136 322.88218 200.69928 C 285.39187 170.43352 224.60813 170.43352 187.11782 200.69928 C 167.9 216.2136 158.53333 236.66909 159.01782 257 Z"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.1 KiB

После

Ширина:  |  Высота:  |  Размер: 700 B

Просмотреть файл

@ -2,25 +2,15 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 100 100"
xmlns:xlink="http://www.w3.org/1999/xlink"
enable-background="new 0 0 100 100">
<style>
</style>
<defs>
<g id="beta-ribbon">
<path fill="#e6e6e6" d="M0,100 100,0 49.1,0 0,49.2z"/>
<path fill="#fff" d="M0,94.7 94.7,0 46.5,0 0,46.6z"/>
<g fill="#999">
<path d="m25.9,56.7l-4,4-13.7-13.7 3.7-3.7c2.4-2.4 5.7-4.1 8.3-1.4 1.7,1.7 1.4,3.9 .5,5.3l.1,.1c1.6-1.1 4-1.9 6.3,.3 3,3 1.3,6.5-1.2,9.1zm-12.2-12.2l-2.2,2.2 4.3,4.3 2.3-2.3c1.6-1.6 1.8-3.1 .2-4.7-1.4-1.6-2.9-1.2-4.6,.5zm6.1,5.4l-2.5,2.5 4.9,4.9 2.4-2.4c1.3-1.3 2.5-3.3 .6-5.3-2-2-3.9-1.2-5.4,.3z"/>
<path d="m30.7,42.7c2.5,2.2 4.6,2.1 6.2,.5 1-1 1.5-2 1.6-3.6l2,.4c-.2,1.7-.9,3.4-2.2,4.7-3.1,3.1-6.9,2.5-10.2-.7-3.2-3.2-3.8-7.1-1.1-9.9 2.7-2.7 6.2-2.3 9.4,.9 .4,.4 .7,.7 .9,1l-6.6,6.7zm-1.4-1.4l4.9-4.9c-2.2-2.1-4.1-2.5-5.7-.9-1.4,1.5-1.3,3.4 .8,5.8z"/>
<path d="m49.8,31.8c-.2,1.1-.8,2.2-1.6,3.1-1.9,1.9-4,1.6-5.9-.2l-6.3-6.3-1.6,1.6-1.4-1.4 1.7-1.7-2.4-2.4 1.6-2 2.6,2.6 2.6-2.6 1.2,1.6-2.4,2.4 6.3,6.3c1.1,1.1 1.9,1.2 2.8,.3 .5-.5 .7-1 .9-1.8l1.9,.5z"/>
<path d="m57,20.8c.8,.8 1.4,.9 2.1,.6l.8,1.7c-1.1,.8-2.1,1.1-3.4,.5 .3,1.7-.4,3.3-1.6,4.6-2.1,2.1-4.7,2.1-6.6,.2-2.2-2.2-1.6-5.1 1.5-8.3l1.4-1.3-.8-.8c-1.5-1.5-2.8-1.3-4.3,.2-.7,.7-1.5,1.8-2.2,3.3l-1.8-.9c.8-1.8 1.8-3.1 2.8-4.2 2.7-2.7 5.1-2.5 7.2-.4l4.9,4.8zm-2,1.6l-2.6-2.6-1.3,1.3c-2.2,2.2-2.2,3.8-.9,5.1 1.3,1.3 2.5,1.4 3.8,.1 1.1-1.1 1.3-2.4 1-3.9z"/>
<path d="M93.4,0 0,94.1 0,96 95.2,0z"/>
<path d="M45.3,0 0,46 0,47.9 47,0z"/>
</g>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<path fill="#e6e6e6" d="M0,100 100,0 49.1,0 0,49.2z"/>
<path fill="#fff" d="M0,94.7 94.7,0 46.5,0 0,46.6z"/>
<g fill="#999">
<path d="m25.9,56.7l-4,4-13.7-13.7 3.7-3.7c2.4-2.4 5.7-4.1 8.3-1.4 1.7,1.7 1.4,3.9 .5,5.3l.1,.1c1.6-1.1 4-1.9 6.3,.3 3,3 1.3,6.5-1.2,9.1zm-12.2-12.2l-2.2,2.2 4.3,4.3 2.3-2.3c1.6-1.6 1.8-3.1 .2-4.7-1.4-1.6-2.9-1.2-4.6,.5zm6.1,5.4l-2.5,2.5 4.9,4.9 2.4-2.4c1.3-1.3 2.5-3.3 .6-5.3-2-2-3.9-1.2-5.4,.3z"/>
<path d="m30.7,42.7c2.5,2.2 4.6,2.1 6.2,.5 1-1 1.5-2 1.6-3.6l2,.4c-.2,1.7-.9,3.4-2.2,4.7-3.1,3.1-6.9,2.5-10.2-.7-3.2-3.2-3.8-7.1-1.1-9.9 2.7-2.7 6.2-2.3 9.4,.9 .4,.4 .7,.7 .9,1l-6.6,6.7zm-1.4-1.4l4.9-4.9c-2.2-2.1-4.1-2.5-5.7-.9-1.4,1.5-1.3,3.4 .8,5.8z"/>
<path d="m49.8,31.8c-.2,1.1-.8,2.2-1.6,3.1-1.9,1.9-4,1.6-5.9-.2l-6.3-6.3-1.6,1.6-1.4-1.4 1.7-1.7-2.4-2.4 1.6-2 2.6,2.6 2.6-2.6 1.2,1.6-2.4,2.4 6.3,6.3c1.1,1.1 1.9,1.2 2.8,.3 .5-.5 .7-1 .9-1.8l1.9,.5z"/>
<path d="m57,20.8c.8,.8 1.4,.9 2.1,.6l.8,1.7c-1.1,.8-2.1,1.1-3.4,.5 .3,1.7-.4,3.3-1.6,4.6-2.1,2.1-4.7,2.1-6.6,.2-2.2-2.2-1.6-5.1 1.5-8.3l1.4-1.3-.8-.8c-1.5-1.5-2.8-1.3-4.3,.2-.7,.7-1.5,1.8-2.2,3.3l-1.8-.9c.8-1.8 1.8-3.1 2.8-4.2 2.7-2.7 5.1-2.5 7.2-.4l4.9,4.8zm-2,1.6l-2.6-2.6-1.3,1.3c-2.2,2.2-2.2,3.8-.9,5.1 1.3,1.3 2.5,1.4 3.8,.1 1.1-1.1 1.3-2.4 1-3.9z"/>
<path d="M93.4,0 0,94.1 0,96 95.2,0z"/>
<path d="M45.3,0 0,46 0,47.9 47,0z"/>
</g>
</defs>
<use id="beta-ribbon" xlink:href="#beta-ribbon"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.8 KiB

После

Ширина:  |  Высота:  |  Размер: 1.6 KiB

Просмотреть файл

@ -2,11 +2,7 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
x="0" y="0"
width="21" height="21"
viewBox="0 0 21 21">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="21" height="21" viewBox="0 0 21 21">
<style>
use:not(:target) {
display: none;
@ -30,11 +26,11 @@
fill: #0096dd;
}
</style>
<defs style="display: none;">
<defs>
<path id="check-shape" d="M 9.39,16.5 16.28,6 14.77,4.5 9.37,12.7 6.28,9.2 4.7,10.7 z"/>
</defs>
<use id="check" xlink:href="#check-shape"/>
<use id="check-active" xlink:href="#check-shape"/>
<use id="check" xlink:href="#check-shape"/>
<use id="check-active" xlink:href="#check-shape"/>
<use id="check-disabled" xlink:href="#check-shape"/>
<use id="check-blue" xlink:href="#check-shape"/>
<use id="check-blue" xlink:href="#check-shape"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.2 KiB

После

Ширина:  |  Высота:  |  Размер: 1.1 KiB

Просмотреть файл

@ -2,64 +2,48 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
x="0px" y="0px"
viewBox="0 0 10 10"
enable-background="new 0 0 10 10"
xml:space="preserve">
<style>
use:not(:target) {
display: none;
}
use {
fill: #ccc;
}
use[id$="-hover"] {
fill: #444;
}
use[id$="-active"] {
fill: #0095dd;
}
use[id$="-white"] {
fill: rgba(255,255,255,0.8);
}
use[id$="-disabled"] {
fill: rgba(255,255,255,0.4);
}
</style>
<defs style="display:none">
<polygon id="close-shape" fill-rule="evenodd" clip-rule="evenodd" points="10,1.717 8.336,0.049 5.024,3.369 1.663,0 0,1.668
3.36,5.037 0.098,8.307 1.762,9.975 5.025,6.705 8.311,10 9.975,8.332 6.688,5.037"/>
<path id="dropdown-shape" fill-rule="evenodd" clip-rule="evenodd" d="M9,3L4.984,7L1,3H9z"/>
<polygon id="expand-shape" fill-rule="evenodd" clip-rule="evenodd" points="10,0 4.838,0 6.506,1.669 0,8.175 1.825,10 8.331,3.494
10,5.162"/>
<path id="edit-shape" d="M5.493,1.762l2.745,2.745L2.745,10H0V7.255L5.493,1.762z M2.397,9.155l0.601-0.601L1.446,7.002L0.845,7.603
V8.31H1.69v0.845H2.397z M5.849,3.028c0-0.096-0.048-0.144-0.146-0.144c-0.044,0-0.081,0.015-0.112,0.046L2.014,6.508
C1.983,6.538,1.968,6.577,1.968,6.619c0,0.098,0.048,0.146,0.144,0.146c0.044,0,0.081-0.015,0.112-0.046l3.579-3.577
C5.834,3.111,5.849,3.073,5.849,3.028z M10,2.395c0,0.233-0.081,0.431-0.245,0.595L8.66,4.085L5.915,1.34L7.01,0.25
C7.168,0.083,7.366,0,7.605,0c0.233,0,0.433,0.083,0.601,0.25l1.55,1.544C9.919,1.966,10,2.166,10,2.395z"/>
<rect id="minimize-shape" y="3.6" fill-rule="evenodd" clip-rule="evenodd" width="10" height="2.8"/>
</defs>
<use id="close" xlink:href="#close-shape"/>
<use id="close-active" xlink:href="#close-shape"/>
<use id="close-disabled" xlink:href="#close-shape"/>
<use id="dropdown" xlink:href="#dropdown-shape"/>
<use id="dropdown-white" xlink:href="#dropdown-shape"/>
<use id="dropdown-active" xlink:href="#dropdown-shape"/>
<use id="dropdown-disabled" xlink:href="#dropdown-shape"/>
<use id="edit" xlink:href="#edit-shape"/>
<use id="edit-active" xlink:href="#edit-shape"/>
<use id="edit-disabled" xlink:href="#edit-shape"/>
<use id="expand" xlink:href="#expand-shape"/>
<use id="expand-active" xlink:href="#expand-shape"/>
<use id="expand-disabled" xlink:href="#expand-shape"/>
<use id="minimize" xlink:href="#minimize-shape"/>
<use id="minimize-active" xlink:href="#minimize-shape"/>
<use id="minimize-disabled" xlink:href="#minimize-shape"/>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 10 10">
<style>
use:not(:target) {
display: none;
}
use {
fill: #ccc;
}
use[id$="-hover"] {
fill: #444;
}
use[id$="-active"] {
fill: #0095dd;
}
use[id$="-white"] {
fill: rgba(255,255,255,0.8);
}
use[id$="-disabled"] {
fill: rgba(255,255,255,0.4);
}
</style>
<defs>
<polygon id="close-shape" points="10,1.717 8.336,0.049 5.024,3.369 1.663,0 0,1.668 3.36,5.037 0.098,8.307 1.762,9.975 5.025,6.705 8.311,10 9.975,8.332 6.688,5.037"/>
<path id="dropdown-shape" fill-rule="evenodd" d="M9,3L4.984,7L1,3H9z"/>
<polygon id="expand-shape" points="10,0 4.838,0 6.506,1.669 0,8.175 1.825,10 8.331,3.494 10,5.162"/>
<path id="edit-shape" d="M5.493,1.762l2.745,2.745L2.745,10H0V7.255L5.493,1.762z M2.397,9.155l0.601-0.601L1.446,7.002L0.845,7.603 V8.31H1.69v0.845H2.397z M5.849,3.028c0-0.096-0.048-0.144-0.146-0.144c-0.044,0-0.081,0.015-0.112,0.046L2.014,6.508 C1.983,6.538,1.968,6.577,1.968,6.619c0,0.098,0.048,0.146,0.144,0.146c0.044,0,0.081-0.015,0.112-0.046l3.579-3.577 C5.834,3.111,5.849,3.073,5.849,3.028z M10,2.395c0,0.233-0.081,0.431-0.245,0.595L8.66,4.085L5.915,1.34L7.01,0.25 C7.168,0.083,7.366,0,7.605,0c0.233,0,0.433,0.083,0.601,0.25l1.55,1.544C9.919,1.966,10,2.166,10,2.395z"/>
<rect id="minimize-shape" y="3.6" width="10" height="2.8"/>
</defs>
<use id="close" xlink:href="#close-shape"/>
<use id="close-active" xlink:href="#close-shape"/>
<use id="close-disabled" xlink:href="#close-shape"/>
<use id="dropdown" xlink:href="#dropdown-shape"/>
<use id="dropdown-white" xlink:href="#dropdown-shape"/>
<use id="dropdown-active" xlink:href="#dropdown-shape"/>
<use id="dropdown-disabled" xlink:href="#dropdown-shape"/>
<use id="edit" xlink:href="#edit-shape"/>
<use id="edit-active" xlink:href="#edit-shape"/>
<use id="edit-disabled" xlink:href="#edit-shape"/>
<use id="expand" xlink:href="#expand-shape"/>
<use id="expand-active" xlink:href="#expand-shape"/>
<use id="expand-disabled" xlink:href="#expand-shape"/>
<use id="minimize" xlink:href="#minimize-shape"/>
<use id="minimize-active" xlink:href="#minimize-shape"/>
<use id="minimize-disabled" xlink:href="#minimize-shape"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 2.8 KiB

После

Ширина:  |  Высота:  |  Размер: 2.5 KiB

Просмотреть файл

@ -2,133 +2,71 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
x="0px" y="0px"
viewBox="0 0 14 14"
enable-background="new 0 0 14 14"
xml:space="preserve">
<style>
use:not(:target) {
display: none;
}
use {
fill: #ccc;
}
use[id$="-hover"] {
fill: #444;
}
use[id$="-active"] {
fill: #0095dd;
}
use[id$="-white"] {
fill: #fff;
}
</style>
<defs style="display:none">
<path id="audio-shape" fill-rule="evenodd" clip-rule="evenodd" d="M9.571,6.143v1.714c0,1.42-1.151,2.571-2.571,2.571
c-1.42,0-2.571-1.151-2.571-2.571V6.143H3.571v1.714c0,1.597,1.093,2.935,2.571,3.316v0.97H5.714c-0.56,0-1.034,0.358-1.211,0.857
h4.993c-0.177-0.499-0.651-0.857-1.211-0.857H7.857v-0.97c1.478-0.381,2.571-1.719,2.571-3.316V6.143H9.571z M7,10
c1.183,0,2.143-0.959,2.143-2.143V3.143C9.143,1.959,8.183,1,7,1C5.817,1,4.857,1.959,4.857,3.143v4.714C4.857,9.041,5.817,10,7,10
z"/>
<g id="facemute-shape">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.174,3.551L9.568,5.856V5.847L3.39,11.49h5.066
c0.613,0,1.111-0.533,1.111-1.19V8.526l2.606,2.304C12.4,11.071,12.71,11.142,13,11.078V3.302C12.71,3.239,12.4,3.309,12.174,3.551
z"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.395,2.617l-0.001-0.001l-0.809-0.884l-2.102,1.92
C9.316,3.221,8.919,2.918,8.457,2.918H2.111C1.498,2.918,1,3.451,1,4.109v6.191c0,0.318,0.118,0.607,0.306,0.821l-0.288,0.263
l0.809,0.884l0.001,0.001l0.853-0.779l6.887-6.29L12.395,2.617z"/>
</g>
<path id="hangup-shape" fill-rule="evenodd" clip-rule="evenodd" d="M13,11.732c-0.602,0.52-1.254,0.946-1.941,1.267
c-1.825-0.337-4.164-1.695-6.264-3.795C2.696,7.106,1.339,4.769,1,2.945c0.321-0.688,0.748-1.341,1.268-1.944l2.528,2.855
C4.579,4.153,4.377,4.454,4.209,4.759L4.22,4.77C3.924,5.42,4.608,6.833,5.889,8.114c1.281,1.28,2.694,1.965,3.343,1.669
l0.011,0.011c0.305-0.168,0.606-0.37,0.904-0.587L13,11.732z"/>
<path id="incoming-shape" fill-rule="evenodd" clip-rule="evenodd" d="M2.745,7.558l0.637,0.669c0.04,0.041,0.085,0.073,0.134,0.1
l3.249,3.313c0.38,0.393,0.915,0.478,1.197,0.186l0.638-0.676c0.281-0.292,0.2-0.848-0.18-1.244L7.097,8.558h3.566
c0.419,0,0.759-0.34,0.759-0.759V6.28c0-0.419-0.34-0.759-0.759-0.759H7.059l1.42-1.443c0.381-0.392,0.461-0.945,0.18-1.234
l-0.637-0.67C7.74,1.883,7.204,1.966,6.824,2.359L3.55,5.688C3.487,5.717,3.43,5.755,3.381,5.806L2.745,6.482
c-0.131,0.137-0.183,0.332-0.162,0.54C2.562,7.229,2.613,7.423,2.745,7.558z"/>
<path id="link-shape" fill-rule="evenodd" clip-rule="evenodd" d="M7.359,6.107c0.757-0.757,0.757-1.995,0-2.752
L5.573,1.568c-0.757-0.757-1.995-0.757-2.752,0L1.568,2.82c-0.757,0.757-0.757,1.995,0,2.752l1.787,1.787
c0.757,0.757,1.995,0.757,2.752,0L6.266,7.2L6.8,7.734L6.641,7.893c-0.757,0.757-0.757,1.995,0,2.752l1.787,1.787
c0.757,0.757,1.995,0.757,2.752,0l1.253-1.253c0.757-0.757,0.757-1.995,0-2.752l-1.787-1.787c-0.757-0.757-1.995-0.757-2.752,0
L7.734,6.8L7.2,6.266L7.359,6.107z M9.87,7.868l1.335,1.335c0.294,0.294,0.294,0.774,0,1.068l-0.934,0.934
c-0.294,0.294-0.774,0.294-1.068,0L7.868,9.87c-0.294-0.294-0.294-0.774,0-1.068L8.13,9.064c0.294,0.294,0.744,0.324,1.001,0.067
C9.388,8.874,9.358,8.424,9.064,8.13L8.802,7.868C9.096,7.574,9.577,7.574,9.87,7.868z M4.13,6.132L2.795,4.797
c-0.294-0.294-0.294-0.774,0-1.068l0.934-0.934c0.294-0.294,0.774-0.294,1.068,0L6.132,4.13c0.294,0.294,0.294,0.774,0,1.068
L5.86,4.926C5.567,4.632,5.116,4.602,4.859,4.859C4.602,5.116,4.632,5.567,4.926,5.86l0.272,0.272
C4.904,6.426,4.423,6.426,4.13,6.132z"/>
<g id="mute-shape">
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.186,9.492L5.49,9.188l3.822-3.822l2.354-2.354l-0.848-0.848
L9.312,3.669V3.142C9.312,1.959,8.352,1,7.169,1C5.986,1,5.026,1.959,5.026,3.142v4.715c0,0.032,0.001,0.064,0.002,0.096
L4.643,8.338c-0.03-0.156-0.046-0.317-0.046-0.481V6.142H3.741v1.715c0,0.414,0.073,0.81,0.208,1.176l-1.615,1.615l0.848,0.848
l1.398-1.398v0L5.186,9.492z"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.312,7.857V6.045L5.829,9.528C6.196,9.824,6.662,10,7.169,10
C8.352,10,9.312,9.04,9.312,7.857z"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.741,7.857c0,1.42-1.151,2.572-2.572,2.572
c-0.625,0-1.199-0.223-1.645-0.595l-0.605,0.605c0.395,0.344,0.87,0.599,1.393,0.734v0.97H5.884c-0.56,0-1.034,0.359-1.212,0.858
h4.994c-0.178-0.499-0.652-0.858-1.212-0.858H8.026v-0.97c1.478-0.38,2.572-1.718,2.572-3.316V6.142H9.741V7.857z"/>
</g>
<path id="pause-shape" fill-rule="evenodd" clip-rule="evenodd" d="M4.75,1h-1.5C2.836,1,2.5,1.336,2.5,1.75v10.5
C2.5,12.664,2.836,13,3.25,13h1.5c0.414,0,0.75-0.336,0.75-0.75V1.75C5.5,1.336,5.164,1,4.75,1z M10.75,1h-1.5
C8.836,1,8.5,1.336,8.5,1.75v10.5C8.5,12.664,8.836,13,9.25,13h1.5c0.414,0,0.75-0.336,0.75-0.75V1.75C11.5,1.336,11.164,1,10.75,1
z"/>
<path id="video-shape" fill-rule="evenodd" clip-rule="evenodd" d="M12.175,3.347L9.568,5.651V3.905c0-0.657-0.497-1.19-1.111-1.19
H2.111C1.498,2.714,1,3.247,1,3.905v6.191c0,0.658,0.498,1.19,1.111,1.19h6.345c0.614,0,1.111-0.533,1.111-1.19V8.322l2.607,2.305
C12.4,10.867,12.71,10.938,13,10.874V3.099C12.71,3.035,12.4,3.106,12.175,3.347z"/>
<g id="volume-shape">
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.513,4.404H1.896c-0.417,0-0.756,0.338-0.756,0.755v3.679
c0,0.417,0.338,0.755,0.756,0.755H3.51l2.575,2.575c0.261,0.261,0.596,0.4,0.938,0.422V1.409C6.682,1.431,6.346,1.57,6.085,1.831
L3.513,4.404z M8.555,5.995C8.619,6.32,8.653,6.656,8.653,7c0,0.344-0.034,0.679-0.098,1.004l0.218,0.142
C8.852,7.777,8.895,7.393,8.895,7c0-0.394-0.043-0.777-0.123-1.147L8.555,5.995z M12.224,3.6l-0.475,0.31
c0.359,0.962,0.557,2.003,0.557,3.09c0,1.087-0.198,2.128-0.557,3.09l0.475,0.31c0.41-1.054,0.635-2.201,0.635-3.4
C12.859,5.8,12.634,4.654,12.224,3.6z M10.061,5.012C10.25,5.642,10.353,6.308,10.353,7c0,0.691-0.103,1.358-0.293,1.987
l0.351,0.229C10.634,8.517,10.756,7.772,10.756,7c0-0.773-0.121-1.517-0.345-2.216L10.061,5.012z"/>
<path d="M7.164,12.74l-0.15-0.009c-0.389-0.024-0.754-0.189-1.028-0.463L3.452,9.735H1.896
C1.402,9.735,1,9.333,1,8.838V5.16c0-0.494,0.402-0.896,0.896-0.896h1.558l2.531-2.531C6.26,1.458,6.625,1.293,7.014,1.269
l0.15-0.009V12.74z M1.896,4.545c-0.339,0-0.615,0.276-0.615,0.615v3.679c0,0.339,0.276,0.615,0.615,0.615h1.672l2.616,2.616
c0.19,0.19,0.434,0.316,0.697,0.363V1.568C6.619,1.615,6.375,1.741,6.185,1.931L3.571,4.545H1.896z M12.292,10.612l-0.714-0.467
l0.039-0.105C11.981,9.067,12.165,8.044,12.165,7c0-1.044-0.184-2.067-0.548-3.041l-0.039-0.105l0.714-0.467l0.063,0.162
C12.783,4.649,13,5.81,13,7s-0.217,2.351-0.645,3.451L12.292,10.612z M11.92,10.033l0.234,0.153
c0.374-1.019,0.564-2.09,0.564-3.186s-0.19-2.167-0.564-3.186L11.92,3.966C12.27,4.94,12.447,5.96,12.447,7
C12.447,8.04,12.27,9.059,11.92,10.033z M10.489,9.435L9.895,9.047l0.031-0.101C10.116,8.315,10.212,7.66,10.212,7
c0-0.661-0.096-1.316-0.287-1.947L9.895,4.952l0.594-0.388l0.056,0.176C10.779,5.471,10.897,6.231,10.897,7
c0,0.769-0.118,1.529-0.351,2.259L10.489,9.435z M10.225,8.926l0.106,0.069C10.52,8.348,10.615,7.677,10.615,7
c0-0.677-0.095-1.348-0.284-1.996l-0.106,0.07C10.403,5.699,10.494,6.347,10.494,7C10.494,7.652,10.403,8.3,10.225,8.926z
M8.867,8.376L8.398,8.07l0.018-0.093C8.48,7.654,8.512,7.325,8.512,7S8.48,6.345,8.417,6.022L8.398,5.929l0.469-0.306l0.043,0.2
C8.994,6.211,9.036,6.607,9.036,7c0,0.393-0.042,0.789-0.126,1.176L8.867,8.376z"/>
</g>
</defs>
<use id="audio" xlink:href="#audio-shape"/>
<use id="audio-active" xlink:href="#audio-shape"/>
<use id="audio-disabled" xlink:href="#audio-shape"/>
<use id="facemute" xlink:href="#facemute-shape"/>
<use id="facemute-active" xlink:href="#facemute-shape"/>
<use id="facemute-disabled" xlink:href="#facemute-shape"/>
<use id="hangup" xlink:href="#hangup-shape"/>
<use id="hangup-active" xlink:href="#hangup-shape"/>
<use id="hangup-disabled" xlink:href="#hangup-shape"/>
<use id="incoming" xlink:href="#incoming-shape"/>
<use id="incoming-active" xlink:href="#incoming-shape"/>
<use id="incoming-disabled" xlink:href="#incoming-shape"/>
<use id="link" xlink:href="#link-shape"/>
<use id="link-active" xlink:href="#link-shape"/>
<use id="link-disabled" xlink:href="#link-shape"/>
<use id="mute" xlink:href="#mute-shape"/>
<use id="mute-active" xlink:href="#mute-shape"/>
<use id="mute-disabled" xlink:href="#mute-shape"/>
<use id="pause" xlink:href="#pause-shape"/>
<use id="pause-active" xlink:href="#pause-shape"/>
<use id="pause-disabled" xlink:href="#pause-shape"/>
<use id="video" xlink:href="#video-shape"/>
<use id="video-white" xlink:href="#video-shape"/>
<use id="video-active" xlink:href="#video-shape"/>
<use id="video-disabled" xlink:href="#video-shape"/>
<use id="volume" xlink:href="#volume-shape"/>
<use id="volume-active" xlink:href="#volume-shape"/>
<use id="volume-disabled" xlink:href="#volume-shape"/>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 14 14">
<style>
use:not(:target) {
display: none;
}
use {
fill: #ccc;
}
use[id$="-hover"] {
fill: #444;
}
use[id$="-active"] {
fill: #0095dd;
}
use[id$="-white"] {
fill: #fff;
}
</style>
<defs>
<path id="audio-shape" fill-rule="evenodd" d="M9.571,6.143v1.714c0,1.42-1.151,2.571-2.571,2.571 c-1.42,0-2.571-1.151-2.571-2.571V6.143H3.571v1.714c0,1.597,1.093,2.935,2.571,3.316v0.97H5.714c-0.56,0-1.034,0.358-1.211,0.857 h4.993c-0.177-0.499-0.651-0.857-1.211-0.857H7.857v-0.97c1.478-0.381,2.571-1.719,2.571-3.316V6.143H9.571z M7,10 c1.183,0,2.143-0.959,2.143-2.143V3.143C9.143,1.959,8.183,1,7,1C5.817,1,4.857,1.959,4.857,3.143v4.714C4.857,9.041,5.817,10,7,10 z"/>
<g id="facemute-shape">
<path fill-rule="evenodd" d="M12.174,3.551L9.568,5.856V5.847L3.39,11.49h5.066 c0.613,0,1.111-0.533,1.111-1.19V8.526l2.606,2.304C12.4,11.071,12.71,11.142,13,11.078V3.302C12.71,3.239,12.4,3.309,12.174,3.551 z"/>
<path fill-rule="evenodd" d="M12.395,2.617l-0.001-0.001l-0.809-0.884l-2.102,1.92 C9.316,3.221,8.919,2.918,8.457,2.918H2.111C1.498,2.918,1,3.451,1,4.109v6.191c0,0.318,0.118,0.607,0.306,0.821l-0.288,0.263 l0.809,0.884l0.001,0.001l0.853-0.779l6.887-6.29L12.395,2.617z"/>
</g>
<path id="hangup-shape" fill-rule="evenodd" d="M13,11.732c-0.602,0.52-1.254,0.946-1.941,1.267 c-1.825-0.337-4.164-1.695-6.264-3.795C2.696,7.106,1.339,4.769,1,2.945c0.321-0.688,0.748-1.341,1.268-1.944l2.528,2.855 C4.579,4.153,4.377,4.454,4.209,4.759L4.22,4.77C3.924,5.42,4.608,6.833,5.889,8.114c1.281,1.28,2.694,1.965,3.343,1.669 l0.011,0.011c0.305-0.168,0.606-0.37,0.904-0.587L13,11.732z"/>
<path id="incoming-shape" fill-rule="evenodd" d="M2.745,7.558l0.637,0.669c0.04,0.041,0.085,0.073,0.134,0.1 l3.249,3.313c0.38,0.393,0.915,0.478,1.197,0.186l0.638-0.676c0.281-0.292,0.2-0.848-0.18-1.244L7.097,8.558h3.566 c0.419,0,0.759-0.34,0.759-0.759V6.28c0-0.419-0.34-0.759-0.759-0.759H7.059l1.42-1.443c0.381-0.392,0.461-0.945,0.18-1.234 l-0.637-0.67C7.74,1.883,7.204,1.966,6.824,2.359L3.55,5.688C3.487,5.717,3.43,5.755,3.381,5.806L2.745,6.482 c-0.131,0.137-0.183,0.332-0.162,0.54C2.562,7.229,2.613,7.423,2.745,7.558z"/>
<path id="link-shape" fill-rule="evenodd" d="M7.359,6.107c0.757-0.757,0.757-1.995,0-2.752 L5.573,1.568c-0.757-0.757-1.995-0.757-2.752,0L1.568,2.82c-0.757,0.757-0.757,1.995,0,2.752l1.787,1.787 c0.757,0.757,1.995,0.757,2.752,0L6.266,7.2L6.8,7.734L6.641,7.893c-0.757,0.757-0.757,1.995,0,2.752l1.787,1.787 c0.757,0.757,1.995,0.757,2.752,0l1.253-1.253c0.757-0.757,0.757-1.995,0-2.752l-1.787-1.787c-0.757-0.757-1.995-0.757-2.752,0 L7.734,6.8L7.2,6.266L7.359,6.107z M9.87,7.868l1.335,1.335c0.294,0.294,0.294,0.774,0,1.068l-0.934,0.934 c-0.294,0.294-0.774,0.294-1.068,0L7.868,9.87c-0.294-0.294-0.294-0.774,0-1.068L8.13,9.064c0.294,0.294,0.744,0.324,1.001,0.067 C9.388,8.874,9.358,8.424,9.064,8.13L8.802,7.868C9.096,7.574,9.577,7.574,9.87,7.868z M4.13,6.132L2.795,4.797 c-0.294-0.294-0.294-0.774,0-1.068l0.934-0.934c0.294-0.294,0.774-0.294,1.068,0L6.132,4.13c0.294,0.294,0.294,0.774,0,1.068 L5.86,4.926C5.567,4.632,5.116,4.602,4.859,4.859C4.602,5.116,4.632,5.567,4.926,5.86l0.272,0.272 C4.904,6.426,4.423,6.426,4.13,6.132z"/>
<g id="mute-shape">
<path fill-rule="evenodd" d="M5.186,9.492L5.49,9.188l3.822-3.822l2.354-2.354l-0.848-0.848 L9.312,3.669V3.142C9.312,1.959,8.352,1,7.169,1C5.986,1,5.026,1.959,5.026,3.142v4.715c0,0.032,0.001,0.064,0.002,0.096 L4.643,8.338c-0.03-0.156-0.046-0.317-0.046-0.481V6.142H3.741v1.715c0,0.414,0.073,0.81,0.208,1.176l-1.615,1.615l0.848,0.848 l1.398-1.398v0L5.186,9.492z"/>
<path fill-rule="evenodd" d="M9.312,7.857V6.045L5.829,9.528C6.196,9.824,6.662,10,7.169,10 C8.352,10,9.312,9.04,9.312,7.857z"/>
<path fill-rule="evenodd" d="M9.741,7.857c0,1.42-1.151,2.572-2.572,2.572 c-0.625,0-1.199-0.223-1.645-0.595l-0.605,0.605c0.395,0.344,0.87,0.599,1.393,0.734v0.97H5.884c-0.56,0-1.034,0.359-1.212,0.858 h4.994c-0.178-0.499-0.652-0.858-1.212-0.858H8.026v-0.97c1.478-0.38,2.572-1.718,2.572-3.316V6.142H9.741V7.857z"/>
</g>
<path id="pause-shape" fill-rule="evenodd" d="M4.75,1h-1.5C2.836,1,2.5,1.336,2.5,1.75v10.5 C2.5,12.664,2.836,13,3.25,13h1.5c0.414,0,0.75-0.336,0.75-0.75V1.75C5.5,1.336,5.164,1,4.75,1z M10.75,1h-1.5 C8.836,1,8.5,1.336,8.5,1.75v10.5C8.5,12.664,8.836,13,9.25,13h1.5c0.414,0,0.75-0.336,0.75-0.75V1.75C11.5,1.336,11.164,1,10.75,1 z"/>
<path id="video-shape" fill-rule="evenodd" d="M12.175,3.347L9.568,5.651V3.905c0-0.657-0.497-1.19-1.111-1.19 H2.111C1.498,2.714,1,3.247,1,3.905v6.191c0,0.658,0.498,1.19,1.111,1.19h6.345c0.614,0,1.111-0.533,1.111-1.19V8.322l2.607,2.305 C12.4,10.867,12.71,10.938,13,10.874V3.099C12.71,3.035,12.4,3.106,12.175,3.347z"/>
<g id="volume-shape">
<path fill-rule="evenodd" d="M3.513,4.404H1.896c-0.417,0-0.756,0.338-0.756,0.755v3.679 c0,0.417,0.338,0.755,0.756,0.755H3.51l2.575,2.575c0.261,0.261,0.596,0.4,0.938,0.422V1.409C6.682,1.431,6.346,1.57,6.085,1.831 L3.513,4.404z M8.555,5.995C8.619,6.32,8.653,6.656,8.653,7c0,0.344-0.034,0.679-0.098,1.004l0.218,0.142 C8.852,7.777,8.895,7.393,8.895,7c0-0.394-0.043-0.777-0.123-1.147L8.555,5.995z M12.224,3.6l-0.475,0.31 c0.359,0.962,0.557,2.003,0.557,3.09c0,1.087-0.198,2.128-0.557,3.09l0.475,0.31c0.41-1.054,0.635-2.201,0.635-3.4 C12.859,5.8,12.634,4.654,12.224,3.6z M10.061,5.012C10.25,5.642,10.353,6.308,10.353,7c0,0.691-0.103,1.358-0.293,1.987 l0.351,0.229C10.634,8.517,10.756,7.772,10.756,7c0-0.773-0.121-1.517-0.345-2.216L10.061,5.012z"/>
<path d="M7.164,12.74l-0.15-0.009c-0.389-0.024-0.754-0.189-1.028-0.463L3.452,9.735H1.896 C1.402,9.735,1,9.333,1,8.838V5.16c0-0.494,0.402-0.896,0.896-0.896h1.558l2.531-2.531C6.26,1.458,6.625,1.293,7.014,1.269 l0.15-0.009V12.74z M1.896,4.545c-0.339,0-0.615,0.276-0.615,0.615v3.679c0,0.339,0.276,0.615,0.615,0.615h1.672l2.616,2.616 c0.19,0.19,0.434,0.316,0.697,0.363V1.568C6.619,1.615,6.375,1.741,6.185,1.931L3.571,4.545H1.896z M12.292,10.612l-0.714-0.467 l0.039-0.105C11.981,9.067,12.165,8.044,12.165,7c0-1.044-0.184-2.067-0.548-3.041l-0.039-0.105l0.714-0.467l0.063,0.162 C12.783,4.649,13,5.81,13,7s-0.217,2.351-0.645,3.451L12.292,10.612z M11.92,10.033l0.234,0.153 c0.374-1.019,0.564-2.09,0.564-3.186s-0.19-2.167-0.564-3.186L11.92,3.966C12.27,4.94,12.447,5.96,12.447,7 C12.447,8.04,12.27,9.059,11.92,10.033z M10.489,9.435L9.895,9.047l0.031-0.101C10.116,8.315,10.212,7.66,10.212,7 c0-0.661-0.096-1.316-0.287-1.947L9.895,4.952l0.594-0.388l0.056,0.176C10.779,5.471,10.897,6.231,10.897,7 c0,0.769-0.118,1.529-0.351,2.259L10.489,9.435z M10.225,8.926l0.106,0.069C10.52,8.348,10.615,7.677,10.615,7 c0-0.677-0.095-1.348-0.284-1.996l-0.106,0.07C10.403,5.699,10.494,6.347,10.494,7C10.494,7.652,10.403,8.3,10.225,8.926z M8.867,8.376L8.398,8.07l0.018-0.093C8.48,7.654,8.512,7.325,8.512,7S8.48,6.345,8.417,6.022L8.398,5.929l0.469-0.306l0.043,0.2 C8.994,6.211,9.036,6.607,9.036,7c0,0.393-0.042,0.789-0.126,1.176L8.867,8.376z"/>
</g>
</defs>
<use id="audio" xlink:href="#audio-shape"/>
<use id="audio-active" xlink:href="#audio-shape"/>
<use id="audio-disabled" xlink:href="#audio-shape"/>
<use id="facemute" xlink:href="#facemute-shape"/>
<use id="facemute-active" xlink:href="#facemute-shape"/>
<use id="facemute-disabled" xlink:href="#facemute-shape"/>
<use id="hangup" xlink:href="#hangup-shape"/>
<use id="hangup-active" xlink:href="#hangup-shape"/>
<use id="hangup-disabled" xlink:href="#hangup-shape"/>
<use id="incoming" xlink:href="#incoming-shape"/>
<use id="incoming-active" xlink:href="#incoming-shape"/>
<use id="incoming-disabled" xlink:href="#incoming-shape"/>
<use id="link" xlink:href="#link-shape"/>
<use id="link-active" xlink:href="#link-shape"/>
<use id="link-disabled" xlink:href="#link-shape"/>
<use id="mute" xlink:href="#mute-shape"/>
<use id="mute-active" xlink:href="#mute-shape"/>
<use id="mute-disabled" xlink:href="#mute-shape"/>
<use id="pause" xlink:href="#pause-shape"/>
<use id="pause-active" xlink:href="#pause-shape"/>
<use id="pause-disabled" xlink:href="#pause-shape"/>
<use id="video" xlink:href="#video-shape"/>
<use id="video-white" xlink:href="#video-shape"/>
<use id="video-active" xlink:href="#video-shape"/>
<use id="video-disabled" xlink:href="#video-shape"/>
<use id="volume" xlink:href="#volume-shape"/>
<use id="volume-active" xlink:href="#volume-shape"/>
<use id="volume-disabled" xlink:href="#volume-shape"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 9.2 KiB

После

Ширина:  |  Высота:  |  Размер: 8.5 KiB

Просмотреть файл

@ -2,222 +2,131 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
x="0px" y="0px"
viewBox="0 0 16 16"
enable-background="new 0 0 16 16"
xml:space="preserve">
<style>
use:not(:target) {
display: none;
}
use {
fill: #ccc;
}
use[id$="-hover"] {
fill: #444;
}
use[id$="-active"] {
fill: #0095dd;
}
use[id$="-red"] {
fill: #d74345
}
use[id$="-white"] {
fill: #fff;
}
use[id$="-darkgrey"] {
fill: #666;
}
use[id$="-disabled"] {
fill: rgba(255,255,255,.6);
}
</style>
<defs style="display:none">
<polygon id="add-shape" fill-rule="evenodd" clip-rule="evenodd" points="16,6.4 9.6,6.4 9.6,0 6.4,0 6.4,6.4 0,6.4 0,9.6
6.4,9.6 6.4,16 9.6,16 9.6,9.6 16,9.6"/>
<path id="audio-shape" fill-rule="evenodd" clip-rule="evenodd" d="M11.429,6.857v2.286c0,1.894-1.535,3.429-3.429,3.429
c-1.894,0-3.429-1.535-3.429-3.429V6.857H3.429v2.286c0,2.129,1.458,3.913,3.429,4.422v1.293H6.286
c-0.746,0-1.379,0.477-1.615,1.143h6.658c-0.236-0.665-0.869-1.143-1.615-1.143H9.143v-1.293c1.971-0.508,3.429-2.292,3.429-4.422
V6.857H11.429z M8,12c1.578,0,2.857-1.279,2.857-2.857V2.857C10.857,1.279,9.578,0,8,0C6.422,0,5.143,1.279,5.143,2.857v6.286
C5.143,10.721,6.422,12,8,12z"/>
<path id="block-shape" fill-rule="evenodd" clip-rule="evenodd" d="M8,0C3.582,0,0,3.582,0,8c0,4.418,3.582,8,8,8
c4.418,0,8-3.582,8-8C16,3.582,12.418,0,8,0z M8,2.442c1.073,0,2.075,0.301,2.926,0.821l-7.673,7.673
C2.718,10.085,2.408,9.079,2.408,8C2.408,4.931,4.911,2.442,8,2.442z M8,13.557c-1.073,0-2.075-0.301-2.926-0.821l7.673-7.673
C13.282,5.915,13.592,6.921,13.592,8C13.592,11.069,11.089,13.557,8,13.557z"/>
<path id="contacts-shape" fill-rule="evenodd" clip-rule="evenodd" d="M8,6.526c1.802,0,3.263-1.461,3.263-3.263
C11.263,1.461,9.802,0,8,0C6.198,0,4.737,1.461,4.737,3.263C4.737,5.066,6.198,6.526,8,6.526z M14.067,11.421c0,0,0-0.001,0-0.001
c0-1.676-1.397-3.119-3.419-3.807L8.001,10.26L5.354,7.613C3.331,8.3,1.933,9.744,1.933,11.42v0.001H1.93
c0,1.679,0.328,3.246,0.896,4.579h10.348c0.568-1.333,0.896-2.9,0.896-4.579H14.067z"/>
<g id="google-shape">
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.001,9.278c-0.9,0.03-1.989,0.454-2.144,1.274
c-0.292,1.54,1.284,2.004,2.455,1.932c1.097-0.067,1.737-0.593,1.813-1.26c0.063-0.554-0.184-1.153-0.959-1.644
c-0.142-0.09-0.28-0.185-0.413-0.282C8.504,9.291,8.25,9.27,8.001,9.278z"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.381,3.409C6.638,3.64,6.32,4.405,6.627,5.61
C6.908,6.708,7.78,7.322,8.569,7.104c0.77-0.213,0.987-1.021,0.847-1.873C9.201,3.929,8.261,3.136,7.381,3.409z"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8,0C3.582,0,0,3.582,0,8s3.582,8,8,8c4.418,0,8-3.582,8-8
S12.418,0,8,0z M10.544,4.471c0.17,0.453,0.194,0.954,0.021,1.416c-0.163,0.436-0.495,0.811-0.982,1.096
C9.307,7.146,9.167,7.351,9.151,7.548c-0.045,0.575,0.658,0.993,1.064,1.297c0.889,0.666,1.236,1.758,0.648,2.813
c-0.562,1.007-1.901,1.457-3.322,1.462c-1.766-0.008-2.88-0.817-2.938-1.918C4.527,9.779,5.987,9.101,7.307,8.947
c0.369-0.043,0.7-0.036,1.01-0.014C7.85,8.625,7.675,7.998,7.914,7.58c0.062-0.109,0.023-0.072-0.095-0.054
C6.739,7.689,5.628,6.985,5.367,5.92c-0.132-0.54-0.05-1.105,0.156-1.547C5.97,3.413,6.964,2.88,8.067,2.88
c1.147,0,2.209,0,3.334,0.009L10.612,3.4H9.714C10.093,3.665,10.384,4.046,10.544,4.471z"/>
</g>
<path id="history-shape" fill-rule="evenodd" clip-rule="evenodd" d="M8,16c-4.418,0-8-3.582-8-8c0-4.418,3.582-8,8-8
c4.418,0,8,3.582,8,8C16,12.418,12.418,16,8,16z M8,2.442C4.911,2.442,2.408,4.931,2.408,8c0,3.069,2.504,5.557,5.592,5.557
S13.592,11.069,13.592,8C13.592,4.931,11.089,2.442,8,2.442z M7.649,9.048C7.206,8.899,6.882,8.493,6.882,8V4.645
c0-0.618,0.501-1.119,1.118-1.119c0.618,0,1.119,0.501,1.119,1.119v3.078c1.176,1.22,2.237,3.633,2.237,3.633
S8.844,10.252,7.649,9.048z"/>
<path id="precall-shape" fill-rule="evenodd" clip-rule="evenodd" d="M8.014,0.003c-4.411,0-7.987,3.576-7.987,7.986
c0,1.642,0.496,3.168,1.346,4.437L0,15.997l3.568-1.372c1.271,0.853,2.8,1.352,4.446,1.352c4.411,0,7.986-3.576,7.986-7.987
C16,3.579,12.424,0.003,8.014,0.003z"/>
<path id="settings-shape" fill-rule="evenodd" clip-rule="evenodd" d="M14.77,8c0,0.804,0.262,1.548,0.634,1.678L16,9.887
c-0.205,0.874-0.553,1.692-1.011,2.434l-0.567-0.272c-0.355-0.171-1.066,0.17-1.635,0.738c-0.569,0.569-0.909,1.279-0.738,1.635
l0.273,0.568c-0.741,0.46-1.566,0.79-2.438,0.998l-0.205-0.584c-0.13-0.372-0.874-0.634-1.678-0.634s-1.548,0.262-1.678,0.634
l-0.209,0.596c-0.874-0.205-1.692-0.553-2.434-1.011l0.272-0.567c0.171-0.355-0.17-1.066-0.739-1.635
c-0.568-0.568-1.279-0.909-1.635-0.738l-0.568,0.273c-0.46-0.741-0.79-1.566-0.998-2.439l0.584-0.205
C0.969,9.547,1.231,8.804,1.231,8c0-0.804-0.262-1.548-0.634-1.678L0,6.112c0.206-0.874,0.565-1.685,1.025-2.427l0.554,0.266
c0.355,0.171,1.066-0.17,1.635-0.738c0.569-0.568,0.909-1.28,0.739-1.635L3.686,1.025c0.742-0.46,1.553-0.818,2.427-1.024
l0.209,0.596C6.453,0.969,7.197,1.23,8.001,1.23s1.548-0.262,1.678-0.634l0.209-0.596c0.874,0.205,1.692,0.553,2.434,1.011
l-0.272,0.567c-0.171,0.355,0.17,1.066,0.738,1.635c0.569,0.568,1.279,0.909,1.635,0.738l0.568-0.273
c0.46,0.741,0.79,1.566,0.998,2.438l-0.584,0.205C15.032,6.452,14.77,7.196,14.77,8z M8.001,3.661C5.604,3.661,3.661,5.603,3.661,8
c0,2.397,1.943,4.34,4.339,4.34c2.397,0,4.339-1.943,4.339-4.34C12.34,5.603,10.397,3.661,8.001,3.661z"/>
<g id="share-shape">
<path fill="transparent" d="M11.704,12.375H7.556c-0.183,0-0.353-0.071-0.48-0.199c-0.124-0.125-0.191-0.29-0.19-0.464V10.09h-2.59
c-0.37,0-0.671-0.296-0.671-0.661V4.286c0-0.365,0.301-0.661,0.671-0.661h3.384L7.817,3.73l1.299,1.254v0.927h1.851
l1.408,1.359v4.444C12.375,12.079,12.074,12.375,11.704,12.375z M7.635,11.625h3.989V7.588l-0.961-0.927H7.635V11.625z
M4.375,9.34h2.5V6.561c0-0.365,0.301-0.661,0.671-0.661h0.82V5.302L7.405,4.375h-3.03V9.34z"/>
<polygon fill="transparent" points="10.222,8 10.222,6.857 11.407,8"/>
<polygon fill="transparent" points="6.963,5.714 6.963,4.571 8.148,5.714"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.999,10.654L8.69,10.6L8.999,16l2.56-3.754L8.999,10.654z
M8.658,10.041l0.341-0.043l6,2.898V0L1,10.998l4.55-0.569L8.999,16l-1.892-5.68l-0.283-0.05l0.256-0.032L7,9.998l6.999-8.003
L8.656,9.998L8.658,10.041z"/>
</g>
<path id="tag-shape" fill-rule="evenodd" clip-rule="evenodd" d="M15.578,7.317L9.659,1.398
C9.374,1.033,8.955,0.777,8.471,0.761L2.556,0C1.72-0.027-0.027,1.72,0,2.556l0.761,5.916c0.016,0.484,0.272,0.902,0.637,1.188
l5.919,5.919c0.591,0.591,1.584,0.557,2.218-0.076l5.966-5.966C16.135,8.902,16.169,7.909,15.578,7.317z M4.222,4.163
c-0.511,0.511-1.339,0.511-1.85,0c-0.511-0.511-0.511-1.339,0-1.85c0.511-0.511,1.339-0.511,1.85,0
C4.733,2.823,4.733,3.652,4.222,4.163z"/>
<path id="unblock-shape" fill-rule="evenodd" clip-rule="evenodd" d="M8,16c-4.418,0-8-3.582-8-8c0-4.418,3.582-8,8-8
c4.418,0,8,3.582,8,8C16,12.418,12.418,16,8,16z M8,2.442C4.911,2.442,2.408,4.931,2.408,8c0,3.069,2.504,5.557,5.592,5.557
S13.592,11.069,13.592,8C13.592,4.931,11.089,2.442,8,2.442z"/>
<path id="video-shape" fill-rule="evenodd" clip-rule="evenodd" d="M14.9,3.129l-3.476,3.073V3.873c0-0.877-0.663-1.587-1.482-1.587
H1.482C0.663,2.286,0,2.996,0,3.873v8.254c0,0.877,0.663,1.587,1.482,1.587h8.461c0.818,0,1.482-0.711,1.482-1.587V9.762
l3.476,3.073c0.3,0.321,0.714,0.416,1.1,0.331V2.798C15.614,2.713,15.2,2.808,14.9,3.129z"/>
<g id="copy-shape">
<circle fill-rule="evenodd" clip-rule="evenodd" fill="#0096DD" cx="8" cy="8" r="8"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="none"
stroke="#FFFFFF" stroke-width="0.75" stroke-miterlimit="10"
d="M10.815,6.286H7.556c-0.164,0-0.296,0.128-0.296,0.286v5.143C7.259,11.872,7.392,12,7.556,12h4.148
C11.867,12,12,11.872,12,11.714V7.429L10.815,6.286z
M8.741,6.275V5.143L7.556,4H7.528C6.509,4,4.593,4,4.593,4H4.296
C4.133,4,4,4.128,4,4.286v5.143c0,0.158,0.133,0.286,0.296,0.286H7.25V6.561c0-0.158,0.133-0.286,0.296-0.286H8.741z"/>
<polygon fill-rule="evenodd" clip-rule="evenodd"
fill="#FFFFFF" points="10.222,8 10.222,6.857 11.407,8"/>
<polygon fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF"
points="6.963,5.714 6.963,4.571 8.148,5.714"/>
</g>
<g id="checkmark-shape">
<circle fill-rule="evenodd" clip-rule="evenodd" fill="#0096DD" cx="8"
cy="8" r="8"/>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#FFFFFF"
d="M7.236,12L12,5.007L10.956,4L7.224,9.465l-2.14-2.326L4,8.146L7.236,12z"/>
</g>
<g id="trash-shape">
<circle fill-rule="evenodd" clip-rule="evenodd" fill="#D74345" cx="8" cy="8" r="8"/>
<path fill="#FFFFFF" d="M12,5.79c0-0.742-0.537-1.344-1.2-1.344h-0.583V4.121c0-0.713-0.516-1.29-1.152-1.29h-2.13
c-0.636,0-1.152,0.578-1.152,1.29v0.324H5.2C4.537,4.446,4,5.048,4,5.79v0.898h0.687l0.508,5.438
c0.054,0.585,0.543,1.044,1.114,1.044h3.38c0.57,0,1.06-0.458,1.114-1.043l0.509-5.439H12V5.79z M6.407,4.264V4.165
c0-0.375,0.271-0.678,0.606-0.678h1.974c0.334,0,0.606,0.304,0.606,0.678v0.099c0,0.063-0.01,0.123-0.025,0.181H6.432
C6.417,4.387,6.407,4.328,6.407,4.264z M10.057,12.056c-0.019,0.197-0.188,0.363-0.368,0.363h-3.38
c-0.182,0-0.35-0.166-0.368-0.363L5.44,6.687h5.12L10.057,12.056z"/>
<rect x="7.75" y="7.542" fill="#FFFFFF" width="0.5" height="4"/>
<polyline fill="#FFFFFF" points="9.25,7.542 8.75,7.542 8.75,11.542 9.25,11.542 "/>
<rect x="6.75" y="7.542" fill="#FFFFFF" width="0.5" height="4"/>
</g>
<g id="leave-shape">
<polygon fill="#FFFFFF" points="2.08,11.52 2.08,4 8,4 8,2.24 0.32,2.24 0.32,13.28 8,13.28 8,11.52"/>
<polygon fill="#FFFFFF" points="15.66816,7.77344 9.6,2.27456 9.6,5.6 3.68,5.6 3.68,9.92 9.6,9.92 9.6,13.27232"/>
</g>
<path id="tour-shape" fill="#5A5A5A" d="M8,0C4.831,0,2.262,2.674,2.262,5.972c0,1.393,1.023,3.398,2.206,5.249l0.571,
0.866C6.504,14.245,8,16,8,16 s1.496-1.755,2.961-3.912l0.571-0.866c1.182-1.852,2.206-3.856,2.206-5.249C13.738,2.674,
11.169,0,8,0z M8,7.645 c-0.603,0-1.146-0.262-1.534-0.681C6.098,6.566,5.87,6.025,5.87,5.428c0-1.224,0.954-2.217,
2.13-2.217s2.13,0.992,2.13,2.217 C10.13,6.653,9.177,7.645,8,7.645z"/>
<g id="screen-shape">
<path d="M12.199,3.915v-0.4c0-0.837-0.65-1.515-1.452-1.515H2.452C1.65,2,1,2.678,1,3.515v6.242
c0,0.837,0.65,1.515,1.452,1.515h0.514V5.431c0-0.837,0.65-1.515,1.452-1.515H12.199z"/>
<path d="M13.548,4.727H5.253c-0.802,0-1.452,0.678-1.452,1.515v6.242c0,0.837,0.65,1.515,1.452,
1.515h8.294 C14.35,14,15,13.322,15,12.485V6.242C15,5.406,14.35,4.727,13.548,4.727z"/>
</g>
<g id="screenmute-shape">
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.55,4.73h-0.54l-8.13,8.13L4.2,13.53
C4.46,13.82,4.84,14,5.25,14h8.3c0.8,0,1.45-0.68,1.45-1.52V6.24C15,5.41,14.35,4.73,13.55,4.73z"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.21,2.72l-0.99-0.99l-1.15,1.15C11.83,2.36,11.33,2,10.75,2
h-8.3C1.65,2,1,2.68,1,3.52v6.24c0,0.83,0.65,1.51,1.45,1.51h0.52V5.43c0-0.84,0.65-1.51,1.45-1.51h6.61l-0.81,
0.81H5.25 c-0.8,0-1.45,0.68-1.45,1.51v4.91l-1.89,1.89l0.99,0.99l1-1l8.3-8.3L14.21,2.72z"/>
</g>
<g id="delete-shape">
<path fill="#CCCCCC" d="M14.191,4.579c0-1.149-0.832-2.08-1.857-2.08h-0.902V1.997C11.432,0.894,10.633,0,9.648,0H6.352
C5.367,0,4.568,0.894,4.568,1.997v0.502H3.666c-1.026,0-1.857,0.932-1.857,2.08v1.389h1.064l0.785,8.416
C3.742,15.29,4.499,16,5.383,16h5.231c0.883,0,1.64-0.709,1.724-1.614l0.788-8.417h1.064V4.579z M5.535,2.218V2.065
c0-0.58,0.42-1.05,0.938-1.05h3.055c0.518,0,0.937,0.47,0.937,1.05v0.153c0,0.098-0.016,0.191-0.038,0.281H5.573
C5.55,2.409,5.535,2.316,5.535,2.218z M11.184,14.277c-0.029,0.305-0.29,0.562-0.57,0.562H5.383c-0.281,0-0.541-0.257-0.57-0.562
L4.038,5.969h7.924L11.184,14.277z"/>
<rect x="7.612" y="7.291" fill="#CCCCCC" width="0.774" height="6.191"/>
<polyline fill="#CCCCCC" points="9.934,7.291 9.16,7.291 9.16,13.482 9.934,13.482 "/>
<rect x="6.065" y="7.291" fill="#CCCCCC" width="0.774" height="6.191"/>
</g>
</defs>
<use id="add" xlink:href="#add-shape"/>
<use id="add-hover" xlink:href="#add-shape"/>
<use id="add-active" xlink:href="#add-shape"/>
<use id="audio" xlink:href="#audio-shape"/>
<use id="audio-hover" xlink:href="#audio-shape"/>
<use id="audio-active" xlink:href="#audio-shape"/>
<use id="block" xlink:href="#block-shape"/>
<use id="block-red" xlink:href="#block-shape"/>
<use id="block-hover" xlink:href="#block-shape"/>
<use id="block-active" xlink:href="#block-shape"/>
<use id="contacts" xlink:href="#contacts-shape"/>
<use id="contacts-hover" xlink:href="#contacts-shape"/>
<use id="contacts-active" xlink:href="#contacts-shape"/>
<use id="copy" xlink:href="#copy-shape"/>
<use id="checkmark" xlink:href="#checkmark-shape"/>
<use id="google" xlink:href="#google-shape"/>
<use id="google-hover" xlink:href="#google-shape"/>
<use id="google-active" xlink:href="#google-shape"/>
<use id="history" xlink:href="#history-shape"/>
<use id="history-hover" xlink:href="#history-shape"/>
<use id="history-active" xlink:href="#history-shape"/>
<use id="leave" xlink:href="#leave-shape"/>
<use id="precall" xlink:href="#precall-shape"/>
<use id="precall-hover" xlink:href="#precall-shape"/>
<use id="precall-active" xlink:href="#precall-shape"/>
<use id="settings" xlink:href="#settings-shape"/>
<use id="settings-hover" xlink:href="#settings-shape"/>
<use id="settings-active" xlink:href="#settings-shape"/>
<use id="share-darkgrey" xlink:href="#share-shape"/>
<use id="tag" xlink:href="#tag-shape"/>
<use id="tag-hover" xlink:href="#tag-shape"/>
<use id="tag-active" xlink:href="#tag-shape"/>
<use id="trash" xlink:href="#trash-shape"/>
<use id="unblock" xlink:href="#unblock-shape"/>
<use id="unblock-hover" xlink:href="#unblock-shape"/>
<use id="unblock-active" xlink:href="#unblock-shape"/>
<use id="video" xlink:href="#video-shape"/>
<use id="video-hover" xlink:href="#video-shape"/>
<use id="video-active" xlink:href="#video-shape"/>
<use id="tour" xlink:href="#tour-shape"/>
<use id="screen-white" xlink:href="#screen-shape"/>
<use id="screen-disabled" xlink:href="#screen-shape"/>
<use id="screenmute-white" xlink:href="#screenmute-shape"/>
<use id="delete" xlink:href="#delete-shape"/>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 16 16">
<style>
use:not(:target) {
display: none;
}
use {
fill: #ccc;
}
use[id$="-hover"] {
fill: #444;
}
use[id$="-active"] {
fill: #0095dd;
}
use[id$="-red"] {
fill: #d74345
}
use[id$="-white"] {
fill: #fff;
}
use[id$="-darkgrey"] {
fill: #666;
}
use[id$="-disabled"] {
fill: rgba(255,255,255,.6);
}
</style>
<defs>
<polygon id="add-shape" points="16,6.4 9.6,6.4 9.6,0 6.4,0 6.4,6.4 0,6.4 0,9.6 6.4,9.6 6.4,16 9.6,16 9.6,9.6 16,9.6"/>
<path id="audio-shape" fill-rule="evenodd" d="M11.429,6.857v2.286c0,1.894-1.535,3.429-3.429,3.429 c-1.894,0-3.429-1.535-3.429-3.429V6.857H3.429v2.286c0,2.129,1.458,3.913,3.429,4.422v1.293H6.286 c-0.746,0-1.379,0.477-1.615,1.143h6.658c-0.236-0.665-0.869-1.143-1.615-1.143H9.143v-1.293c1.971-0.508,3.429-2.292,3.429-4.422 V6.857H11.429z M8,12c1.578,0,2.857-1.279,2.857-2.857V2.857C10.857,1.279,9.578,0,8,0C6.422,0,5.143,1.279,5.143,2.857v6.286 C5.143,10.721,6.422,12,8,12z"/>
<path id="block-shape" fill-rule="evenodd" d="M8,0C3.582,0,0,3.582,0,8c0,4.418,3.582,8,8,8 c4.418,0,8-3.582,8-8C16,3.582,12.418,0,8,0z M8,2.442c1.073,0,2.075,0.301,2.926,0.821l-7.673,7.673 C2.718,10.085,2.408,9.079,2.408,8C2.408,4.931,4.911,2.442,8,2.442z M8,13.557c-1.073,0-2.075-0.301-2.926-0.821l7.673-7.673 C13.282,5.915,13.592,6.921,13.592,8C13.592,11.069,11.089,13.557,8,13.557z"/>
<path id="contacts-shape" fill-rule="evenodd" d="M8,6.526c1.802,0,3.263-1.461,3.263-3.263 C11.263,1.461,9.802,0,8,0C6.198,0,4.737,1.461,4.737,3.263C4.737,5.066,6.198,6.526,8,6.526z M14.067,11.421c0,0,0-0.001,0-0.001 c0-1.676-1.397-3.119-3.419-3.807L8.001,10.26L5.354,7.613C3.331,8.3,1.933,9.744,1.933,11.42v0.001H1.93 c0,1.679,0.328,3.246,0.896,4.579h10.348c0.568-1.333,0.896-2.9,0.896-4.579H14.067z"/>
<g id="google-shape">
<path fill-rule="evenodd" d="M8.001,9.278c-0.9,0.03-1.989,0.454-2.144,1.274 c-0.292,1.54,1.284,2.004,2.455,1.932c1.097-0.067,1.737-0.593,1.813-1.26c0.063-0.554-0.184-1.153-0.959-1.644 c-0.142-0.09-0.28-0.185-0.413-0.282C8.504,9.291,8.25,9.27,8.001,9.278z"/>
<path fill-rule="evenodd" d="M7.381,3.409C6.638,3.64,6.32,4.405,6.627,5.61 C6.908,6.708,7.78,7.322,8.569,7.104c0.77-0.213,0.987-1.021,0.847-1.873C9.201,3.929,8.261,3.136,7.381,3.409z"/>
<path fill-rule="evenodd" d="M8,0C3.582,0,0,3.582,0,8s3.582,8,8,8c4.418,0,8-3.582,8-8 S12.418,0,8,0z M10.544,4.471c0.17,0.453,0.194,0.954,0.021,1.416c-0.163,0.436-0.495,0.811-0.982,1.096 C9.307,7.146,9.167,7.351,9.151,7.548c-0.045,0.575,0.658,0.993,1.064,1.297c0.889,0.666,1.236,1.758,0.648,2.813 c-0.562,1.007-1.901,1.457-3.322,1.462c-1.766-0.008-2.88-0.817-2.938-1.918C4.527,9.779,5.987,9.101,7.307,8.947 c0.369-0.043,0.7-0.036,1.01-0.014C7.85,8.625,7.675,7.998,7.914,7.58c0.062-0.109,0.023-0.072-0.095-0.054 C6.739,7.689,5.628,6.985,5.367,5.92c-0.132-0.54-0.05-1.105,0.156-1.547C5.97,3.413,6.964,2.88,8.067,2.88 c1.147,0,2.209,0,3.334,0.009L10.612,3.4H9.714C10.093,3.665,10.384,4.046,10.544,4.471z"/>
</g>
<path id="history-shape" fill-rule="evenodd" d="M8,16c-4.418,0-8-3.582-8-8c0-4.418,3.582-8,8-8 c4.418,0,8,3.582,8,8C16,12.418,12.418,16,8,16z M8,2.442C4.911,2.442,2.408,4.931,2.408,8c0,3.069,2.504,5.557,5.592,5.557 S13.592,11.069,13.592,8C13.592,4.931,11.089,2.442,8,2.442z M7.649,9.048C7.206,8.899,6.882,8.493,6.882,8V4.645 c0-0.618,0.501-1.119,1.118-1.119c0.618,0,1.119,0.501,1.119,1.119v3.078c1.176,1.22,2.237,3.633,2.237,3.633 S8.844,10.252,7.649,9.048z"/>
<path id="precall-shape" fill-rule="evenodd" d="M8.014,0.003c-4.411,0-7.987,3.576-7.987,7.986 c0,1.642,0.496,3.168,1.346,4.437L0,15.997l3.568-1.372c1.271,0.853,2.8,1.352,4.446,1.352c4.411,0,7.986-3.576,7.986-7.987 C16,3.579,12.424,0.003,8.014,0.003z"/>
<path id="settings-shape" fill-rule="evenodd" d="M14.77,8c0,0.804,0.262,1.548,0.634,1.678L16,9.887 c-0.205,0.874-0.553,1.692-1.011,2.434l-0.567-0.272c-0.355-0.171-1.066,0.17-1.635,0.738c-0.569,0.569-0.909,1.279-0.738,1.635 l0.273,0.568c-0.741,0.46-1.566,0.79-2.438,0.998l-0.205-0.584c-0.13-0.372-0.874-0.634-1.678-0.634s-1.548,0.262-1.678,0.634 l-0.209,0.596c-0.874-0.205-1.692-0.553-2.434-1.011l0.272-0.567c0.171-0.355-0.17-1.066-0.739-1.635 c-0.568-0.568-1.279-0.909-1.635-0.738l-0.568,0.273c-0.46-0.741-0.79-1.566-0.998-2.439l0.584-0.205 C0.969,9.547,1.231,8.804,1.231,8c0-0.804-0.262-1.548-0.634-1.678L0,6.112c0.206-0.874,0.565-1.685,1.025-2.427l0.554,0.266 c0.355,0.171,1.066-0.17,1.635-0.738c0.569-0.568,0.909-1.28,0.739-1.635L3.686,1.025c0.742-0.46,1.553-0.818,2.427-1.024 l0.209,0.596C6.453,0.969,7.197,1.23,8.001,1.23s1.548-0.262,1.678-0.634l0.209-0.596c0.874,0.205,1.692,0.553,2.434,1.011 l-0.272,0.567c-0.171,0.355,0.17,1.066,0.738,1.635c0.569,0.568,1.279,0.909,1.635,0.738l0.568-0.273 c0.46,0.741,0.79,1.566,0.998,2.438l-0.584,0.205C15.032,6.452,14.77,7.196,14.77,8z M8.001,3.661C5.604,3.661,3.661,5.603,3.661,8 c0,2.397,1.943,4.34,4.339,4.34c2.397,0,4.339-1.943,4.339-4.34C12.34,5.603,10.397,3.661,8.001,3.661z"/>
<g id="share-shape">
<path fill-rule="evenodd" d="M8.999,10.654L8.69,10.6L8.999,16l2.56-3.754L8.999,10.654z M8.658,10.041l0.341-0.043l6,2.898V0L1,10.998l4.55-0.569L8.999,16l-1.892-5.68l-0.283-0.05l0.256-0.032L7,9.998l6.999-8.003 L8.656,9.998L8.658,10.041z"/>
</g>
<path id="tag-shape" fill-rule="evenodd" d="M15.578,7.317L9.659,1.398 C9.374,1.033,8.955,0.777,8.471,0.761L2.556,0C1.72-0.027-0.027,1.72,0,2.556l0.761,5.916c0.016,0.484,0.272,0.902,0.637,1.188 l5.919,5.919c0.591,0.591,1.584,0.557,2.218-0.076l5.966-5.966C16.135,8.902,16.169,7.909,15.578,7.317z M4.222,4.163 c-0.511,0.511-1.339,0.511-1.85,0c-0.511-0.511-0.511-1.339,0-1.85c0.511-0.511,1.339-0.511,1.85,0 C4.733,2.823,4.733,3.652,4.222,4.163z"/>
<path id="unblock-shape" fill-rule="evenodd" d="M8,16c-4.418,0-8-3.582-8-8c0-4.418,3.582-8,8-8 c4.418,0,8,3.582,8,8C16,12.418,12.418,16,8,16z M8,2.442C4.911,2.442,2.408,4.931,2.408,8c0,3.069,2.504,5.557,5.592,5.557 S13.592,11.069,13.592,8C13.592,4.931,11.089,2.442,8,2.442z"/>
<path id="video-shape" fill-rule="evenodd" d="M14.9,3.129l-3.476,3.073V3.873c0-0.877-0.663-1.587-1.482-1.587 H1.482C0.663,2.286,0,2.996,0,3.873v8.254c0,0.877,0.663,1.587,1.482,1.587h8.461c0.818,0,1.482-0.711,1.482-1.587V9.762 l3.476,3.073c0.3,0.321,0.714,0.416,1.1,0.331V2.798C15.614,2.713,15.2,2.808,14.9,3.129z"/>
<g id="copy-shape">
<circle fill="#0096dd" cx="8" cy="8" r="8"/>
<path fill-rule="evenodd" fill="none" stroke="#fff" stroke-width="0.75" stroke-miterlimit="10" d="M10.815,6.286H7.556c-0.164,0-0.296,0.128-0.296,0.286v5.143C7.259,11.872,7.392,12,7.556,12h4.148 C11.867,12,12,11.872,12,11.714V7.429L10.815,6.286z M8.741,6.275V5.143L7.556,4H7.528C6.509,4,4.593,4,4.593,4H4.296 C4.133,4,4,4.128,4,4.286v5.143c0,0.158,0.133,0.286,0.296,0.286H7.25V6.561c0-0.158,0.133-0.286,0.296-0.286H8.741z"/>
<polygon fill="#fff" points="10.222,8 10.222,6.857 11.407,8"/>
<polygon fill="#fff" points="6.963,5.714 6.963,4.571 8.148,5.714"/>
</g>
<g id="checkmark-shape">
<circle fill="#0096dd" cx="8" cy="8" r="8"/>
<path fill-rule="evenodd" fill="#fff" d="M7.236,12L12,5.007L10.956,4L7.224,9.465l-2.14-2.326L4,8.146L7.236,12z"/>
</g>
<g id="trash-shape">
<circle fill="#d74345" cx="8" cy="8" r="8"/>
<path fill="#fff" d="M12,5.79c0-0.742-0.537-1.344-1.2-1.344h-0.583V4.121c0-0.713-0.516-1.29-1.152-1.29h-2.13 c-0.636,0-1.152,0.578-1.152,1.29v0.324H5.2C4.537,4.446,4,5.048,4,5.79v0.898h0.687l0.508,5.438 c0.054,0.585,0.543,1.044,1.114,1.044h3.38c0.57,0,1.06-0.458,1.114-1.043l0.509-5.439H12V5.79z M6.407,4.264V4.165 c0-0.375,0.271-0.678,0.606-0.678h1.974c0.334,0,0.606,0.304,0.606,0.678v0.099c0,0.063-0.01,0.123-0.025,0.181H6.432 C6.417,4.387,6.407,4.328,6.407,4.264z M10.057,12.056c-0.019,0.197-0.188,0.363-0.368,0.363h-3.38 c-0.182,0-0.35-0.166-0.368-0.363L5.44,6.687h5.12L10.057,12.056z"/>
<rect x="7.75" y="7.542" fill="#fff" width="0.5" height="4"/>
<polyline fill="#fff" points="9.25,7.542 8.75,7.542 8.75,11.542 9.25,11.542 "/>
<rect x="6.75" y="7.542" fill="#fff" width="0.5" height="4"/>
</g>
<g id="leave-shape">
<polygon fill="#fff" points="2.08,11.52 2.08,4 8,4 8,2.24 0.32,2.24 0.32,13.28 8,13.28 8,11.52"/>
<polygon fill="#fff" points="15.66816,7.77344 9.6,2.27456 9.6,5.6 3.68,5.6 3.68,9.92 9.6,9.92 9.6,13.27232"/>
</g>
<path id="tour-shape" fill="#5a5a5a" d="M8,0C4.831,0,2.262,2.674,2.262,5.972c0,1.393,1.023,3.398,2.206,5.249l0.571, 0.866C6.504,14.245,8,16,8,16 s1.496-1.755,2.961-3.912l0.571-0.866c1.182-1.852,2.206-3.856,2.206-5.249C13.738,2.674, 11.169,0,8,0z M8,7.645 c-0.603,0-1.146-0.262-1.534-0.681C6.098,6.566,5.87,6.025,5.87,5.428c0-1.224,0.954-2.217, 2.13-2.217s2.13,0.992,2.13,2.217 C10.13,6.653,9.177,7.645,8,7.645z"/>
<g id="screen-shape">
<path d="M12.199,3.915v-0.4c0-0.837-0.65-1.515-1.452-1.515H2.452C1.65,2,1,2.678,1,3.515v6.242 c0,0.837,0.65,1.515,1.452,1.515h0.514V5.431c0-0.837,0.65-1.515,1.452-1.515H12.199z"/>
<path d="M13.548,4.727H5.253c-0.802,0-1.452,0.678-1.452,1.515v6.242c0,0.837,0.65,1.515,1.452, 1.515h8.294 C14.35,14,15,13.322,15,12.485V6.242C15,5.406,14.35,4.727,13.548,4.727z"/>
</g>
<g id="screenmute-shape">
<path fill-rule="evenodd" d="M13.55,4.73h-0.54l-8.13,8.13L4.2,13.53 C4.46,13.82,4.84,14,5.25,14h8.3c0.8,0,1.45-0.68,1.45-1.52V6.24C15,5.41,14.35,4.73,13.55,4.73z"/>
<path fill-rule="evenodd" d="M14.21,2.72l-0.99-0.99l-1.15,1.15C11.83,2.36,11.33,2,10.75,2 h-8.3C1.65,2,1,2.68,1,3.52v6.24c0,0.83,0.65,1.51,1.45,1.51h0.52V5.43c0-0.84,0.65-1.51,1.45-1.51h6.61l-0.81, 0.81H5.25 c-0.8,0-1.45,0.68-1.45,1.51v4.91l-1.89,1.89l0.99,0.99l1-1l8.3-8.3L14.21,2.72z"/>
</g>
<g id="delete-shape">
<path fill="#ccc" d="M14.191,4.579c0-1.149-0.832-2.08-1.857-2.08h-0.902V1.997C11.432,0.894,10.633,0,9.648,0H6.352 C5.367,0,4.568,0.894,4.568,1.997v0.502H3.666c-1.026,0-1.857,0.932-1.857,2.08v1.389h1.064l0.785,8.416 C3.742,15.29,4.499,16,5.383,16h5.231c0.883,0,1.64-0.709,1.724-1.614l0.788-8.417h1.064V4.579z M5.535,2.218V2.065 c0-0.58,0.42-1.05,0.938-1.05h3.055c0.518,0,0.937,0.47,0.937,1.05v0.153c0,0.098-0.016,0.191-0.038,0.281H5.573 C5.55,2.409,5.535,2.316,5.535,2.218z M11.184,14.277c-0.029,0.305-0.29,0.562-0.57,0.562H5.383c-0.281,0-0.541-0.257-0.57-0.562 L4.038,5.969h7.924L11.184,14.277z"/>
<rect x="7.612" y="7.291" fill="#ccc" width="0.774" height="6.191"/>
<polyline fill="#ccc" points="9.934,7.291 9.16,7.291 9.16,13.482 9.934,13.482 "/>
<rect x="6.065" y="7.291" fill="#ccc" width="0.774" height="6.191"/>
</g>
</defs>
<use id="add" xlink:href="#add-shape"/>
<use id="add-hover" xlink:href="#add-shape"/>
<use id="add-active" xlink:href="#add-shape"/>
<use id="audio" xlink:href="#audio-shape"/>
<use id="audio-hover" xlink:href="#audio-shape"/>
<use id="audio-active" xlink:href="#audio-shape"/>
<use id="block" xlink:href="#block-shape"/>
<use id="block-red" xlink:href="#block-shape"/>
<use id="block-hover" xlink:href="#block-shape"/>
<use id="block-active" xlink:href="#block-shape"/>
<use id="contacts" xlink:href="#contacts-shape"/>
<use id="contacts-hover" xlink:href="#contacts-shape"/>
<use id="contacts-active" xlink:href="#contacts-shape"/>
<use id="copy" xlink:href="#copy-shape"/>
<use id="checkmark" xlink:href="#checkmark-shape"/>
<use id="google" xlink:href="#google-shape"/>
<use id="google-hover" xlink:href="#google-shape"/>
<use id="google-active" xlink:href="#google-shape"/>
<use id="history" xlink:href="#history-shape"/>
<use id="history-hover" xlink:href="#history-shape"/>
<use id="history-active" xlink:href="#history-shape"/>
<use id="leave" xlink:href="#leave-shape"/>
<use id="precall" xlink:href="#precall-shape"/>
<use id="precall-hover" xlink:href="#precall-shape"/>
<use id="precall-active" xlink:href="#precall-shape"/>
<use id="settings" xlink:href="#settings-shape"/>
<use id="settings-hover" xlink:href="#settings-shape"/>
<use id="settings-active" xlink:href="#settings-shape"/>
<use id="share-darkgrey" xlink:href="#share-shape"/>
<use id="tag" xlink:href="#tag-shape"/>
<use id="tag-hover" xlink:href="#tag-shape"/>
<use id="tag-active" xlink:href="#tag-shape"/>
<use id="trash" xlink:href="#trash-shape"/>
<use id="unblock" xlink:href="#unblock-shape"/>
<use id="unblock-hover" xlink:href="#unblock-shape"/>
<use id="unblock-active" xlink:href="#unblock-shape"/>
<use id="video" xlink:href="#video-shape"/>
<use id="video-hover" xlink:href="#video-shape"/>
<use id="video-active" xlink:href="#video-shape"/>
<use id="tour" xlink:href="#tour-shape"/>
<use id="screen-white" xlink:href="#screen-shape"/>
<use id="screen-disabled" xlink:href="#screen-shape"/>
<use id="screenmute-white" xlink:href="#screenmute-shape"/>
<use id="delete" xlink:href="#delete-shape"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 15 KiB

После

Ширина:  |  Высота:  |  Размер: 13 KiB

Просмотреть файл

@ -1,12 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
<g id="Contacts">
<path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M8,6.526c1.802,0,3.263-1.461,3.263-3.263
C11.263,1.461,9.802,0,8,0C6.198,0,4.737,1.461,4.737,3.263C4.737,5.066,6.198,6.526,8,6.526z M14.067,11.421c0,0,0-0.001,0-0.001
c0-1.676-1.397-3.119-3.419-3.807L8.001,10.26L5.354,7.613C3.331,8.3,1.933,9.744,1.933,11.42v0.001H1.93
c0,1.679,0.328,3.246,0.896,4.579h10.348c0.568-1.333,0.896-2.9,0.896-4.579H14.067z"/>
</g>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<path fill-rule="evenodd" fill="#231f20" d="M8,6.526c1.802,0,3.263-1.461,3.263-3.263 C11.263,1.461,9.802,0,8,0C6.198,0,4.737,1.461,4.737,3.263C4.737,5.066,6.198,6.526,8,6.526z M14.067,11.421c0,0,0-0.001,0-0.001 c0-1.676-1.397-3.119-3.419-3.807L8.001,10.26L5.354,7.613C3.331,8.3,1.933,9.744,1.933,11.42v0.001H1.93 c0,1.679,0.328,3.246,0.896,4.579h10.348c0.568-1.333,0.896-2.9,0.896-4.579H14.067z"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 904 B

После

Ширина:  |  Высота:  |  Размер: 726 B

Просмотреть файл

@ -2,14 +2,7 @@
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
<circle fill="#5A5A5A" cx="8" cy="8" r="8"/>
<g>
<path fill="#FFFFFF" d="M10.716,5.643c0,1.943-2.158,1.812-2.158,3.154v0.3H6.831V8.726c0-2.075,1.907-1.932,1.907-2.915
c0-0.432-0.312-0.684-0.84-0.684c-0.491,0-0.972,0.24-1.403,0.731L5.284,4.923C5.967,4.121,6.855,3.64,8.09,3.64
C9.841,3.64,10.716,4.576,10.716,5.643z M8.797,11.268c0,0.6-0.479,1.092-1.079,1.092s-1.079-0.492-1.079-1.092
c0-0.588,0.479-1.079,1.079-1.079S8.797,10.68,8.797,11.268z"/>
</g>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<circle fill="#5a5a5a" cx="8" cy="8" r="8"/>
<path fill="#fff" d="M10.716,5.643c0,1.943-2.158,1.812-2.158,3.154v0.3H6.831V8.726c0-2.075,1.907-1.932,1.907-2.915 c0-0.432-0.312-0.684-0.84-0.684c-0.491,0-0.972,0.24-1.403,0.731L5.284,4.923C5.967,4.121,6.855,3.64,8.09,3.64 C9.841,3.64,10.716,4.576,10.716,5.643z M8.797,11.268c0,0.6-0.479,1.092-1.079,1.092s-1.079-0.492-1.079-1.092 c0-0.588,0.479-1.079,1.079-1.079S8.797,10.68,8.797,11.268z"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.0 KiB

После

Ширина:  |  Высота:  |  Размер: 770 B

Просмотреть файл

@ -1,17 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
<path id="Setting" fill-rule="evenodd" clip-rule="evenodd" fill="#131311" d="M14.77,8c0,0.804,0.262,1.548,0.634,1.678L16,9.887
c-0.205,0.874-0.553,1.692-1.011,2.434l-0.567-0.272c-0.355-0.171-1.066,0.17-1.635,0.738c-0.569,0.569-0.909,1.279-0.738,1.635
l0.273,0.568c-0.741,0.46-1.566,0.79-2.438,0.998l-0.205-0.584c-0.13-0.372-0.874-0.634-1.678-0.634s-1.548,0.262-1.678,0.634
l-0.209,0.596c-0.874-0.205-1.692-0.553-2.434-1.011l0.272-0.567c0.171-0.355-0.17-1.066-0.739-1.635
c-0.568-0.568-1.279-0.909-1.635-0.738l-0.568,0.273c-0.46-0.741-0.79-1.566-0.998-2.439l0.584-0.205
C0.969,9.547,1.231,8.804,1.231,8c0-0.804-0.262-1.548-0.634-1.678L0,6.112c0.206-0.874,0.565-1.685,1.025-2.427l0.554,0.266
c0.355,0.171,1.066-0.17,1.635-0.738c0.569-0.568,0.909-1.28,0.739-1.635L3.686,1.025c0.742-0.46,1.553-0.818,2.427-1.024
l0.209,0.596C6.453,0.969,7.197,1.23,8.001,1.23s1.548-0.262,1.678-0.634l0.209-0.596c0.874,0.205,1.692,0.553,2.434,1.011
l-0.272,0.567c-0.171,0.355,0.17,1.066,0.738,1.635c0.569,0.568,1.279,0.909,1.635,0.738l0.568-0.273
c0.46,0.741,0.79,1.566,0.998,2.438l-0.584,0.205C15.032,6.452,14.77,7.196,14.77,8z M8.001,3.661C5.604,3.661,3.661,5.603,3.661,8
c0,2.397,1.943,4.34,4.339,4.34c2.397,0,4.339-1.943,4.339-4.34C12.34,5.603,10.397,3.661,8.001,3.661z"/>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<path fill-rule="evenodd" fill="#131311" d="M14.77,8c0,0.804,0.262,1.548,0.634,1.678L16,9.887 c-0.205,0.874-0.553,1.692-1.011,2.434l-0.567-0.272c-0.355-0.171-1.066,0.17-1.635,0.738c-0.569,0.569-0.909,1.279-0.738,1.635 l0.273,0.568c-0.741,0.46-1.566,0.79-2.438,0.998l-0.205-0.584c-0.13-0.372-0.874-0.634-1.678-0.634s-1.548,0.262-1.678,0.634 l-0.209,0.596c-0.874-0.205-1.692-0.553-2.434-1.011l0.272-0.567c0.171-0.355-0.17-1.066-0.739-1.635 c-0.568-0.568-1.279-0.909-1.635-0.738l-0.568,0.273c-0.46-0.741-0.79-1.566-0.998-2.439l0.584-0.205 C0.969,9.547,1.231,8.804,1.231,8c0-0.804-0.262-1.548-0.634-1.678L0,6.112c0.206-0.874,0.565-1.685,1.025-2.427l0.554,0.266 c0.355,0.171,1.066-0.17,1.635-0.738c0.569-0.568,0.909-1.28,0.739-1.635L3.686,1.025c0.742-0.46,1.553-0.818,2.427-1.024 l0.209,0.596C6.453,0.969,7.197,1.23,8.001,1.23s1.548-0.262,1.678-0.634l0.209-0.596c0.874,0.205,1.692,0.553,2.434,1.011 l-0.272,0.567c-0.171,0.355,0.17,1.066,0.738,1.635c0.569,0.568,1.279,0.909,1.635,0.738l0.568-0.273 c0.46,0.741,0.79,1.566,0.998,2.438l-0.584,0.205C15.032,6.452,14.77,7.196,14.77,8z M8.001,3.661C5.604,3.661,3.661,5.603,3.661,8 c0,2.397,1.943,4.34,4.339,4.34c2.397,0,4.339-1.943,4.339-4.34C12.34,5.603,10.397,3.661,8.001,3.661z"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.7 KiB

После

Ширина:  |  Высота:  |  Размер: 1.5 KiB

Просмотреть файл

@ -1,15 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
<g id="Outgoing_14x14_1_">
<path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M9.921,8.415c0.105-0.11,0.146-0.265,0.13-0.432
c0.016-0.166-0.025-0.321-0.13-0.429L9.305,6.938l-2.6-2.65C6.402,3.973,5.973,3.906,5.748,4.139L5.238,4.68
c-0.225,0.233-0.16,0.679,0.144,0.995L6.44,6.754H0.608C0.272,6.754,0,7.026,0,7.361l0,1.215c0,0.335,0.272,0.607,0.608,0.607H6.47
l-1.136,1.155c-0.305,0.313-0.369,0.756-0.144,0.987L5.7,11.861c0.225,0.233,0.654,0.166,0.959-0.149l2.619-2.663L9.921,8.415z"/>
</g>
<path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M14,0H5.558c-0.331,0-0.6,0.269-0.6,0.6v0.8
c0,0.331,0.269,0.6,0.6,0.6H12.5C13.328,2,14,2.672,14,3.5v9c0,0.828-0.672,1.5-1.5,1.5H5.558c-0.331,0-0.6,0.269-0.6,0.6v0.8
c0,0.331,0.269,0.6,0.6,0.6H14c1.105,0,2-0.895,2-2V2C16,0.895,15.105,0,14,0z"/>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<path fill-rule="evenodd" fill="#231f20" d="M9.921,8.415c0.105-0.11,0.146-0.265,0.13-0.432 c0.016-0.166-0.025-0.321-0.13-0.429L9.305,6.938l-2.6-2.65C6.402,3.973,5.973,3.906,5.748,4.139L5.238,4.68 c-0.225,0.233-0.16,0.679,0.144,0.995L6.44,6.754H0.608C0.272,6.754,0,7.026,0,7.361l0,1.215c0,0.335,0.272,0.607,0.608,0.607H6.47 l-1.136,1.155c-0.305,0.313-0.369,0.756-0.144,0.987L5.7,11.861c0.225,0.233,0.654,0.166,0.959-0.149l2.619-2.663L9.921,8.415z"/>
<path fill-rule="evenodd" fill="#231f20" d="M14,0H5.558c-0.331,0-0.6,0.269-0.6,0.6v0.8 c0,0.331,0.269,0.6,0.6,0.6H12.5C13.328,2,14,2.672,14,3.5v9c0,0.828-0.672,1.5-1.5,1.5H5.558c-0.331,0-0.6,0.269-0.6,0.6v0.8 c0,0.331,0.269,0.6,0.6,0.6H14c1.105,0,2-0.895,2-2V2C16,0.895,15.105,0,14,0z"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.2 KiB

После

Ширина:  |  Высота:  |  Размер: 1.0 KiB

Просмотреть файл

@ -1,16 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
<path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M14,0H5.558c-0.331,0-0.6,0.269-0.6,0.6v0.8
c0,0.331,0.269,0.6,0.6,0.6H12.5C13.328,2,14,2.672,14,3.5v9c0,0.828-0.672,1.5-1.5,1.5H5.558c-0.331,0-0.6,0.269-0.6,0.6v0.8
c0,0.331,0.269,0.6,0.6,0.6H14c1.105,0,2-0.895,2-2V2C16,0.895,15.105,0,14,0z"/>
<g id="Outgoing_14x14_2_">
<path fill-rule="evenodd" clip-rule="evenodd" fill="#231F20" d="M0.133,7.585c-0.105,0.11-0.146,0.265-0.13,0.432
c-0.016,0.166,0.025,0.321,0.13,0.429l0.616,0.615l2.6,2.65c0.304,0.315,0.732,0.382,0.958,0.149l0.51-0.541
c0.225-0.233,0.16-0.679-0.144-0.995L3.615,9.246h5.832c0.335,0,0.608-0.272,0.608-0.607V7.424c0-0.335-0.272-0.607-0.608-0.607
H3.585L4.72,5.662c0.305-0.313,0.369-0.756,0.144-0.987L4.355,4.139C4.13,3.906,3.701,3.973,3.396,4.287L0.777,6.951L0.133,7.585z"
/>
</g>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<path fill-rule="evenodd" fill="#231f20" d="M14,0H5.558c-0.331,0-0.6,0.269-0.6,0.6v0.8 c0,0.331,0.269,0.6,0.6,0.6H12.5C13.328,2,14,2.672,14,3.5v9c0,0.828-0.672,1.5-1.5,1.5H5.558c-0.331,0-0.6,0.269-0.6,0.6v0.8 c0,0.331,0.269,0.6,0.6,0.6H14c1.105,0,2-0.895,2-2V2C16,0.895,15.105,0,14,0z"/>
<path fill-rule="evenodd" fill="#231f20" d="M0.133,7.585c-0.105,0.11-0.146,0.265-0.13,0.432 c-0.016,0.166,0.025,0.321,0.13,0.429l0.616,0.615l2.6,2.65c0.304,0.315,0.732,0.382,0.958,0.149l0.51-0.541 c0.225-0.233,0.16-0.679-0.144-0.995L3.615,9.246h5.832c0.335,0,0.608-0.272,0.608-0.607V7.424c0-0.335-0.272-0.607-0.608-0.607 H3.585L4.72,5.662c0.305-0.313,0.369-0.756,0.144-0.987L4.355,4.139C4.13,3.906,3.701,3.973,3.396,4.287L0.777,6.951L0.133,7.585z"/>
</svg>

До

Ширина:  |  Высота:  |  Размер: 1.3 KiB

После

Ширина:  |  Высота:  |  Размер: 1.0 KiB

Просмотреть файл

@ -165,6 +165,28 @@ loop.shared.actions = (function() {
RemotePeerConnected: Action.define("remotePeerConnected", {
}),
/**
* Used to notify that the session has a data channel available.
*/
DataChannelsAvailable: Action.define("dataChannelsAvailable", {
}),
/**
* Used to send a message to the other peer.
*/
SendTextChatMessage: Action.define("sendTextChatMessage", {
contentType: String,
message: String
}),
/**
* Notifies that a message has been received from the other peer.
*/
ReceivedTextChatMessage: Action.define("receivedTextChatMessage", {
contentType: String,
message: String
}),
/**
* Used by the ongoing views to notify stores about the elements
* required for the sdk.

Просмотреть файл

@ -372,6 +372,8 @@ loop.store.ActiveRoomStore = (function() {
*/
_handleRoomUpdate: function(eventName, roomData) {
this.dispatchAction(new sharedActions.UpdateRoomInfo({
urls: roomData.decryptedContext.urls,
description: roomData.decryptedContext.description,
roomName: roomData.decryptedContext.roomName,
roomOwner: roomData.roomOwner,
roomUrl: roomData.roomUrl
@ -410,7 +412,20 @@ loop.store.ActiveRoomStore = (function() {
this.setStoreState({failureReason: undefined});
}
this.setStoreState({roomState: ROOM_STATES.MEDIA_WAIT});
// XXX Ideally we'd do this check before joining a room, but we're waiting
// for the UX for that. See bug 1166824. In the meantime this gives us
// additional information for analysis.
loop.shared.utils.hasAudioDevices(function(hasAudio) {
if (hasAudio) {
// MEDIA_WAIT causes the views to dispatch sharedActions.SetupStreamElements,
// which in turn starts the sdk obtaining the device permission.
this.setStoreState({roomState: ROOM_STATES.MEDIA_WAIT});
} else {
this.dispatchAction(new sharedActions.ConnectionFailure({
reason: FAILURE_DETAILS.NO_MEDIA
}));
}
}.bind(this));
},
/**

Просмотреть файл

@ -169,6 +169,7 @@ loop.shared.views.FeedbackView = (function(l10n) {
*/
var FeedbackReceived = React.createClass({displayName: "FeedbackReceived",
propTypes: {
noCloseText: React.PropTypes.bool,
onAfterFeedbackReceived: React.PropTypes.func
},
@ -195,14 +196,24 @@ loop.shared.views.FeedbackView = (function(l10n) {
}
},
_renderCloseText: function() {
if (this.props.noCloseText) {
return null;
}
return (
React.createElement("p", {className: "info thank-you"},
l10n.get("feedback_window_will_close_in2", {
countdown: this.state.countdown,
num: this.state.countdown
}))
);
},
render: function() {
return (
React.createElement(FeedbackLayout, {title: l10n.get("feedback_thank_you_heading")},
React.createElement("p", {className: "info thank-you"},
l10n.get("feedback_window_will_close_in2", {
countdown: this.state.countdown,
num: this.state.countdown
}))
this._renderCloseText()
)
);
}
@ -220,7 +231,8 @@ loop.shared.views.FeedbackView = (function(l10n) {
propTypes: {
onAfterFeedbackReceived: React.PropTypes.func,
// Used by the UI showcase.
feedbackState: React.PropTypes.string
feedbackState: React.PropTypes.string,
noCloseText: React.PropTypes.bool
},
getInitialState: function() {
@ -291,6 +303,7 @@ loop.shared.views.FeedbackView = (function(l10n) {
}
return (
React.createElement(FeedbackReceived, {
noCloseText: this.props.noCloseText,
onAfterFeedbackReceived: this.props.onAfterFeedbackReceived})
);
}

Просмотреть файл

@ -169,6 +169,7 @@ loop.shared.views.FeedbackView = (function(l10n) {
*/
var FeedbackReceived = React.createClass({
propTypes: {
noCloseText: React.PropTypes.bool,
onAfterFeedbackReceived: React.PropTypes.func
},
@ -195,14 +196,24 @@ loop.shared.views.FeedbackView = (function(l10n) {
}
},
_renderCloseText: function() {
if (this.props.noCloseText) {
return null;
}
return (
<p className="info thank-you">{
l10n.get("feedback_window_will_close_in2", {
countdown: this.state.countdown,
num: this.state.countdown
})}</p>
);
},
render: function() {
return (
<FeedbackLayout title={l10n.get("feedback_thank_you_heading")}>
<p className="info thank-you">{
l10n.get("feedback_window_will_close_in2", {
countdown: this.state.countdown,
num: this.state.countdown
})}</p>
{this._renderCloseText()}
</FeedbackLayout>
);
}
@ -220,7 +231,8 @@ loop.shared.views.FeedbackView = (function(l10n) {
propTypes: {
onAfterFeedbackReceived: React.PropTypes.func,
// Used by the UI showcase.
feedbackState: React.PropTypes.string
feedbackState: React.PropTypes.string,
noCloseText: React.PropTypes.bool
},
getInitialState: function() {
@ -291,6 +303,7 @@ loop.shared.views.FeedbackView = (function(l10n) {
}
return (
<FeedbackReceived
noCloseText={this.props.noCloseText}
onAfterFeedbackReceived={this.props.onAfterFeedbackReceived} />
);
}

Просмотреть файл

@ -515,7 +515,7 @@ loop.shared.mixins = (function() {
this._bufferedUpdateVideo = null;
var localStreamParent = this._getElement(".local .OT_publisher");
var remoteStreamParent = this._getElement(".remote .OT_subscriber");
var screenShareStreamParent = this._getElement('.screen .OT_subscriber');
var screenShareStreamParent = this._getElement(".screen .OT_subscriber");
if (localStreamParent) {
localStreamParent.style.width = "100%";
}

Просмотреть файл

@ -25,6 +25,7 @@ loop.OTSdkDriver = (function() {
this.dispatcher = options.dispatcher;
this.sdk = options.sdk;
this._useDataChannels = !!options.useDataChannels;
this._isDesktop = !!options.isDesktop;
if (this._isDesktop) {
@ -77,10 +78,24 @@ loop.OTSdkDriver = (function() {
* Clones the publisher config into a new object, as the sdk modifies the
* properties object.
*/
_getCopyPublisherConfig: function() {
get _getCopyPublisherConfig() {
return _.extend({}, this.publisherConfig);
},
/**
* Returns the required data channel settings.
*/
get _getDataChannelSettings() {
return {
channels: {
// We use a single channel for text. To make things simpler, we
// always send on the publisher channel, and receive on the subscriber
// channel.
text: {}
}
};
},
/**
* Handles the setupStreamElements action. Saves the required data and
* kicks off the initialising of the publisher.
@ -108,7 +123,7 @@ loop.OTSdkDriver = (function() {
*/
_publishLocalStreams: function() {
this.publisher = this.sdk.initPublisher(this.getLocalElement(),
this._getCopyPublisherConfig());
_.extend(this._getDataChannelSettings, this._getCopyPublisherConfig));
this.publisher.on("streamCreated", this._onLocalStreamCreated.bind(this));
this.publisher.on("streamDestroyed", this._onLocalStreamDestroyed.bind(this));
this.publisher.on("accessAllowed", this._onPublishComplete.bind(this));
@ -165,7 +180,7 @@ loop.OTSdkDriver = (function() {
this._windowId = options.constraints.browserWindow;
}
var config = _.extend(this._getCopyPublisherConfig(), options);
var config = _.extend(this._getCopyPublisherConfig, options);
this.screenshare = this.sdk.initPublisher(this.getScreenShareElementFunc(),
config);
@ -241,6 +256,7 @@ loop.OTSdkDriver = (function() {
this.session.on("streamCreated", this._onRemoteStreamCreated.bind(this));
this.session.on("streamDestroyed", this._onRemoteStreamDestroyed.bind(this));
this.session.on("streamPropertyChanged", this._onStreamPropertyChanged.bind(this));
this.session.on("signal:readyForDataChannel", this._onReadyForDataChannel.bind(this));
// This starts the actual session connection.
this.session.connect(sessionData.apiKey, sessionData.sessionToken,
@ -495,7 +511,7 @@ loop.OTSdkDriver = (function() {
var remoteElement = this.getScreenShareElementFunc();
this.session.subscribe(stream,
remoteElement, this._getCopyPublisherConfig());
remoteElement, this._getCopyPublisherConfig);
},
/**
@ -522,8 +538,9 @@ loop.OTSdkDriver = (function() {
var remoteElement = this.getRemoteElement();
this.session.subscribe(event.stream,
remoteElement, this._getCopyPublisherConfig());
this.subscriber = this.session.subscribe(event.stream,
remoteElement, this._getCopyPublisherConfig,
this._onRemoteSessionSubscribed.bind(this, event.stream.connection));
this._subscribedRemoteStream = true;
if (this._checkAllStreamsConnected()) {
@ -532,6 +549,117 @@ loop.OTSdkDriver = (function() {
}
},
/**
* Once a remote stream has been subscribed to, this triggers the data
* channel set-up routines. A data channel cannot be requested before this
* time as the peer connection is not set up.
*
* @param {OT.Connection} connection The OT connection class object.
* @param {OT.Error} err Indicates if there's been an error in
* completing the subscribe.
*/
_onRemoteSessionSubscribed: function(connection, err) {
if (err) {
console.error(err);
return;
}
if (this._useDataChannels) {
this.session.signal({
type: "readyForDataChannel",
to: connection
}, function(signalError) {
if (signalError) {
console.error(signalError);
}
});
}
},
/**
* Handles receiving the signal that the other end of the connection
* has subscribed to the stream and we're ready to setup the data channel.
*
* We get data channels for both the publisher and subscriber on reception
* of the signal, as it means that a) the remote client is setup for data
* channels, and b) that subscribing of streams has definitely completed
* for both clients.
*
* @param {OT.SignalEvent} event Details of the signal received.
*/
_onReadyForDataChannel: function(event) {
// If we don't want data channels, just ignore the message. We haven't
// send the other side a message, so it won't display anything.
if (!this._useDataChannels) {
return;
}
// This won't work until a subscriber exists for this publisher
this.publisher._.getDataChannel("text", {}, function(err, channel) {
if (err) {
console.error(err);
return;
}
this._publisherChannel = channel;
channel.on({
close: function(event) {
// XXX We probably want to dispatch and handle this somehow.
console.log("Published data channel closed!");
}
});
this._checkDataChannelsAvailable();
}.bind(this));
this.subscriber._.getDataChannel("text", {}, function(err, channel) {
// Sends will queue until the channel is fully open.
if (err) {
console.error(err);
return;
}
channel.on({
message: function(event) {
try {
this.dispatcher.dispatch(
new sharedActions.ReceivedTextChatMessage(JSON.parse(event.data)));
} catch (ex) {
console.error("Failed to process incoming chat message", ex);
}
}.bind(this),
close: function(event) {
// XXX We probably want to dispatch and handle this somehow.
console.log("Subscribed data channel closed!");
}
});
this._subscriberChannel = channel;
this._checkDataChannelsAvailable();
}.bind(this));
},
/**
* Checks to see if all channels have been obtained, and if so it dispatches
* a notification to the stores to inform them.
*/
_checkDataChannelsAvailable: function() {
if (this._publisherChannel && this._subscriberChannel) {
this.dispatcher.dispatch(new sharedActions.DataChannelsAvailable());
}
},
/**
* Sends a text chat message on the data channel.
*
* @param {String} message The message to send.
*/
sendTextChatMessage: function(message) {
this._publisherChannel.send(JSON.stringify(message));
},
/**
* Handles the event when the local stream is created.
*
@ -792,8 +920,8 @@ loop.OTSdkDriver = (function() {
this._connectionLengthNotedCalls++;
if (this._debugTwoWayMediaTelemetry) {
console.log('Loop Telemetry: noted two-way media connection ' +
'in bucket: ', bucket);
console.log("Loop Telemetry: noted two-way media connection " +
"in bucket: ", bucket);
}
},

Просмотреть файл

@ -0,0 +1,113 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
var loop = loop || {};
loop.store = loop.store || {};
loop.store.TextChatStore = (function() {
"use strict";
var sharedActions = loop.shared.actions;
var CHAT_MESSAGE_TYPES = loop.store.CHAT_MESSAGE_TYPES = {
RECEIVED: "recv",
SENT: "sent"
};
var CHAT_CONTENT_TYPES = loop.store.CHAT_CONTENT_TYPES = {
TEXT: "chat-text"
};
/**
* A store to handle text chats. The store has a message list that may
* contain different types of messages and data.
*/
var TextChatStore = loop.store.createStore({
actions: [
"dataChannelsAvailable",
"receivedTextChatMessage",
"sendTextChatMessage"
],
/**
* Initializes the store.
*
* @param {Object} options An object containing options for this store.
* It should consist of:
* - sdkDriver: The sdkDriver to use for sending
* messages.
*/
initialize: function(options) {
options = options || {};
if (!options.sdkDriver) {
throw new Error("Missing option sdkDriver");
}
this._sdkDriver = options.sdkDriver;
},
/**
* Returns initial state data for this active room.
*/
getInitialStoreState: function() {
return {
textChatEnabled: false,
// The messages currently received. Care should be taken when updating
// this - do not update the in-store array directly, but use a clone or
// separate array and then use setStoreState().
messageList: [],
length: 0
};
},
/**
* Handles information for when data channels are available - enables
* text chat.
*/
dataChannelsAvailable: function() {
this.setStoreState({ textChatEnabled: true });
},
/**
* Handles received text chat messages.
*
* @param {sharedActions.ReceivedTextChatMessage} actionData
*/
receivedTextChatMessage: function(actionData) {
// If we don't know how to deal with this content, then skip it
// as this version doesn't support it.
if (actionData.contentType != CHAT_CONTENT_TYPES.TEXT) {
return;
}
// We create a new list to avoid updating the store's state directly,
// which confuses the views.
var newList = this._storeState.messageList.concat({
type: CHAT_MESSAGE_TYPES.RECEIVED,
contentType: actionData.contentType,
message: actionData.message
});
this.setStoreState({ messageList: newList });
},
/**
* Handles sending of a chat message.
*
* @param {sharedActions.SendTextChatMessage} actionData
*/
sendTextChatMessage: function(actionData) {
// We create a new list to avoid updating the store's state directly,
// which confuses the views.
var newList = this._storeState.messageList.concat({
type: CHAT_MESSAGE_TYPES.SENT,
contentType: actionData.contentType,
message: actionData.message
});
this._sdkDriver.sendTextChatMessage(actionData);
this.setStoreState({ messageList: newList });
}
});
return TextChatStore;
})();

Просмотреть файл

@ -0,0 +1,153 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
var loop = loop || {};
loop.shared = loop.shared || {};
loop.shared.views = loop.shared.views || {};
loop.shared.views.TextChatView = (function(mozl10n) {
var sharedActions = loop.shared.actions;
var CHAT_MESSAGE_TYPES = loop.store.CHAT_MESSAGE_TYPES;
var CHAT_CONTENT_TYPES = loop.store.CHAT_CONTENT_TYPES;
/**
* Renders an individual entry for the text chat entries view.
*/
var TextChatEntry = React.createClass({displayName: "TextChatEntry",
mixins: [React.addons.PureRenderMixin],
propTypes: {
message: React.PropTypes.string.isRequired,
type: React.PropTypes.string.isRequired
},
render: function() {
var classes = React.addons.classSet({
"text-chat-entry": true,
"received": this.props.type === CHAT_MESSAGE_TYPES.RECEIVED
});
return (
React.createElement("div", {className: classes},
this.props.message
)
);
}
});
/**
* Manages the text entries in the chat entries view. This is split out from
* TextChatView so that scrolling can be managed more efficiently - this
* component only updates when the message list is changed.
*/
var TextChatEntriesView = React.createClass({displayName: "TextChatEntriesView",
mixins: [React.addons.PureRenderMixin],
propTypes: {
messageList: React.PropTypes.array.isRequired
},
componentWillUpdate: function() {
var node = this.getDOMNode();
// Scroll only if we're right at the bottom of the display.
this.shouldScroll = node.scrollHeight === node.scrollTop + node.clientHeight;
},
componentDidUpdate: function() {
if (this.shouldScroll) {
// This ensures the paint is complete.
window.requestAnimationFrame(function() {
var node = this.getDOMNode();
node.scrollTop = node.scrollHeight - node.clientHeight;
}.bind(this));
}
},
render: function() {
return (
React.createElement("div", {className: "text-chat-entries"},
this.props.messageList.map(function(entry, i) {
return (
React.createElement(TextChatEntry, {key: i,
message: entry.message,
type: entry.type})
);
}, this)
)
);
}
});
/**
* Displays the text chat view. This includes the text chat messages as well
* as a field for entering new messages.
*/
var TextChatView = React.createClass({displayName: "TextChatView",
mixins: [
React.addons.LinkedStateMixin,
loop.store.StoreMixin("textChatStore")
],
propTypes: {
dispatcher: React.PropTypes.instanceOf(loop.Dispatcher).isRequired
},
getInitialState: function() {
return _.extend({
messageDetail: ""
}, this.getStoreState());
},
/**
* Handles a key being pressed - looking for the return key for submitting
* the form.
*
* @param {Object} event The DOM event.
*/
handleKeyDown: function(event) {
if (event.which === 13) {
this.handleFormSubmit(event);
}
},
/**
* Handles submitting of the form - dispatches a send text chat message.
*
* @param {Object} event The DOM event.
*/
handleFormSubmit: function(event) {
event.preventDefault();
this.props.dispatcher.dispatch(new sharedActions.SendTextChatMessage({
contentType: CHAT_CONTENT_TYPES.TEXT,
message: this.state.messageDetail
}));
// Reset the form to empty, ready for the next message.
this.setState({ messageDetail: "" });
},
render: function() {
if (!this.state.textChatEnabled) {
return null;
}
return (
React.createElement("div", {className: "text-chat-view"},
React.createElement(TextChatEntriesView, {messageList: this.state.messageList}),
React.createElement("div", {className: "text-chat-box"},
React.createElement("form", {onSubmit: this.handleFormSubmit},
React.createElement("input", {type: "text",
onKeyDown: this.handleKeyDown,
valueLink: this.linkState("messageDetail")})
)
)
)
);
}
});
return TextChatView;
})(navigator.mozL10n || document.mozL10n);

Просмотреть файл

@ -0,0 +1,153 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
var loop = loop || {};
loop.shared = loop.shared || {};
loop.shared.views = loop.shared.views || {};
loop.shared.views.TextChatView = (function(mozl10n) {
var sharedActions = loop.shared.actions;
var CHAT_MESSAGE_TYPES = loop.store.CHAT_MESSAGE_TYPES;
var CHAT_CONTENT_TYPES = loop.store.CHAT_CONTENT_TYPES;
/**
* Renders an individual entry for the text chat entries view.
*/
var TextChatEntry = React.createClass({
mixins: [React.addons.PureRenderMixin],
propTypes: {
message: React.PropTypes.string.isRequired,
type: React.PropTypes.string.isRequired
},
render: function() {
var classes = React.addons.classSet({
"text-chat-entry": true,
"received": this.props.type === CHAT_MESSAGE_TYPES.RECEIVED
});
return (
<div className={classes}>
{this.props.message}
</div>
);
}
});
/**
* Manages the text entries in the chat entries view. This is split out from
* TextChatView so that scrolling can be managed more efficiently - this
* component only updates when the message list is changed.
*/
var TextChatEntriesView = React.createClass({
mixins: [React.addons.PureRenderMixin],
propTypes: {
messageList: React.PropTypes.array.isRequired
},
componentWillUpdate: function() {
var node = this.getDOMNode();
// Scroll only if we're right at the bottom of the display.
this.shouldScroll = node.scrollHeight === node.scrollTop + node.clientHeight;
},
componentDidUpdate: function() {
if (this.shouldScroll) {
// This ensures the paint is complete.
window.requestAnimationFrame(function() {
var node = this.getDOMNode();
node.scrollTop = node.scrollHeight - node.clientHeight;
}.bind(this));
}
},
render: function() {
return (
<div className="text-chat-entries">
{
this.props.messageList.map(function(entry, i) {
return (
<TextChatEntry key={i}
message={entry.message}
type={entry.type} />
);
}, this)
}
</div>
);
}
});
/**
* Displays the text chat view. This includes the text chat messages as well
* as a field for entering new messages.
*/
var TextChatView = React.createClass({
mixins: [
React.addons.LinkedStateMixin,
loop.store.StoreMixin("textChatStore")
],
propTypes: {
dispatcher: React.PropTypes.instanceOf(loop.Dispatcher).isRequired
},
getInitialState: function() {
return _.extend({
messageDetail: ""
}, this.getStoreState());
},
/**
* Handles a key being pressed - looking for the return key for submitting
* the form.
*
* @param {Object} event The DOM event.
*/
handleKeyDown: function(event) {
if (event.which === 13) {
this.handleFormSubmit(event);
}
},
/**
* Handles submitting of the form - dispatches a send text chat message.
*
* @param {Object} event The DOM event.
*/
handleFormSubmit: function(event) {
event.preventDefault();
this.props.dispatcher.dispatch(new sharedActions.SendTextChatMessage({
contentType: CHAT_CONTENT_TYPES.TEXT,
message: this.state.messageDetail
}));
// Reset the form to empty, ready for the next message.
this.setState({ messageDetail: "" });
},
render: function() {
if (!this.state.textChatEnabled) {
return null;
}
return (
<div className="text-chat-view">
<TextChatEntriesView messageList={this.state.messageList} />
<div className="text-chat-box">
<form onSubmit={this.handleFormSubmit}>
<input type="text"
onKeyDown={this.handleKeyDown}
valueLink={this.linkState("messageDetail")} />
</form>
</div>
</div>
);
}
});
return TextChatView;
})(navigator.mozL10n || document.mozL10n);

Просмотреть файл

@ -11,6 +11,32 @@ var inChrome = typeof Components != "undefined" && "utils" in Components;
(function() {
"use strict";
/**
* Root object, by default set to window if we're not in chrome code.
* @type {DOMWindow|Object}
*/
var rootObject = inChrome ? {} : window;
/**
* Root navigator, by default set to navigator if we're not in chrome code.
* @type {Navigator|Object}
*/
var rootNavigator = inChrome ? {} : navigator;
/**
* Sets new root objects. This is useful for testing native DOM events, and also
* so we can easily stub items like navigator.mediaDevices.
* can fake them. In beforeEach(), loop.shared.utils.setRootObjects is used to
* substitute fake objects, and in afterEach(), the real window object is
* replaced.
*
* @param {Object} windowObj The fake window object, undefined to use window.
* @param {Object} navigatorObj The fake navigator object, undefined to use navigator.
*/
function setRootObjects(windowObj, navigatorObj) {
rootObject = windowObj || window;
rootNavigator = navigatorObj || navigator;
}
var mozL10n;
if (inChrome) {
this.EXPORTED_SYMBOLS = ["utils"];
@ -48,6 +74,7 @@ var inChrome = typeof Components != "undefined" && "utils" in Components;
var FAILURE_DETAILS = {
MEDIA_DENIED: "reason-media-denied",
NO_MEDIA: "reason-no-media",
UNABLE_TO_PUBLISH_MEDIA: "unable-to-publish-media",
COULD_NOT_CONNECT: "reason-could-not-connect",
NETWORK_DISCONNECTED: "reason-network-disconnected",
@ -109,8 +136,8 @@ var inChrome = typeof Components != "undefined" && "utils" in Components;
}
function isChrome(platform) {
return platform.toLowerCase().indexOf('chrome') > -1 ||
platform.toLowerCase().indexOf('chromium') > -1;
return platform.toLowerCase().indexOf("chrome") > -1 ||
platform.toLowerCase().indexOf("chromium") > -1;
}
function isFirefox(platform) {
@ -127,8 +154,8 @@ var inChrome = typeof Components != "undefined" && "utils" in Components;
}
function isOpera(platform) {
return platform.toLowerCase().indexOf('opera') > -1 ||
platform.toLowerCase().indexOf('opr') > -1;
return platform.toLowerCase().indexOf("opera") > -1 ||
platform.toLowerCase().indexOf("opr") > -1;
}
/**
@ -279,6 +306,40 @@ var inChrome = typeof Components != "undefined" && "utils" in Components;
return platform;
};
/**
* Determines if the user has any audio devices installed.
*
* @param {Function} callback Called with a boolean which is true if there
* are audio devices present.
*/
function hasAudioDevices(callback) {
// mediaDevices is the official API for the spec.
if ("mediaDevices" in rootNavigator) {
rootNavigator.mediaDevices.enumerateDevices().then(function(result) {
function checkForInput(device) {
return device.kind === "audioinput";
}
callback(result.some(checkForInput));
}).catch(function() {
callback(false);
});
// MediaStreamTrack is the older version of the API, implemented originally
// by Google Chrome.
} else if ("MediaStreamTrack" in rootObject) {
rootObject.MediaStreamTrack.getSources(function(result) {
function checkForInput(device) {
return device.kind === "audio";
}
callback(result.some(checkForInput));
});
} else {
// We don't know, so assume true.
callback(true);
}
}
/**
* Helper to allow getting some of the location data in a way that's compatible
* with stubbing for unit tests.
@ -671,6 +732,7 @@ var inChrome = typeof Components != "undefined" && "utils" in Components;
STREAM_PROPERTIES: STREAM_PROPERTIES,
SCREEN_SHARE_STATES: SCREEN_SHARE_STATES,
ROOM_INFO_FAILURES: ROOM_INFO_FAILURES,
setRootObjects: setRootObjects,
composeCallUrlEmail: composeCallUrlEmail,
formatDate: formatDate,
formatURL: formatURL,
@ -683,6 +745,7 @@ var inChrome = typeof Components != "undefined" && "utils" in Components;
isFirefoxOS: isFirefoxOS,
isOpera: isOpera,
getUnsupportedPlatform: getUnsupportedPlatform,
hasAudioDevices: hasAudioDevices,
locationData: locationData,
atob: atob,
btoa: btoa,

Просмотреть файл

@ -84,6 +84,8 @@ browser.jar:
content/browser/loop/shared/js/otSdkDriver.js (content/shared/js/otSdkDriver.js)
content/browser/loop/shared/js/views.js (content/shared/js/views.js)
content/browser/loop/shared/js/feedbackViews.js (content/shared/js/feedbackViews.js)
content/browser/loop/shared/js/textChatStore.js (content/shared/js/textChatStore.js)
content/browser/loop/shared/js/textChatView.js (content/shared/js/textChatView.js)
content/browser/loop/shared/js/utils.js (content/shared/js/utils.js)
content/browser/loop/shared/js/validate.js (content/shared/js/validate.js)
content/browser/loop/shared/js/websocket.js (content/shared/js/websocket.js)

Просмотреть файл

@ -146,7 +146,7 @@ CallProgressSocket.prototype = {
return;
}
if (msg.messageType && msg.messageType === 'hello') {
if (msg.messageType && msg.messageType === "hello") {
this._handshakeComplete = true;
this._onSuccess();
}

Просмотреть файл

@ -267,7 +267,7 @@ const validateContact = function(obj, def = kContactFields) {
const batch = function(operation, data, callback) {
let processed = [];
if (!LoopContactsInternal.hasOwnProperty(operation) ||
typeof LoopContactsInternal[operation] != 'function') {
typeof LoopContactsInternal[operation] != "function") {
callback(new Error ("LoopContactsInternal does not contain a '" +
operation + "' method"));
return;

Просмотреть файл

@ -20,7 +20,7 @@ XPCOMUtils.defineLazyGetter(this, "eventEmitter", function() {
return new EventEmitter();
});
XPCOMUtils.defineLazyGetter(this, "gLoopBundle", function() {
return Services.strings.createBundle('chrome://browser/locale/loop/loop.properties');
return Services.strings.createBundle("chrome://browser/locale/loop/loop.properties");
});
XPCOMUtils.defineLazyModuleGetter(this, "LoopRoomsCache",

Просмотреть файл

@ -10,7 +10,7 @@ try {
Cu.importGlobalProperties(["indexedDB"]);
} catch (ex) {
// don't write this is out in xpcshell, since it's expected there
if (typeof window !== 'undefined' && "console" in window) {
if (typeof window !== "undefined" && "console" in window) {
console.log("Failed to import indexedDB; if this isn't a unit test," +
" something is wrong", ex);
}

Просмотреть файл

@ -752,7 +752,7 @@ let MozLoopServiceInternal = {
stageForTelemetryUpload: function(window, pc) {
window.WebrtcGlobalInformation.getAllStats(allStats => {
let internalFormat = allStats.reports[0]; // filtered on pc.id
window.WebrtcGlobalInformation.getLogging('', logs => {
window.WebrtcGlobalInformation.getLogging("", logs => {
let report = convertToRTCStatsReport(internalFormat);
let logStr = "";
logs.forEach(s => { logStr += s + "\n"; });
@ -1072,6 +1072,7 @@ let gInitializeTimerFunc = (deferredInitialization) => {
MozLoopServiceInternal.initialRegistrationDelayMilliseconds);
};
let gServiceInitialized = false;
/**
* Public API
@ -1089,10 +1090,21 @@ this.MozLoopService = {
};
},
/**
* Used to override the initalize timer function for test purposes.
*/
set initializeTimerFunc(value) {
gInitializeTimerFunc = value;
},
/**
* Used to reset if the service has been initialized or not - for test
* purposes.
*/
resetServiceInitialized: function() {
gServiceInitialized = false;
},
get roomsParticipantsCount() {
return LoopRooms.participantsCount;
},
@ -1101,9 +1113,18 @@ this.MozLoopService = {
* Initialized the loop service, and starts registration with the
* push and loop servers.
*
* Note: this returns a promise for unit test purposes.
*
* @return {Promise}
*/
initialize: Task.async(function*() {
// Ensure we don't setup things like listeners more than once.
if (gServiceInitialized) {
return Promise.resolve();
}
gServiceInitialized = true;
// Do this here, rather than immediately after definition, so that we can
// stub out API functions for unit testing
Object.freeze(this);

Просмотреть файл

@ -292,6 +292,30 @@ p.standalone-btn-label {
display: none;
}
/**
* The .text-chat-* styles are very temporarily whilst we work on text chat
* (bug 1108892 and dependencies).
*/
.text-chat-view {
height: 60px;
color: white;
}
.text-chat-entries {
/* XXX Should use flex, this is just for the initial implementation. */
height: calc(100% - 2em);
width: 30%;
}
.text-chat-box {
width: 30%;
margin: auto;
}
.text-chat-box > form > input {
width: 100%;
}
@media screen and (max-width:640px) {
.standalone .ended-conversation .feedback {
width: 92%;

Двоичные данные
browser/components/loop/standalone/content/favicon.ico Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 15 KiB

Просмотреть файл

@ -1,22 +1,25 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="102px" height="62px" viewBox="0 0 102 62" version="1.1" xmlns="http://www.w3.org/2000/svg">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(0.500000, 0.000000)">
<rect stroke="#ABE6F8" fill="#FFFFFF" x="0.5" y="1" width="100" height="60"/>
<path d="M36.4003,3 L39.02,9.66666667 L34.8325,9.66666667 L5.6875,9.66666667 L1.5,9.66666667 L4.1197,3 L36.4003,3 Z" fill="#AAE5F9"/>
<rect fill="#AAE5F9" x="0.5" y="9" width="100" height="10"/>
<path d="M21.004515,11.3333333 C19.6213095,11.3333333 18.5,12.4429954 18.5,13.8333333 L18.5,13.8333333 C18.5,15.2140452 19.6250227,16.3333333 21.0055946,16.3333333 L40.8816964,16.3333333 L90.002759,16.3333333 C91.3819471,16.3333333 92.5,15.2236713 92.5,13.8333333 L92.5,13.8333333 C92.5,12.4526215 91.3819191,11.3333333 89.995485,11.3333333 L21.004515,11.3333333 Z" fill="#FFFFFF"/>
<rect stroke="#ABE6F8" x="0" y="0" width="101" height="62"/>
<g transform="translate(0.000000, 18.000000)">
<rect stroke="#92CB3E" stroke-width="2" fill="#FFFFFF" x="0.5" y="0" width="100" height="10"/>
<path d="M89.5096131,3 C88.3997344,3 87.5,3.88772964 87.5,5 L87.5,5 C87.5,6.1045695 88.3933569,7 89.4971942,7 L88.5360952,7 C89.6426425,7 91.4357226,7 92.5331547,7 L95.5533191,7 C96.6560555,7 97.55,6.11227036 97.55,5 L97.55,5 C97.55,3.8954305 96.6581295,3 95.5403869,3 L89.5096131,3 Z" stroke="#92CB3E" fill="#FFFFFF"/>
<path d="M78.5096131,3 C77.3997344,3 76.5,3.88772964 76.5,5 L76.5,5 C76.5,6.1045695 77.3933569,7 78.4971942,7 L77.5360952,7 C78.6426425,7 80.4357226,7 81.5331547,7 L84.5533191,7 C85.6560555,7 86.55,6.11227036 86.55,5 L86.55,5 C86.55,3.8954305 85.6581295,3 84.5403869,3 L78.5096131,3 Z" stroke="#92CB3E" fill="#FFFFFF"/>
<path d="M8.5,3.69642857 L8.5,6.73214286 C8.5,6.81026825 8.46372804,6.86514121 8.39118304,6.89676339 C8.36700137,6.90606403 8.34375011,6.91071429 8.32142857,6.91071429 C8.27120511,6.91071429 8.22935285,6.89304333 8.19587054,6.85770089 L7.07142857,5.73325893 L7.07142857,6.19642857 C7.07142857,6.41778384 6.99283933,6.60704907 6.83565848,6.76422991 C6.67847764,6.92141076 6.48921242,7 6.26785714,7 L4.30357143,7 C4.08221616,7 3.89295093,6.92141076 3.73577009,6.76422991 C3.57858924,6.60704907 3.5,6.41778384 3.5,6.19642857 L3.5,4.23214286 C3.5,4.01078758 3.57858924,3.82152236 3.73577009,3.66434152 C3.89295093,3.50716067 4.08221616,3.42857143 4.30357143,3.42857143 L6.26785714,3.42857143 C6.48921242,3.42857143 6.67847764,3.50716067 6.83565848,3.66434152 C6.99283933,3.82152236 7.07142857,4.01078758 7.07142857,4.23214286 L7.07142857,4.69252232 L8.19587054,3.57087054 C8.22935285,3.5355281 8.27120511,3.51785714 8.32142857,3.51785714 C8.34375011,3.51785714 8.36700137,3.52250739 8.39118304,3.53180804 C8.46372804,3.56343022 8.5,3.61830318 8.5,3.69642857 L8.5,3.69642857 Z" fill="#00AF84"/>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg width="102px" height="62px" viewBox="0 0 102 62" xmlns="http://www.w3.org/2000/svg">
<g stroke="none" fill="none" fill-rule="evenodd">
<g transform="translate(0.5,0)">
<rect stroke="#abe6f8" fill="#fff" x="0.5" y="1" width="100" height="60"/>
<path fill="#aae5f9" d="M36.4003,3 L39.02,9.66666667 L34.8325,9.66666667 L5.6875,9.66666667 L1.5,9.66666667 L4.1197,3 L36.4003,3 Z"/>
<rect fill="#aae5f9" x="0.5" y="9" width="100" height="10"/>
<path fill="#fff" d="M21.004515,11.3333333 C19.6213095,11.3333333 18.5,12.4429954 18.5,13.8333333 L18.5,13.8333333 C18.5,15.2140452 19.6250227,16.3333333 21.0055946,16.3333333 L40.8816964,16.3333333 L90.002759,16.3333333 C91.3819471,16.3333333 92.5,15.2236713 92.5,13.8333333 L92.5,13.8333333 C92.5,12.4526215 91.3819191,11.3333333 89.995485,11.3333333 L21.004515,11.3333333 Z"/>
<rect stroke="#abe6f8" width="101" height="62"/>
<g transform="translate(0,18)">
<rect stroke="#92cb3e" stroke-width="2" fill="#fff" x="0.5" width="100" height="10"/>
<path stroke="#92cb3e" fill="#fff" d="M89.5096131,3 C88.3997344,3 87.5,3.88772964 87.5,5 L87.5,5 C87.5,6.1045695 88.3933569,7 89.4971942,7 L88.5360952,7 C89.6426425,7 91.4357226,7 92.5331547,7 L95.5533191,7 C96.6560555,7 97.55,6.11227036 97.55,5 L97.55,5 C97.55,3.8954305 96.6581295,3 95.5403869,3 L89.5096131,3 Z"/>
<path stroke="#92cb3e" fill="#fff" d="M78.5096131,3 C77.3997344,3 76.5,3.88772964 76.5,5 L76.5,5 C76.5,6.1045695 77.3933569,7 78.4971942,7 L77.5360952,7 C78.6426425,7 80.4357226,7 81.5331547,7 L84.5533191,7 C85.6560555,7 86.55,6.11227036 86.55,5 L86.55,5 C86.55,3.8954305 85.6581295,3 84.5403869,3 L78.5096131,3 Z"/>
<path fill="#00af84" d="M8.5,3.69642857 L8.5,6.73214286 C8.5,6.81026825 8.46372804,6.86514121 8.39118304,6.89676339 C8.36700137,6.90606403 8.34375011,6.91071429 8.32142857,6.91071429 C8.27120511,6.91071429 8.22935285,6.89304333 8.19587054,6.85770089 L7.07142857,5.73325893 L7.07142857,6.19642857 C7.07142857,6.41778384 6.99283933,6.60704907 6.83565848,6.76422991 C6.67847764,6.92141076 6.48921242,7 6.26785714,7 L4.30357143,7 C4.08221616,7 3.89295093,6.92141076 3.73577009,6.76422991 C3.57858924,6.60704907 3.5,6.41778384 3.5,6.19642857 L3.5,4.23214286 C3.5,4.01078758 3.57858924,3.82152236 3.73577009,3.66434152 C3.89295093,3.50716067 4.08221616,3.42857143 4.30357143,3.42857143 L6.26785714,3.42857143 C6.48921242,3.42857143 6.67847764,3.50716067 6.83565848,3.66434152 C6.99283933,3.82152236 7.07142857,4.01078758 7.07142857,4.23214286 L7.07142857,4.69252232 L8.19587054,3.57087054 C8.22935285,3.5355281 8.27120511,3.51785714 8.32142857,3.51785714 C8.34375011,3.51785714 8.36700137,3.52250739 8.39118304,3.53180804 C8.46372804,3.56343022 8.5,3.61830318 8.5,3.69642857 L8.5,3.69642857 Z"/>
</g>
<path d="M97.9285714,14.5714286 L97.9285714,14.8571429 C97.9285714,14.8958335 97.9144347,14.9293153 97.8861607,14.9575893 C97.8578868,14.9858632 97.824405,15 97.7857143,15 L94.6428571,15 C94.6041665,15 94.5706847,14.9858632 94.5424107,14.9575893 C94.5141368,14.9293153 94.5,14.8958335 94.5,14.8571429 L94.5,14.5714286 C94.5,14.5327379 94.5141368,14.4992561 94.5424107,14.4709821 C94.5706847,14.4427082 94.6041665,14.4285714 94.6428571,14.4285714 L97.7857143,14.4285714 C97.824405,14.4285714 97.8578868,14.4427082 97.8861607,14.4709821 C97.9144347,14.4992561 97.9285714,14.5327379 97.9285714,14.5714286 L97.9285714,14.5714286 Z M97.9285714,13.4285714 L97.9285714,13.7142857 C97.9285714,13.7529764 97.9144347,13.7864582 97.8861607,13.8147321 C97.8578868,13.8430061 97.824405,13.8571429 97.7857143,13.8571429 L94.6428571,13.8571429 C94.6041665,13.8571429 94.5706847,13.8430061 94.5424107,13.8147321 C94.5141368,13.7864582 94.5,13.7529764 94.5,13.7142857 L94.5,13.4285714 C94.5,13.3898808 94.5141368,13.356399 94.5424107,13.328125 C94.5706847,13.299851 94.6041665,13.2857143 94.6428571,13.2857143 L97.7857143,13.2857143 C97.824405,13.2857143 97.8578868,13.299851 97.8861607,13.328125 C97.9144347,13.356399 97.9285714,13.3898808 97.9285714,13.4285714 L97.9285714,13.4285714 Z M97.9285714,12.2857143 L97.9285714,12.5714286 C97.9285714,12.6101192 97.9144347,12.643601 97.8861607,12.671875 C97.8578868,12.700149 97.824405,12.7142857 97.7857143,12.7142857 L94.6428571,12.7142857 C94.6041665,12.7142857 94.5706847,12.700149 94.5424107,12.671875 C94.5141368,12.643601 94.5,12.6101192 94.5,12.5714286 L94.5,12.2857143 C94.5,12.2470236 94.5141368,12.2135418 94.5424107,12.1852679 C94.5706847,12.1569939 94.6041665,12.1428571 94.6428571,12.1428571 L97.7857143,12.1428571 C97.824405,12.1428571 97.8578868,12.1569939 97.8861607,12.1852679 C97.9144347,12.2135418 97.9285714,12.2470236 97.9285714,12.2857143 L97.9285714,12.2857143 Z" fill="#FFFFFF"/>
<path d="M5.92857143,13.5714286 L5.92857143,13.8571429 C5.92857143,13.9360123 5.90439012,14.0033479 5.85602679,14.0591518 C5.80766345,14.1149556 5.74479205,14.1428571 5.66741071,14.1428571 L4.09598214,14.1428571 L4.75,14.7991071 C4.8065479,14.8526788 4.83482143,14.9196425 4.83482143,15 C4.83482143,15.0803575 4.8065479,15.1473212 4.75,15.2008929 L4.58258929,15.3705357 C4.52752949,15.4255955 4.46056587,15.453125 4.38169643,15.453125 C4.30431509,15.453125 4.23660743,15.4255955 4.17857143,15.3705357 L2.72544643,13.9151786 C2.67038663,13.8601188 2.64285714,13.7931552 2.64285714,13.7142857 C2.64285714,13.6369044 2.67038663,13.5691967 2.72544643,13.5111607 L4.17857143,12.0602679 C4.23511933,12.00372 4.30282699,11.9754464 4.38169643,11.9754464 C4.45907777,11.9754464 4.52604138,12.00372 4.58258929,12.0602679 L4.75,12.2254464 C4.8065479,12.2819943 4.83482143,12.349702 4.83482143,12.4285714 C4.83482143,12.5074409 4.8065479,12.5751485 4.75,12.6316964 L4.09598214,13.2857143 L5.66741071,13.2857143 C5.74479205,13.2857143 5.80766345,13.3136158 5.85602679,13.3694196 C5.90439012,13.4252235 5.92857143,13.4925591 5.92857143,13.5714286 L5.92857143,13.5714286 Z" fill="#FFFFFF"/>
<path d="M10.9285714,13.5714286 L10.9285714,13.8571429 C10.9285714,13.9360123 10.9043901,14.0033479 10.8560268,14.0591518 C10.8076634,14.1149556 10.7447921,14.1428571 10.6674107,14.1428571 L9.09598214,14.1428571 L9.75,14.7991071 C9.8065479,14.8526788 9.83482143,14.9196425 9.83482143,15 C9.83482143,15.0803575 9.8065479,15.1473212 9.75,15.2008929 L9.58258929,15.3705357 C9.52752949,15.4255955 9.46056587,15.453125 9.38169643,15.453125 C9.30431509,15.453125 9.23660743,15.4255955 9.17857143,15.3705357 L7.72544643,13.9151786 C7.67038663,13.8601188 7.64285714,13.7931552 7.64285714,13.7142857 C7.64285714,13.6369044 7.67038663,13.5691967 7.72544643,13.5111607 L9.17857143,12.0602679 C9.23511933,12.00372 9.30282699,11.9754464 9.38169643,11.9754464 C9.45907777,11.9754464 9.52604138,12.00372 9.58258929,12.0602679 L9.75,12.2254464 C9.8065479,12.2819943 9.83482143,12.349702 9.83482143,12.4285714 C9.83482143,12.5074409 9.8065479,12.5751485 9.75,12.6316964 L9.09598214,13.2857143 L10.6674107,13.2857143 C10.7447921,13.2857143 10.8076634,13.3136158 10.8560268,13.3694196 C10.9043901,13.4252235 10.9285714,13.4925591 10.9285714,13.5714286 L10.9285714,13.5714286 Z" fill="#FFFFFF" transform="translate(9.285714, 13.714286) scale(-1, 1) translate(-9.285714, -13.714286) "/>
<path d="M16.9285714,12.1428571 L16.9285714,13.1428571 C16.9285714,13.1815478 16.9144347,13.2150296 16.8861607,13.2433036 C16.8578868,13.2715775 16.824405,13.2857143 16.7857143,13.2857143 L15.7857143,13.2857143 C15.723214,13.2857143 15.6793156,13.2559527 15.6540179,13.1964286 C15.6287201,13.1383926 15.6391367,13.0870538 15.6852679,13.0424107 L15.9933036,12.734375 C15.7730644,12.5305049 15.5133944,12.4285714 15.2142857,12.4285714 C15.059523,12.4285714 14.9118311,12.4587051 14.7712054,12.5189732 C14.6305797,12.5792414 14.5089291,12.6607138 14.40625,12.7633929 C14.3035709,12.8660719 14.2220985,12.9877225 14.1618304,13.1283482 C14.1015622,13.2689739 14.0714286,13.4166659 14.0714286,13.5714286 C14.0714286,13.7261912 14.1015622,13.8738832 14.1618304,14.0145089 C14.2220985,14.1551346 14.3035709,14.2767852 14.40625,14.3794643 C14.5089291,14.4821434 14.6305797,14.5636158 14.7712054,14.6238839 C14.9118311,14.6841521 15.059523,14.7142857 15.2142857,14.7142857 C15.3913699,14.7142857 15.558779,14.6755956 15.7165179,14.5982143 C15.8742567,14.5208329 16.0074399,14.411459 16.1160714,14.2700893 C16.1264881,14.2552083 16.1436011,14.2462798 16.1674107,14.2433036 C16.1882442,14.2433036 16.2068452,14.2499999 16.2232143,14.2633929 L16.5290179,14.5714286 C16.5424108,14.5833334 16.5494792,14.5985862 16.5502232,14.6171875 C16.5509673,14.6357888 16.545387,14.6525297 16.5334821,14.6674107 C16.371279,14.8638403 16.1748523,15.0159965 15.9441964,15.1238839 C15.7135405,15.2317714 15.4702394,15.2857143 15.2142857,15.2857143 C14.9821417,15.2857143 14.7604177,15.2403278 14.5491071,15.1495536 C14.3377966,15.0587793 14.1555067,14.9367567 14.0022321,14.7834821 C13.8489576,14.6302076 13.726935,14.4479177 13.6361607,14.2366071 C13.5453865,14.0252966 13.5,13.8035726 13.5,13.5714286 C13.5,13.3392846 13.5453865,13.1175606 13.6361607,12.90625 C13.726935,12.6949394 13.8489576,12.5126496 14.0022321,12.359375 C14.1555067,12.2061004 14.3377966,12.0840778 14.5491071,11.9933036 C14.7604177,11.9025293 14.9821417,11.8571429 15.2142857,11.8571429 C15.4330368,11.8571429 15.6447162,11.8984371 15.8493304,11.9810268 C16.0539445,12.0636165 16.2358623,12.1800588 16.3950893,12.3303571 L16.6852679,12.0424107 C16.7284228,11.9962795 16.7805056,11.985863 16.8415179,12.0111607 C16.8995539,12.0364585 16.9285714,12.0803568 16.9285714,12.1428571 L16.9285714,12.1428571 Z" fill="#FFFFFF"/>
<path fill="#fff" d="M97.9285714,14.5714286 L97.9285714,14.8571429 C97.9285714,14.8958335 97.9144347,14.9293153 97.8861607,14.9575893 C97.8578868,14.9858632 97.824405,15 97.7857143,15 L94.6428571,15 C94.6041665,15 94.5706847,14.9858632 94.5424107,14.9575893 C94.5141368,14.9293153 94.5,14.8958335 94.5,14.8571429 L94.5,14.5714286 C94.5,14.5327379 94.5141368,14.4992561 94.5424107,14.4709821 C94.5706847,14.4427082 94.6041665,14.4285714 94.6428571,14.4285714 L97.7857143,14.4285714 C97.824405,14.4285714 97.8578868,14.4427082 97.8861607,14.4709821 C97.9144347,14.4992561 97.9285714,14.5327379 97.9285714,14.5714286 L97.9285714,14.5714286 Z M97.9285714,13.4285714 L97.9285714,13.7142857 C97.9285714,13.7529764 97.9144347,13.7864582 97.8861607,13.8147321 C97.8578868,13.8430061 97.824405,13.8571429 97.7857143,13.8571429 L94.6428571,13.8571429 C94.6041665,13.8571429 94.5706847,13.8430061 94.5424107,13.8147321 C94.5141368,13.7864582 94.5,13.7529764 94.5,13.7142857 L94.5,13.4285714 C94.5,13.3898808 94.5141368,13.356399 94.5424107,13.328125 C94.5706847,13.299851 94.6041665,13.2857143 94.6428571,13.2857143 L97.7857143,13.2857143 C97.824405,13.2857143 97.8578868,13.299851 97.8861607,13.328125 C97.9144347,13.356399 97.9285714,13.3898808 97.9285714,13.4285714 L97.9285714,13.4285714 Z M97.9285714,12.2857143 L97.9285714,12.5714286 C97.9285714,12.6101192 97.9144347,12.643601 97.8861607,12.671875 C97.8578868,12.700149 97.824405,12.7142857 97.7857143,12.7142857 L94.6428571,12.7142857 C94.6041665,12.7142857 94.5706847,12.700149 94.5424107,12.671875 C94.5141368,12.643601 94.5,12.6101192 94.5,12.5714286 L94.5,12.2857143 C94.5,12.2470236 94.5141368,12.2135418 94.5424107,12.1852679 C94.5706847,12.1569939 94.6041665,12.1428571 94.6428571,12.1428571 L97.7857143,12.1428571 C97.824405,12.1428571 97.8578868,12.1569939 97.8861607,12.1852679 C97.9144347,12.2135418 97.9285714,12.2470236 97.9285714,12.2857143 L97.9285714,12.2857143 Z"/>
<path fill="#fff" d="M5.92857143,13.5714286 L5.92857143,13.8571429 C5.92857143,13.9360123 5.90439012,14.0033479 5.85602679,14.0591518 C5.80766345,14.1149556 5.74479205,14.1428571 5.66741071,14.1428571 L4.09598214,14.1428571 L4.75,14.7991071 C4.8065479,14.8526788 4.83482143,14.9196425 4.83482143,15 C4.83482143,15.0803575 4.8065479,15.1473212 4.75,15.2008929 L4.58258929,15.3705357 C4.52752949,15.4255955 4.46056587,15.453125 4.38169643,15.453125 C4.30431509,15.453125 4.23660743,15.4255955 4.17857143,15.3705357 L2.72544643,13.9151786 C2.67038663,13.8601188 2.64285714,13.7931552 2.64285714,13.7142857 C2.64285714,13.6369044 2.67038663,13.5691967 2.72544643,13.5111607 L4.17857143,12.0602679 C4.23511933,12.00372 4.30282699,11.9754464 4.38169643,11.9754464 C4.45907777,11.9754464 4.52604138,12.00372 4.58258929,12.0602679 L4.75,12.2254464 C4.8065479,12.2819943 4.83482143,12.349702 4.83482143,12.4285714 C4.83482143,12.5074409 4.8065479,12.5751485 4.75,12.6316964 L4.09598214,13.2857143 L5.66741071,13.2857143 C5.74479205,13.2857143 5.80766345,13.3136158 5.85602679,13.3694196 C5.90439012,13.4252235 5.92857143,13.4925591 5.92857143,13.5714286 L5.92857143,13.5714286 Z"/>
<path fill="#fff" d="M10.9285714,13.5714286 L10.9285714,13.8571429 C10.9285714,13.9360123 10.9043901,14.0033479 10.8560268,14.0591518 C10.8076634,14.1149556 10.7447921,14.1428571 10.6674107,14.1428571 L9.09598214,14.1428571 L9.75,14.7991071 C9.8065479,14.8526788 9.83482143,14.9196425 9.83482143,15 C9.83482143,15.0803575 9.8065479,15.1473212 9.75,15.2008929 L9.58258929,15.3705357 C9.52752949,15.4255955 9.46056587,15.453125 9.38169643,15.453125 C9.30431509,15.453125 9.23660743,15.4255955 9.17857143,15.3705357 L7.72544643,13.9151786 C7.67038663,13.8601188 7.64285714,13.7931552 7.64285714,13.7142857 C7.64285714,13.6369044 7.67038663,13.5691967 7.72544643,13.5111607 L9.17857143,12.0602679 C9.23511933,12.00372 9.30282699,11.9754464 9.38169643,11.9754464 C9.45907777,11.9754464 9.52604138,12.00372 9.58258929,12.0602679 L9.75,12.2254464 C9.8065479,12.2819943 9.83482143,12.349702 9.83482143,12.4285714 C9.83482143,12.5074409 9.8065479,12.5751485 9.75,12.6316964 L9.09598214,13.2857143 L10.6674107,13.2857143 C10.7447921,13.2857143 10.8076634,13.3136158 10.8560268,13.3694196 C10.9043901,13.4252235 10.9285714,13.4925591 10.9285714,13.5714286 L10.9285714,13.5714286 Z" transform="translate(9.285714, 13.714286) scale(-1, 1) translate(-9.285714, -13.714286) "/>
<path fill="#fff" d="M16.9285714,12.1428571 L16.9285714,13.1428571 C16.9285714,13.1815478 16.9144347,13.2150296 16.8861607,13.2433036 C16.8578868,13.2715775 16.824405,13.2857143 16.7857143,13.2857143 L15.7857143,13.2857143 C15.723214,13.2857143 15.6793156,13.2559527 15.6540179,13.1964286 C15.6287201,13.1383926 15.6391367,13.0870538 15.6852679,13.0424107 L15.9933036,12.734375 C15.7730644,12.5305049 15.5133944,12.4285714 15.2142857,12.4285714 C15.059523,12.4285714 14.9118311,12.4587051 14.7712054,12.5189732 C14.6305797,12.5792414 14.5089291,12.6607138 14.40625,12.7633929 C14.3035709,12.8660719 14.2220985,12.9877225 14.1618304,13.1283482 C14.1015622,13.2689739 14.0714286,13.4166659 14.0714286,13.5714286 C14.0714286,13.7261912 14.1015622,13.8738832 14.1618304,14.0145089 C14.2220985,14.1551346 14.3035709,14.2767852 14.40625,14.3794643 C14.5089291,14.4821434 14.6305797,14.5636158 14.7712054,14.6238839 C14.9118311,14.6841521 15.059523,14.7142857 15.2142857,14.7142857 C15.3913699,14.7142857 15.558779,14.6755956 15.7165179,14.5982143 C15.8742567,14.5208329 16.0074399,14.411459 16.1160714,14.2700893 C16.1264881,14.2552083 16.1436011,14.2462798 16.1674107,14.2433036 C16.1882442,14.2433036 16.2068452,14.2499999 16.2232143,14.2633929 L16.5290179,14.5714286 C16.5424108,14.5833334 16.5494792,14.5985862 16.5502232,14.6171875 C16.5509673,14.6357888 16.545387,14.6525297 16.5334821,14.6674107 C16.371279,14.8638403 16.1748523,15.0159965 15.9441964,15.1238839 C15.7135405,15.2317714 15.4702394,15.2857143 15.2142857,15.2857143 C14.9821417,15.2857143 14.7604177,15.2403278 14.5491071,15.1495536 C14.3377966,15.0587793 14.1555067,14.9367567 14.0022321,14.7834821 C13.8489576,14.6302076 13.726935,14.4479177 13.6361607,14.2366071 C13.5453865,14.0252966 13.5,13.8035726 13.5,13.5714286 C13.5,13.3392846 13.5453865,13.1175606 13.6361607,12.90625 C13.726935,12.6949394 13.8489576,12.5126496 14.0022321,12.359375 C14.1555067,12.2061004 14.3377966,12.0840778 14.5491071,11.9933036 C14.7604177,11.9025293 14.9821417,11.8571429 15.2142857,11.8571429 C15.4330368,11.8571429 15.6447162,11.8984371 15.8493304,11.9810268 C16.0539445,12.0636165 16.2358623,12.1800588 16.3950893,12.3303571 L16.6852679,12.0424107 C16.7284228,11.9962795 16.7805056,11.985863 16.8415179,12.0111607 C16.8995539,12.0364585 16.9285714,12.0803568 16.9285714,12.1428571 L16.9285714,12.1428571 Z"/>
</g>
</g>
</svg>

До

Ширина:  |  Высота:  |  Размер: 9.5 KiB

После

Ширина:  |  Высота:  |  Размер: 9.6 KiB

Просмотреть файл

@ -1,28 +1,24 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="102px" height="62px" viewBox="0 0 102 62" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<path d="M39.565,8.00739557 C39.4896406,8.00249919 39.4115419,8 39.3306224,8 C35.3657519,8 37.8823812,2 33.0112546,2 L7.18295591,2 C2.59740823,2 4.61972552,7.31710024 1.565,7.94055011 L1.565,7.94055011 L1.565,14 L15.5658248,14 L39.565,14 L39.565,8.00739557 Z" id="path-1"/>
</defs>
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(0.500000, 0.000000)">
<g transform="translate(0.000000, 1.000000)">
<rect stroke="#ABE6F8" fill="#FFFFFF" x="0.565" y="0" width="100" height="60"/>
<g>
<use fill="#AAE5F9" fill-rule="evenodd" xlink:href="#path-1"/>
<use fill="none" xlink:href="#path-1"/>
<use fill="none" xlink:href="#path-1"/>
</g>
<rect fill="#ABE6F8" x="0.565" y="7" width="99.685" height="10"/>
<path d="M8.07491535,9.33333333 C6.68872738,9.33333333 5.565,10.4429954 5.565,11.8333333 L5.565,11.8333333 C5.565,13.2140452 6.68484687,14.3333333 8.05891597,14.3333333 L31.8786161,14.3333333 L90.0705787,14.3333333 C91.4482095,14.3333333 92.565,13.2236713 92.565,11.8333333 L92.565,11.8333333 C92.565,10.4526215 91.4491428,9.33333333 90.0550846,9.33333333 L8.07491535,9.33333333 Z" fill="#FFFFFF"/>
<ellipse stroke="#FFFFFF" fill="#AAE5F9" cx="5.565" cy="12" rx="3" ry="3"/>
<path d="M16.2240909,16.6938776 L44.5630004,16.6938776 C45.6668839,16.6938776 46.565,17.5893929 46.565,18.6940672 L46.565,44.9998104 C46.565,46.1094081 45.6686743,47 44.5630004,47 L5.56699958,47 C4.46311611,47 3.565,46.1044846 3.565,44.9998104 L3.565,18.6940672 C3.565,17.5844694 4.46132574,16.6938776 5.56699958,16.6938776 L8.40590909,16.6938776 L12.315,14 L16.2240909,16.6938776 Z" stroke="#92CB3E" stroke-width="2" fill="#FFFFFF"/>
<path d="M25.0575753,38 C23.680964,38 22.565,39.1096621 22.565,40.5 L22.565,40.5 C22.565,41.8807119 23.6941328,43 25.0722854,43 L26.115167,43 C27.4952935,43 29.7367265,43 31.1231981,43 L40.0643408,43 C41.4454167,43 42.565,41.8903379 42.565,40.5 L42.565,40.5 C42.565,39.1192881 41.4468578,38 40.0724247,38 L25.0575753,38 Z" stroke="#92CB3E" fill="#FFFFFF"/>
<path d="M17.565,22.3928571 L17.565,28.4642857 C17.565,28.6205365 17.4924561,28.7302824 17.3473661,28.7935268 C17.2990027,28.8121281 17.2525002,28.8214286 17.2078571,28.8214286 C17.1074102,28.8214286 17.0237057,28.7860867 16.9567411,28.7154018 L14.7078571,26.4665179 L14.7078571,27.3928571 C14.7078571,27.8355677 14.5506787,28.2140981 14.236317,28.5284598 C13.9219553,28.8428215 13.5434248,29 13.1007143,29 L9.17214286,29 C8.72943231,29 8.35090187,28.8428215 8.03654018,28.5284598 C7.72217849,28.2140981 7.565,27.8355677 7.565,27.3928571 L7.565,23.4642857 C7.565,23.0215752 7.72217849,22.6430447 8.03654018,22.328683 C8.35090187,22.0143213 8.72943231,21.8571429 9.17214286,21.8571429 L13.1007143,21.8571429 C13.5434248,21.8571429 13.9219553,22.0143213 14.236317,22.328683 C14.5506787,22.6430447 14.7078571,23.0215752 14.7078571,23.4642857 L14.7078571,24.3850446 L16.9567411,22.1417411 C17.0237057,22.0710562 17.1074102,22.0357143 17.2078571,22.0357143 C17.2525002,22.0357143 17.2990027,22.0450148 17.3473661,22.0636161 C17.4924561,22.1268604 17.565,22.2366064 17.565,22.3928571 L17.565,22.3928571 Z" fill="#00AF84"/>
<path d="M13.565,11.0178571 L13.565,12.8392857 C13.565,12.8861609 13.5432368,12.9190847 13.4997098,12.938058 C13.4852008,12.9436384 13.4712501,12.9464286 13.4578571,12.9464286 C13.4277231,12.9464286 13.4026117,12.935826 13.3825223,12.9146205 L12.7078571,12.2399554 L12.7078571,12.5178571 C12.7078571,12.6506703 12.6607036,12.7642294 12.5663951,12.8585379 C12.4720866,12.9528465 12.3585274,13 12.2257143,13 L11.0471429,13 C10.9143297,13 10.8007706,12.9528465 10.7064621,12.8585379 C10.6121535,12.7642294 10.565,12.6506703 10.565,12.5178571 L10.565,11.3392857 C10.565,11.2064726 10.6121535,11.0929134 10.7064621,10.9986049 C10.8007706,10.9042964 10.9143297,10.8571429 11.0471429,10.8571429 L12.2257143,10.8571429 C12.3585274,10.8571429 12.4720866,10.9042964 12.5663951,10.9986049 C12.6607036,11.0929134 12.7078571,11.2064726 12.7078571,11.3392857 L12.7078571,11.6155134 L13.3825223,10.9425223 C13.4026117,10.9213169 13.4277231,10.9107143 13.4578571,10.9107143 C13.4712501,10.9107143 13.4852008,10.9135044 13.4997098,10.9190848 C13.5432368,10.9380581 13.565,10.9709819 13.565,11.0178571 L13.565,11.0178571 Z" fill="#00AF84"/>
<path d="M6.86418806,12.1429618 C6.86418806,12.2021139 6.84605208,12.2526156 6.80977958,12.2944685 C6.77350707,12.3363214 6.72635353,12.3572475 6.66831752,12.3572475 L5.48974609,12.3572475 L5.98025949,12.849435 C6.02267041,12.8896138 6.04387556,12.9398365 6.04387556,13.0001046 C6.04387556,13.0603728 6.02267041,13.1105955 5.98025949,13.1507743 L5.85470145,13.2780064 C5.8134066,13.3193013 5.76318389,13.3399484 5.70403181,13.3399484 C5.6459958,13.3399484 5.59521506,13.3193013 5.55168806,13.2780064 L4.46184431,12.1864886 C4.42054946,12.1451937 4.39990234,12.094971 4.39990234,12.0358189 C4.39990234,11.9777829 4.42054946,11.9270022 4.46184431,11.8834752 L5.55168806,10.7953055 C5.59409898,10.7528946 5.64487973,10.7316895 5.70403181,10.7316895 C5.76206781,10.7316895 5.81229052,10.7528946 5.85470145,10.7953055 L5.98025949,10.9191895 C6.02267041,10.9616004 6.04387556,11.0123811 6.04387556,11.0715332 C6.04387556,11.1306853 6.02267041,11.181466 5.98025949,11.223877 L5.48974609,11.7143903 L6.66831752,11.7143903 C6.72635353,11.7143903 6.77350707,11.7353165 6.80977958,11.7771694 C6.84605208,11.8190223 6.86418806,11.869524 6.86418806,11.9286761 L6.86418806,12.1429618 Z" fill="#FFFFFF"/>
<path d="M97.1364286,12.6785714 L97.1364286,12.8928571 C97.1364286,12.9218751 97.125826,12.9469865 97.1046205,12.968192 C97.0834151,12.9893974 97.0583037,13 97.0292857,13 L94.6721429,13 C94.6431249,13 94.6180135,12.9893974 94.596808,12.968192 C94.5756026,12.9469865 94.565,12.9218751 94.565,12.8928571 L94.565,12.6785714 C94.565,12.6495534 94.5756026,12.6244421 94.596808,12.6032366 C94.6180135,12.5820311 94.6431249,12.5714286 94.6721429,12.5714286 L97.0292857,12.5714286 C97.0583037,12.5714286 97.0834151,12.5820311 97.1046205,12.6032366 C97.125826,12.6244421 97.1364286,12.6495534 97.1364286,12.6785714 L97.1364286,12.6785714 Z M97.1364286,11.8214286 L97.1364286,12.0357143 C97.1364286,12.0647323 97.125826,12.0898436 97.1046205,12.1110491 C97.0834151,12.1322546 97.0583037,12.1428571 97.0292857,12.1428571 L94.6721429,12.1428571 C94.6431249,12.1428571 94.6180135,12.1322546 94.596808,12.1110491 C94.5756026,12.0898436 94.565,12.0647323 94.565,12.0357143 L94.565,11.8214286 C94.565,11.7924106 94.5756026,11.7672992 94.596808,11.7460937 C94.6180135,11.7248883 94.6431249,11.7142857 94.6721429,11.7142857 L97.0292857,11.7142857 C97.0583037,11.7142857 97.0834151,11.7248883 97.1046205,11.7460937 C97.125826,11.7672992 97.1364286,11.7924106 97.1364286,11.8214286 L97.1364286,11.8214286 Z M97.1364286,10.9642857 L97.1364286,11.1785714 C97.1364286,11.2075894 97.125826,11.2327008 97.1046205,11.2539062 C97.0834151,11.2751117 97.0583037,11.2857143 97.0292857,11.2857143 L94.6721429,11.2857143 C94.6431249,11.2857143 94.6180135,11.2751117 94.596808,11.2539062 C94.5756026,11.2327008 94.565,11.2075894 94.565,11.1785714 L94.565,10.9642857 C94.565,10.9352677 94.5756026,10.9101564 94.596808,10.8889509 C94.6180135,10.8677454 94.6431249,10.8571429 94.6721429,10.8571429 L97.0292857,10.8571429 C97.0583037,10.8571429 97.0834151,10.8677454 97.1046205,10.8889509 C97.125826,10.9101564 97.1364286,10.9352677 97.1364286,10.9642857 L97.1364286,10.9642857 Z" fill="#FFFFFF"/>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg width="102px" height="62px" viewBox="0 0 102 62" xmlns="http://www.w3.org/2000/svg">
<g stroke="none" fill="none" fill-rule="evenodd">
<g transform="translate(0.5,0.0)">
<g transform="translate(0,1)">
<rect stroke="#abe6f8" fill="#fff" x="0.565" width="100" height="60"/>
<path fill="#aae5f9" fill-rule="evenodd" d="M39.565,8.00739557 C39.4896406,8.00249919 39.4115419,8 39.3306224,8 C35.3657519,8 37.8823812,2 33.0112546,2 L7.18295591,2 C2.59740823,2 4.61972552,7.31710024 1.565,7.94055011 L1.565,7.94055011 L1.565,14 L15.5658248,14 L39.565,14 L39.565,8.00739557 Z"/>
<rect fill="#abe6f8" x="0.565" y="7" width="99.685" height="10"/>
<path fill="#fff" d="M8.07491535,9.33333333 C6.68872738,9.33333333 5.565,10.4429954 5.565,11.8333333 L5.565,11.8333333 C5.565,13.2140452 6.68484687,14.3333333 8.05891597,14.3333333 L31.8786161,14.3333333 L90.0705787,14.3333333 C91.4482095,14.3333333 92.565,13.2236713 92.565,11.8333333 L92.565,11.8333333 C92.565,10.4526215 91.4491428,9.33333333 90.0550846,9.33333333 L8.07491535,9.33333333 Z"/>
<ellipse stroke="#fff" fill="#aae5f9" cx="5.565" cy="12" rx="3" ry="3"/>
<path stroke="#92cb3e" stroke-width="2" fill="#fff" d="M16.2240909,16.6938776 L44.5630004,16.6938776 C45.6668839,16.6938776 46.565,17.5893929 46.565,18.6940672 L46.565,44.9998104 C46.565,46.1094081 45.6686743,47 44.5630004,47 L5.56699958,47 C4.46311611,47 3.565,46.1044846 3.565,44.9998104 L3.565,18.6940672 C3.565,17.5844694 4.46132574,16.6938776 5.56699958,16.6938776 L8.40590909,16.6938776 L12.315,14 L16.2240909,16.6938776 Z"/>
<path stroke="#92cb3e" fill="#fff" d="M25.0575753,38 C23.680964,38 22.565,39.1096621 22.565,40.5 L22.565,40.5 C22.565,41.8807119 23.6941328,43 25.0722854,43 L26.115167,43 C27.4952935,43 29.7367265,43 31.1231981,43 L40.0643408,43 C41.4454167,43 42.565,41.8903379 42.565,40.5 L42.565,40.5 C42.565,39.1192881 41.4468578,38 40.0724247,38 L25.0575753,38 Z"/>
<path fill="#00af84" d="M17.565,22.3928571 L17.565,28.4642857 C17.565,28.6205365 17.4924561,28.7302824 17.3473661,28.7935268 C17.2990027,28.8121281 17.2525002,28.8214286 17.2078571,28.8214286 C17.1074102,28.8214286 17.0237057,28.7860867 16.9567411,28.7154018 L14.7078571,26.4665179 L14.7078571,27.3928571 C14.7078571,27.8355677 14.5506787,28.2140981 14.236317,28.5284598 C13.9219553,28.8428215 13.5434248,29 13.1007143,29 L9.17214286,29 C8.72943231,29 8.35090187,28.8428215 8.03654018,28.5284598 C7.72217849,28.2140981 7.565,27.8355677 7.565,27.3928571 L7.565,23.4642857 C7.565,23.0215752 7.72217849,22.6430447 8.03654018,22.328683 C8.35090187,22.0143213 8.72943231,21.8571429 9.17214286,21.8571429 L13.1007143,21.8571429 C13.5434248,21.8571429 13.9219553,22.0143213 14.236317,22.328683 C14.5506787,22.6430447 14.7078571,23.0215752 14.7078571,23.4642857 L14.7078571,24.3850446 L16.9567411,22.1417411 C17.0237057,22.0710562 17.1074102,22.0357143 17.2078571,22.0357143 C17.2525002,22.0357143 17.2990027,22.0450148 17.3473661,22.0636161 C17.4924561,22.1268604 17.565,22.2366064 17.565,22.3928571 L17.565,22.3928571 Z"/>
<path fill="#00af84" d="M13.565,11.0178571 L13.565,12.8392857 C13.565,12.8861609 13.5432368,12.9190847 13.4997098,12.938058 C13.4852008,12.9436384 13.4712501,12.9464286 13.4578571,12.9464286 C13.4277231,12.9464286 13.4026117,12.935826 13.3825223,12.9146205 L12.7078571,12.2399554 L12.7078571,12.5178571 C12.7078571,12.6506703 12.6607036,12.7642294 12.5663951,12.8585379 C12.4720866,12.9528465 12.3585274,13 12.2257143,13 L11.0471429,13 C10.9143297,13 10.8007706,12.9528465 10.7064621,12.8585379 C10.6121535,12.7642294 10.565,12.6506703 10.565,12.5178571 L10.565,11.3392857 C10.565,11.2064726 10.6121535,11.0929134 10.7064621,10.9986049 C10.8007706,10.9042964 10.9143297,10.8571429 11.0471429,10.8571429 L12.2257143,10.8571429 C12.3585274,10.8571429 12.4720866,10.9042964 12.5663951,10.9986049 C12.6607036,11.0929134 12.7078571,11.2064726 12.7078571,11.3392857 L12.7078571,11.6155134 L13.3825223,10.9425223 C13.4026117,10.9213169 13.4277231,10.9107143 13.4578571,10.9107143 C13.4712501,10.9107143 13.4852008,10.9135044 13.4997098,10.9190848 C13.5432368,10.9380581 13.565,10.9709819 13.565,11.0178571 L13.565,11.0178571 Z"/>
<path fill="#fff" d="M6.86418806,12.1429618 C6.86418806,12.2021139 6.84605208,12.2526156 6.80977958,12.2944685 C6.77350707,12.3363214 6.72635353,12.3572475 6.66831752,12.3572475 L5.48974609,12.3572475 L5.98025949,12.849435 C6.02267041,12.8896138 6.04387556,12.9398365 6.04387556,13.0001046 C6.04387556,13.0603728 6.02267041,13.1105955 5.98025949,13.1507743 L5.85470145,13.2780064 C5.8134066,13.3193013 5.76318389,13.3399484 5.70403181,13.3399484 C5.6459958,13.3399484 5.59521506,13.3193013 5.55168806,13.2780064 L4.46184431,12.1864886 C4.42054946,12.1451937 4.39990234,12.094971 4.39990234,12.0358189 C4.39990234,11.9777829 4.42054946,11.9270022 4.46184431,11.8834752 L5.55168806,10.7953055 C5.59409898,10.7528946 5.64487973,10.7316895 5.70403181,10.7316895 C5.76206781,10.7316895 5.81229052,10.7528946 5.85470145,10.7953055 L5.98025949,10.9191895 C6.02267041,10.9616004 6.04387556,11.0123811 6.04387556,11.0715332 C6.04387556,11.1306853 6.02267041,11.181466 5.98025949,11.223877 L5.48974609,11.7143903 L6.66831752,11.7143903 C6.72635353,11.7143903 6.77350707,11.7353165 6.80977958,11.7771694 C6.84605208,11.8190223 6.86418806,11.869524 6.86418806,11.9286761 L6.86418806,12.1429618 Z"/>
<path fill="#fff" d="M97.1364286,12.6785714 L97.1364286,12.8928571 C97.1364286,12.9218751 97.125826,12.9469865 97.1046205,12.968192 C97.0834151,12.9893974 97.0583037,13 97.0292857,13 L94.6721429,13 C94.6431249,13 94.6180135,12.9893974 94.596808,12.968192 C94.5756026,12.9469865 94.565,12.9218751 94.565,12.8928571 L94.565,12.6785714 C94.565,12.6495534 94.5756026,12.6244421 94.596808,12.6032366 C94.6180135,12.5820311 94.6431249,12.5714286 94.6721429,12.5714286 L97.0292857,12.5714286 C97.0583037,12.5714286 97.0834151,12.5820311 97.1046205,12.6032366 C97.125826,12.6244421 97.1364286,12.6495534 97.1364286,12.6785714 L97.1364286,12.6785714 Z M97.1364286,11.8214286 L97.1364286,12.0357143 C97.1364286,12.0647323 97.125826,12.0898436 97.1046205,12.1110491 C97.0834151,12.1322546 97.0583037,12.1428571 97.0292857,12.1428571 L94.6721429,12.1428571 C94.6431249,12.1428571 94.6180135,12.1322546 94.596808,12.1110491 C94.5756026,12.0898436 94.565,12.0647323 94.565,12.0357143 L94.565,11.8214286 C94.565,11.7924106 94.5756026,11.7672992 94.596808,11.7460937 C94.6180135,11.7248883 94.6431249,11.7142857 94.6721429,11.7142857 L97.0292857,11.7142857 C97.0583037,11.7142857 97.0834151,11.7248883 97.1046205,11.7460937 C97.125826,11.7672992 97.1364286,11.7924106 97.1364286,11.8214286 L97.1364286,11.8214286 Z M97.1364286,10.9642857 L97.1364286,11.1785714 C97.1364286,11.2075894 97.125826,11.2327008 97.1046205,11.2539062 C97.0834151,11.2751117 97.0583037,11.2857143 97.0292857,11.2857143 L94.6721429,11.2857143 C94.6431249,11.2857143 94.6180135,11.2751117 94.596808,11.2539062 C94.5756026,11.2327008 94.565,11.2075894 94.565,11.1785714 L94.565,10.9642857 C94.565,10.9352677 94.5756026,10.9101564 94.596808,10.8889509 C94.6180135,10.8677454 94.6431249,10.8571429 94.6721429,10.8571429 L97.0292857,10.8571429 C97.0583037,10.8571429 97.0834151,10.8677454 97.1046205,10.8889509 C97.125826,10.9101564 97.1364286,10.9352677 97.1364286,10.9642857 L97.1364286,10.9642857 Z"/>
</g>
<rect stroke="#ABE6F8" x="0" y="0" width="101" height="62"/>
<rect stroke="#abe6f8" width="101" height="62"/>
</g>
</g>
</svg>

До

Ширина:  |  Высота:  |  Размер: 7.7 KiB

После

Ширина:  |  Высота:  |  Размер: 7.6 KiB

Просмотреть файл

@ -1,19 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="102px" height="62px" viewBox="0 0 102 62" version="1.1" xmlns="http://www.w3.org/2000/svg">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(0.500000, 0.000000)">
<rect stroke="#AAE5F9" fill="#FFFFFF" x="0.990196078" y="1" width="99.0196078" height="60"/>
<rect fill="#AAE5F9" x="2.97058824" y="3" width="33.6666667" height="13"/>
<rect fill="#AAE5F9" x="0.990196078" y="8" width="99.0196078" height="10"/>
<path d="M27.2559789,11 C25.8746722,11 24.754902,12.1096621 24.754902,13.5 L24.754902,13.5 C24.754902,14.8807119 25.8688951,16 27.2538514,16 L46.91717,16 L95.5280221,16 C96.9095015,16 98.0294118,14.8903379 98.0294118,13.5 L98.0294118,13.5 C98.0294118,12.1192881 96.9077658,11 95.5283349,11 L27.2559789,11 Z" fill="#FFFFFF"/>
<rect stroke="#92CB3E" stroke-width="2" fill="#FFFFFF" x="28.7156863" y="15" width="42.5784314" height="22" rx="2"/>
<path d="M51.5228862,29 C50.1376565,29 49.0147059,30.1096621 49.0147059,31.5 L49.0147059,31.5 C49.0147059,32.8807119 50.1327688,34 51.5124335,34 L55.0045081,34 L66.3156937,34 C67.6980258,34 68.8186275,32.8903379 68.8186275,31.5 L68.8186275,31.5 C68.8186275,30.1192881 67.6971405,29 66.3104471,29 L51.5228862,29 Z" stroke="#92CB3E" fill="#FFFFFF"/>
<rect stroke="#ABE6F8" x="0" y="0" width="101" height="62"/>
<path d="M40.6764706,19.7142857 L40.6764706,24.5714286 C40.6764706,24.6964292 40.6184355,24.7842259 40.5023634,24.8348214 C40.4636728,24.8497025 40.4264708,24.8571429 40.3907563,24.8571429 C40.3103988,24.8571429 40.2434351,24.8288693 40.1898634,24.7723214 L38.3907563,22.9732143 L38.3907563,23.7142857 C38.3907563,24.0684542 38.2650135,24.3712785 38.0135242,24.6227679 C37.7620348,24.8742572 37.4592105,25 37.105042,25 L33.9621849,25 C33.6080164,25 33.3051921,24.8742572 33.0537027,24.6227679 C32.8022134,24.3712785 32.6764706,24.0684542 32.6764706,23.7142857 L32.6764706,20.5714286 C32.6764706,20.2172601 32.8022134,19.9144358 33.0537027,19.6629464 C33.3051921,19.4114571 33.6080164,19.2857143 33.9621849,19.2857143 L37.105042,19.2857143 C37.4592105,19.2857143 37.7620348,19.4114571 38.0135242,19.6629464 C38.2650135,19.9144358 38.3907563,20.2172601 38.3907563,20.5714286 L38.3907563,21.3080357 L40.1898634,19.5133929 C40.2434351,19.456845 40.3103988,19.4285714 40.3907563,19.4285714 C40.4264708,19.4285714 40.4636728,19.4360118 40.5023634,19.4508929 C40.6184355,19.5014883 40.6764706,19.5892851 40.6764706,19.7142857 L40.6764706,19.7142857 Z" fill="#00AF84"/>
<path d="M22.2422969,14.5714286 L22.2422969,14.8571429 C22.2422969,14.8958335 22.2281602,14.9293153 22.1998862,14.9575893 C22.1716123,14.9858632 22.1381304,15 22.0994398,15 L18.9565826,15 C18.917892,15 18.8844102,14.9858632 18.8561362,14.9575893 C18.8278623,14.9293153 18.8137255,14.8958335 18.8137255,14.8571429 L18.8137255,14.5714286 C18.8137255,14.5327379 18.8278623,14.4992561 18.8561362,14.4709821 C18.8844102,14.4427082 18.917892,14.4285714 18.9565826,14.4285714 L22.0994398,14.4285714 C22.1381304,14.4285714 22.1716123,14.4427082 22.1998862,14.4709821 C22.2281602,14.4992561 22.2422969,14.5327379 22.2422969,14.5714286 L22.2422969,14.5714286 Z M22.2422969,13.4285714 L22.2422969,13.7142857 C22.2422969,13.7529764 22.2281602,13.7864582 22.1998862,13.8147321 C22.1716123,13.8430061 22.1381304,13.8571429 22.0994398,13.8571429 L18.9565826,13.8571429 C18.917892,13.8571429 18.8844102,13.8430061 18.8561362,13.8147321 C18.8278623,13.7864582 18.8137255,13.7529764 18.8137255,13.7142857 L18.8137255,13.4285714 C18.8137255,13.3898808 18.8278623,13.356399 18.8561362,13.328125 C18.8844102,13.299851 18.917892,13.2857143 18.9565826,13.2857143 L22.0994398,13.2857143 C22.1381304,13.2857143 22.1716123,13.299851 22.1998862,13.328125 C22.2281602,13.356399 22.2422969,13.3898808 22.2422969,13.4285714 L22.2422969,13.4285714 Z M22.2422969,12.2857143 L22.2422969,12.5714286 C22.2422969,12.6101192 22.2281602,12.643601 22.1998862,12.671875 C22.1716123,12.700149 22.1381304,12.7142857 22.0994398,12.7142857 L18.9565826,12.7142857 C18.917892,12.7142857 18.8844102,12.700149 18.8561362,12.671875 C18.8278623,12.643601 18.8137255,12.6101192 18.8137255,12.5714286 L18.8137255,12.2857143 C18.8137255,12.2470236 18.8278623,12.2135418 18.8561362,12.1852679 C18.8844102,12.1569939 18.917892,12.1428571 18.9565826,12.1428571 L22.0994398,12.1428571 C22.1381304,12.1428571 22.1716123,12.1569939 22.1998862,12.1852679 C22.2281602,12.2135418 22.2422969,12.2470236 22.2422969,12.2857143 L22.2422969,12.2857143 Z" fill="#FFFFFF"/>
<path d="M7.38935574,13.5714286 L7.38935574,13.8571429 C7.38935574,13.9360123 7.36517444,14.0033479 7.3168111,14.0591518 C7.26844776,14.1149556 7.20557637,14.1428571 7.12819503,14.1428571 L5.55676646,14.1428571 L6.21078431,14.7991071 C6.26733222,14.8526788 6.29560574,14.9196425 6.29560574,15 C6.29560574,15.0803575 6.26733222,15.1473212 6.21078431,15.2008929 L6.0433736,15.3705357 C5.9883138,15.4255955 5.92135018,15.453125 5.84248074,15.453125 C5.7650994,15.453125 5.69739175,15.4255955 5.63935574,15.3705357 L4.18623074,13.9151786 C4.13117094,13.8601188 4.10364146,13.7931552 4.10364146,13.7142857 C4.10364146,13.6369044 4.13117094,13.5691967 4.18623074,13.5111607 L5.63935574,12.0602679 C5.69590364,12.00372 5.7636113,11.9754464 5.84248074,11.9754464 C5.91986208,11.9754464 5.9868257,12.00372 6.0433736,12.0602679 L6.21078431,12.2254464 C6.26733222,12.2819943 6.29560574,12.349702 6.29560574,12.4285714 C6.29560574,12.5074409 6.26733222,12.5751485 6.21078431,12.6316964 L5.55676646,13.2857143 L7.12819503,13.2857143 C7.20557637,13.2857143 7.26844776,13.3136158 7.3168111,13.3694196 C7.36517444,13.4252235 7.38935574,13.4925591 7.38935574,13.5714286 L7.38935574,13.5714286 Z" fill="#FFFFFF"/>
<path d="M12.3403361,13.5714286 L12.3403361,13.8571429 C12.3403361,13.9360123 12.3161548,14.0033479 12.2677915,14.0591518 C12.2194282,14.1149556 12.1565568,14.1428571 12.0791754,14.1428571 L10.5077468,14.1428571 L11.1617647,14.7991071 C11.2183126,14.8526788 11.2465861,14.9196425 11.2465861,15 C11.2465861,15.0803575 11.2183126,15.1473212 11.1617647,15.2008929 L10.994354,15.3705357 C10.9392942,15.4255955 10.8723306,15.453125 10.7934611,15.453125 C10.7160798,15.453125 10.6483721,15.4255955 10.5903361,15.3705357 L9.13721113,13.9151786 C9.08215134,13.8601188 9.05462185,13.7931552 9.05462185,13.7142857 C9.05462185,13.6369044 9.08215134,13.5691967 9.13721113,13.5111607 L10.5903361,12.0602679 C10.646884,12.00372 10.7145917,11.9754464 10.7934611,11.9754464 C10.8708425,11.9754464 10.9378061,12.00372 10.994354,12.0602679 L11.1617647,12.2254464 C11.2183126,12.2819943 11.2465861,12.349702 11.2465861,12.4285714 C11.2465861,12.5074409 11.2183126,12.5751485 11.1617647,12.6316964 L10.5077468,13.2857143 L12.0791754,13.2857143 C12.1565568,13.2857143 12.2194282,13.3136158 12.2677915,13.3694196 C12.3161548,13.4252235 12.3403361,13.4925591 12.3403361,13.5714286 L12.3403361,13.5714286 Z" fill="#FFFFFF" transform="translate(10.697479, 13.714286) scale(-1, 1) translate(-10.697479, -13.714286) "/>
<path d="M17.2913165,12.1428571 L17.2913165,13.1428571 C17.2913165,13.1815478 17.2771798,13.2150296 17.2489058,13.2433036 C17.2206319,13.2715775 17.1871501,13.2857143 17.1484594,13.2857143 L16.1484594,13.2857143 C16.0859591,13.2857143 16.0420607,13.2559527 16.016763,13.1964286 C15.9914652,13.1383926 16.0018818,13.0870538 16.048013,13.0424107 L16.3560487,12.734375 C16.1358095,12.5305049 15.8761395,12.4285714 15.5770308,12.4285714 C15.4222681,12.4285714 15.2745762,12.4587051 15.1339505,12.5189732 C14.9933248,12.5792414 14.8716742,12.6607138 14.7689951,12.7633929 C14.666316,12.8660719 14.5848436,12.9877225 14.5245755,13.1283482 C14.4643073,13.2689739 14.4341737,13.4166659 14.4341737,13.5714286 C14.4341737,13.7261912 14.4643073,13.8738832 14.5245755,14.0145089 C14.5848436,14.1551346 14.666316,14.2767852 14.7689951,14.3794643 C14.8716742,14.4821434 14.9933248,14.5636158 15.1339505,14.6238839 C15.2745762,14.6841521 15.4222681,14.7142857 15.5770308,14.7142857 C15.754115,14.7142857 15.9215241,14.6755956 16.079263,14.5982143 C16.2370018,14.5208329 16.370185,14.411459 16.4788165,14.2700893 C16.4892332,14.2552083 16.5063462,14.2462798 16.5301558,14.2433036 C16.5509892,14.2433036 16.5695903,14.2499999 16.5859594,14.2633929 L16.891763,14.5714286 C16.9051559,14.5833334 16.9122243,14.5985862 16.9129683,14.6171875 C16.9137124,14.6357888 16.9081321,14.6525297 16.8962272,14.6674107 C16.734024,14.8638403 16.5375974,15.0159965 16.3069415,15.1238839 C16.0762856,15.2317714 15.8329845,15.2857143 15.5770308,15.2857143 C15.3448868,15.2857143 15.1231628,15.2403278 14.9118522,15.1495536 C14.7005417,15.0587793 14.5182518,14.9367567 14.3649772,14.7834821 C14.2117027,14.6302076 14.0896801,14.4479177 13.9989058,14.2366071 C13.9081315,14.0252966 13.8627451,13.8035726 13.8627451,13.5714286 C13.8627451,13.3392846 13.9081315,13.1175606 13.9989058,12.90625 C14.0896801,12.6949394 14.2117027,12.5126496 14.3649772,12.359375 C14.5182518,12.2061004 14.7005417,12.0840778 14.9118522,11.9933036 C15.1231628,11.9025293 15.3448868,11.8571429 15.5770308,11.8571429 C15.7957819,11.8571429 16.0074613,11.8984371 16.2120755,11.9810268 C16.4166896,12.0636165 16.5986074,12.1800588 16.7578344,12.3303571 L17.048013,12.0424107 C17.0911679,11.9962795 17.1432507,11.985863 17.204263,12.0111607 C17.262299,12.0364585 17.2913165,12.0803568 17.2913165,12.1428571 L17.2913165,12.1428571 Z" fill="#FFFFFF"/>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg width="102px" height="62px" viewBox="0 0 102 62" xmlns="http://www.w3.org/2000/svg">
<g stroke="none" fill="none" fill-rule="evenodd">
<g transform="translate(0.5,0.0)">
<rect stroke="#aae5f9" fill="#fff" x="0.99" y="1" width="99.02" height="60"/>
<rect fill="#aae5f9" x="2.97" y="3" width="33.67" height="13"/>
<rect fill="#aae5f9" x="0.99" y="8" width="99.02" height="10"/>
<path fill="#fff" d="M27.2559789,11 C25.8746722,11 24.754902,12.1096621 24.754902,13.5 L24.754902,13.5 C24.754902,14.8807119 25.8688951,16 27.2538514,16 L46.91717,16 L95.5280221,16 C96.9095015,16 98.0294118,14.8903379 98.0294118,13.5 L98.0294118,13.5 C98.0294118,12.1192881 96.9077658,11 95.5283349,11 L27.2559789,11 Z"/>
<rect stroke="#92cb3e" stroke-width="2" fill="#fff" x="28.72" y="15" width="42.58" height="22" rx="2"/>
<path stroke="#92cb3e" fill="#fff" d="M51.5228862,29 C50.1376565,29 49.0147059,30.1096621 49.0147059,31.5 L49.0147059,31.5 C49.0147059,32.8807119 50.1327688,34 51.5124335,34 L55.0045081,34 L66.3156937,34 C67.6980258,34 68.8186275,32.8903379 68.8186275,31.5 L68.8186275,31.5 C68.8186275,30.1192881 67.6971405,29 66.3104471,29 L51.5228862,29 Z"/>
<rect stroke="#abe6f8" width="101" height="62"/>
<path fill="#00af84" d="M40.6764706,19.7142857 L40.6764706,24.5714286 C40.6764706,24.6964292 40.6184355,24.7842259 40.5023634,24.8348214 C40.4636728,24.8497025 40.4264708,24.8571429 40.3907563,24.8571429 C40.3103988,24.8571429 40.2434351,24.8288693 40.1898634,24.7723214 L38.3907563,22.9732143 L38.3907563,23.7142857 C38.3907563,24.0684542 38.2650135,24.3712785 38.0135242,24.6227679 C37.7620348,24.8742572 37.4592105,25 37.105042,25 L33.9621849,25 C33.6080164,25 33.3051921,24.8742572 33.0537027,24.6227679 C32.8022134,24.3712785 32.6764706,24.0684542 32.6764706,23.7142857 L32.6764706,20.5714286 C32.6764706,20.2172601 32.8022134,19.9144358 33.0537027,19.6629464 C33.3051921,19.4114571 33.6080164,19.2857143 33.9621849,19.2857143 L37.105042,19.2857143 C37.4592105,19.2857143 37.7620348,19.4114571 38.0135242,19.6629464 C38.2650135,19.9144358 38.3907563,20.2172601 38.3907563,20.5714286 L38.3907563,21.3080357 L40.1898634,19.5133929 C40.2434351,19.456845 40.3103988,19.4285714 40.3907563,19.4285714 C40.4264708,19.4285714 40.4636728,19.4360118 40.5023634,19.4508929 C40.6184355,19.5014883 40.6764706,19.5892851 40.6764706,19.7142857 L40.6764706,19.7142857 Z"/>
<path fill="#fff" d="M22.2422969,14.5714286 L22.2422969,14.8571429 C22.2422969,14.8958335 22.2281602,14.9293153 22.1998862,14.9575893 C22.1716123,14.9858632 22.1381304,15 22.0994398,15 L18.9565826,15 C18.917892,15 18.8844102,14.9858632 18.8561362,14.9575893 C18.8278623,14.9293153 18.8137255,14.8958335 18.8137255,14.8571429 L18.8137255,14.5714286 C18.8137255,14.5327379 18.8278623,14.4992561 18.8561362,14.4709821 C18.8844102,14.4427082 18.917892,14.4285714 18.9565826,14.4285714 L22.0994398,14.4285714 C22.1381304,14.4285714 22.1716123,14.4427082 22.1998862,14.4709821 C22.2281602,14.4992561 22.2422969,14.5327379 22.2422969,14.5714286 L22.2422969,14.5714286 Z M22.2422969,13.4285714 L22.2422969,13.7142857 C22.2422969,13.7529764 22.2281602,13.7864582 22.1998862,13.8147321 C22.1716123,13.8430061 22.1381304,13.8571429 22.0994398,13.8571429 L18.9565826,13.8571429 C18.917892,13.8571429 18.8844102,13.8430061 18.8561362,13.8147321 C18.8278623,13.7864582 18.8137255,13.7529764 18.8137255,13.7142857 L18.8137255,13.4285714 C18.8137255,13.3898808 18.8278623,13.356399 18.8561362,13.328125 C18.8844102,13.299851 18.917892,13.2857143 18.9565826,13.2857143 L22.0994398,13.2857143 C22.1381304,13.2857143 22.1716123,13.299851 22.1998862,13.328125 C22.2281602,13.356399 22.2422969,13.3898808 22.2422969,13.4285714 L22.2422969,13.4285714 Z M22.2422969,12.2857143 L22.2422969,12.5714286 C22.2422969,12.6101192 22.2281602,12.643601 22.1998862,12.671875 C22.1716123,12.700149 22.1381304,12.7142857 22.0994398,12.7142857 L18.9565826,12.7142857 C18.917892,12.7142857 18.8844102,12.700149 18.8561362,12.671875 C18.8278623,12.643601 18.8137255,12.6101192 18.8137255,12.5714286 L18.8137255,12.2857143 C18.8137255,12.2470236 18.8278623,12.2135418 18.8561362,12.1852679 C18.8844102,12.1569939 18.917892,12.1428571 18.9565826,12.1428571 L22.0994398,12.1428571 C22.1381304,12.1428571 22.1716123,12.1569939 22.1998862,12.1852679 C22.2281602,12.2135418 22.2422969,12.2470236 22.2422969,12.2857143 L22.2422969,12.2857143 Z"/>
<path fill="#fff" d="M7.38935574,13.5714286 L7.38935574,13.8571429 C7.38935574,13.9360123 7.36517444,14.0033479 7.3168111,14.0591518 C7.26844776,14.1149556 7.20557637,14.1428571 7.12819503,14.1428571 L5.55676646,14.1428571 L6.21078431,14.7991071 C6.26733222,14.8526788 6.29560574,14.9196425 6.29560574,15 C6.29560574,15.0803575 6.26733222,15.1473212 6.21078431,15.2008929 L6.0433736,15.3705357 C5.9883138,15.4255955 5.92135018,15.453125 5.84248074,15.453125 C5.7650994,15.453125 5.69739175,15.4255955 5.63935574,15.3705357 L4.18623074,13.9151786 C4.13117094,13.8601188 4.10364146,13.7931552 4.10364146,13.7142857 C4.10364146,13.6369044 4.13117094,13.5691967 4.18623074,13.5111607 L5.63935574,12.0602679 C5.69590364,12.00372 5.7636113,11.9754464 5.84248074,11.9754464 C5.91986208,11.9754464 5.9868257,12.00372 6.0433736,12.0602679 L6.21078431,12.2254464 C6.26733222,12.2819943 6.29560574,12.349702 6.29560574,12.4285714 C6.29560574,12.5074409 6.26733222,12.5751485 6.21078431,12.6316964 L5.55676646,13.2857143 L7.12819503,13.2857143 C7.20557637,13.2857143 7.26844776,13.3136158 7.3168111,13.3694196 C7.36517444,13.4252235 7.38935574,13.4925591 7.38935574,13.5714286 L7.38935574,13.5714286 Z"/>
<path fill="#fff" d="M12.3403361,13.5714286 L12.3403361,13.8571429 C12.3403361,13.9360123 12.3161548,14.0033479 12.2677915,14.0591518 C12.2194282,14.1149556 12.1565568,14.1428571 12.0791754,14.1428571 L10.5077468,14.1428571 L11.1617647,14.7991071 C11.2183126,14.8526788 11.2465861,14.9196425 11.2465861,15 C11.2465861,15.0803575 11.2183126,15.1473212 11.1617647,15.2008929 L10.994354,15.3705357 C10.9392942,15.4255955 10.8723306,15.453125 10.7934611,15.453125 C10.7160798,15.453125 10.6483721,15.4255955 10.5903361,15.3705357 L9.13721113,13.9151786 C9.08215134,13.8601188 9.05462185,13.7931552 9.05462185,13.7142857 C9.05462185,13.6369044 9.08215134,13.5691967 9.13721113,13.5111607 L10.5903361,12.0602679 C10.646884,12.00372 10.7145917,11.9754464 10.7934611,11.9754464 C10.8708425,11.9754464 10.9378061,12.00372 10.994354,12.0602679 L11.1617647,12.2254464 C11.2183126,12.2819943 11.2465861,12.349702 11.2465861,12.4285714 C11.2465861,12.5074409 11.2183126,12.5751485 11.1617647,12.6316964 L10.5077468,13.2857143 L12.0791754,13.2857143 C12.1565568,13.2857143 12.2194282,13.3136158 12.2677915,13.3694196 C12.3161548,13.4252235 12.3403361,13.4925591 12.3403361,13.5714286 L12.3403361,13.5714286 Z" transform="translate(10.697479, 13.714286) scale(-1, 1) translate(-10.697479, -13.714286) "/>
<path fill="#fff" d="M17.2913165,12.1428571 L17.2913165,13.1428571 C17.2913165,13.1815478 17.2771798,13.2150296 17.2489058,13.2433036 C17.2206319,13.2715775 17.1871501,13.2857143 17.1484594,13.2857143 L16.1484594,13.2857143 C16.0859591,13.2857143 16.0420607,13.2559527 16.016763,13.1964286 C15.9914652,13.1383926 16.0018818,13.0870538 16.048013,13.0424107 L16.3560487,12.734375 C16.1358095,12.5305049 15.8761395,12.4285714 15.5770308,12.4285714 C15.4222681,12.4285714 15.2745762,12.4587051 15.1339505,12.5189732 C14.9933248,12.5792414 14.8716742,12.6607138 14.7689951,12.7633929 C14.666316,12.8660719 14.5848436,12.9877225 14.5245755,13.1283482 C14.4643073,13.2689739 14.4341737,13.4166659 14.4341737,13.5714286 C14.4341737,13.7261912 14.4643073,13.8738832 14.5245755,14.0145089 C14.5848436,14.1551346 14.666316,14.2767852 14.7689951,14.3794643 C14.8716742,14.4821434 14.9933248,14.5636158 15.1339505,14.6238839 C15.2745762,14.6841521 15.4222681,14.7142857 15.5770308,14.7142857 C15.754115,14.7142857 15.9215241,14.6755956 16.079263,14.5982143 C16.2370018,14.5208329 16.370185,14.411459 16.4788165,14.2700893 C16.4892332,14.2552083 16.5063462,14.2462798 16.5301558,14.2433036 C16.5509892,14.2433036 16.5695903,14.2499999 16.5859594,14.2633929 L16.891763,14.5714286 C16.9051559,14.5833334 16.9122243,14.5985862 16.9129683,14.6171875 C16.9137124,14.6357888 16.9081321,14.6525297 16.8962272,14.6674107 C16.734024,14.8638403 16.5375974,15.0159965 16.3069415,15.1238839 C16.0762856,15.2317714 15.8329845,15.2857143 15.5770308,15.2857143 C15.3448868,15.2857143 15.1231628,15.2403278 14.9118522,15.1495536 C14.7005417,15.0587793 14.5182518,14.9367567 14.3649772,14.7834821 C14.2117027,14.6302076 14.0896801,14.4479177 13.9989058,14.2366071 C13.9081315,14.0252966 13.8627451,13.8035726 13.8627451,13.5714286 C13.8627451,13.3392846 13.9081315,13.1175606 13.9989058,12.90625 C14.0896801,12.6949394 14.2117027,12.5126496 14.3649772,12.359375 C14.5182518,12.2061004 14.7005417,12.0840778 14.9118522,11.9933036 C15.1231628,11.9025293 15.3448868,11.8571429 15.5770308,11.8571429 C15.7957819,11.8571429 16.0074613,11.8984371 16.2120755,11.9810268 C16.4166896,12.0636165 16.5986074,12.1800588 16.7578344,12.3303571 L17.048013,12.0424107 C17.0911679,11.9962795 17.1432507,11.985863 17.204263,12.0111607 C17.262299,12.0364585 17.2913165,12.0803568 17.2913165,12.1428571 L17.2913165,12.1428571 Z"/>
</g>
</g>
</svg>

До

Ширина:  |  Высота:  |  Размер: 9.3 KiB

После

Ширина:  |  Высота:  |  Размер: 9.4 KiB

Просмотреть файл

@ -1,9 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="51px" height="36px" viewBox="0 0 51 36" version="1.1" xmlns="http://www.w3.org/2000/svg">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(0.500000, 0.000000)">
<path d="M50,2.96428571 L50,33.3214286 C50,34.1026825 49.6372804,34.6514121 48.9118304,34.9676339 C48.6700137,35.0606403 48.4375011,35.1071429 48.2142857,35.1071429 C47.7120511,35.1071429 47.2935285,34.9304333 46.9587054,34.5770089 L35.7142857,23.3325893 L35.7142857,27.9642857 C35.7142857,30.1778384 34.9283933,32.0704907 33.3565848,33.6422991 C31.7847764,35.2141076 29.8921242,36 27.6785714,36 L8.03571429,36 C5.82216155,36 3.92950935,35.2141076 2.35770089,33.6422991 C0.785892439,32.0704907 0,30.1778384 0,27.9642857 L0,8.32142857 C0,6.10787584 0.785892439,4.21522363 2.35770089,2.64341518 C3.92950935,1.07160672 5.82216155,0.285714286 8.03571429,0.285714286 L27.6785714,0.285714286 C29.8921242,0.285714286 31.7847764,1.07160672 33.3565848,2.64341518 C34.9283933,4.21522363 35.7142857,6.10787584 35.7142857,8.32142857 L35.7142857,12.9252232 L46.9587054,1.70870536 C47.2935285,1.35528097 47.7120511,1.17857143 48.2142857,1.17857143 C48.4375011,1.17857143 48.6700137,1.22507394 48.9118304,1.31808036 C49.6372804,1.63430218 50,2.18303181 50,2.96428571 L50,2.96428571 Z" fill="#00AF84"/>
<path d="M19.8214286,22.09375 L19.8214286,25.4419643 C19.8214286,25.5907746 19.7656256,25.7209816 19.6540179,25.8325893 C19.5424102,25.944197 19.4122031,26 19.2633929,26 L15.9151786,26 C15.7663683,26 15.6361613,25.944197 15.5245536,25.8325893 C15.4129459,25.7209816 15.3571429,25.5907746 15.3571429,25.4419643 L15.3571429,22.09375 C15.3571429,21.9449397 15.4129459,21.8147327 15.5245536,21.703125 C15.6361613,21.5915173 15.7663683,21.5357143 15.9151786,21.5357143 L19.2633929,21.5357143 C19.4122031,21.5357143 19.5424102,21.5915173 19.6540179,21.703125 C19.7656256,21.8147327 19.8214286,21.9449397 19.8214286,22.09375 L19.8214286,22.09375 Z M24.2299107,13.7232143 C24.2299107,14.2254489 24.1578318,14.6951243 24.0136719,15.1322545 C23.8695119,15.5693846 23.7067531,15.9251288 23.5253906,16.1994978 C23.3440281,16.4738667 23.0882643,16.7505566 22.7580915,17.0295759 C22.4279187,17.3085951 22.1605293,17.5108811 21.9559152,17.6364397 C21.7513011,17.7619984 21.4676357,17.9270823 21.1049107,18.1316964 C20.7235844,18.3456112 20.4050422,18.6478775 20.1492746,19.0385045 C19.8935069,19.4291314 19.765625,19.7406982 19.765625,19.9732143 C19.765625,20.1313252 19.709822,20.2824584 19.5982143,20.4266183 C19.4866066,20.5707783 19.3563996,20.6428571 19.2075893,20.6428571 L15.859375,20.6428571 C15.7198654,20.6428571 15.601284,20.5568275 15.5036272,20.3847656 C15.4059705,20.2127038 15.3571429,20.0383193 15.3571429,19.8616071 L15.3571429,19.233817 C15.3571429,18.4618637 15.6594092,17.7340994 16.2639509,17.0505022 C16.8684926,16.3669051 17.5334785,15.8623528 18.2589286,15.5368304 C18.8076664,15.285713 19.1982875,15.025299 19.4308036,14.7555804 C19.6633196,14.4858617 19.7795759,14.1324427 19.7795759,13.6953125 C19.7795759,13.3046855 19.5633392,12.960567 19.1308594,12.6629464 C18.6983795,12.3653259 18.1984775,12.2165179 17.6311384,12.2165179 C17.0265967,12.2165179 16.5243696,12.3513751 16.124442,12.6210938 C15.7989195,12.8536098 15.3013426,13.3883887 14.6316964,14.2254464 C14.5107881,14.3742567 14.3666303,14.4486607 14.1992188,14.4486607 C14.087611,14.4486607 13.9713548,14.4114587 13.8504464,14.3370536 L11.5625,12.593192 C11.4415917,12.5001855 11.3695128,12.3839293 11.3462612,12.2444196 C11.3230096,12.10491 11.3485859,11.974703 11.4229911,11.8537946 C12.9110938,9.37982394 15.0688103,8.14285714 17.8962054,8.14285714 C18.6402567,8.14285714 19.3889471,8.28701493 20.1422991,8.57533482 C20.8956511,8.86365472 21.5745878,9.24962556 22.1791295,9.73325893 C22.7836712,10.2168923 23.2765978,10.8097993 23.6579241,11.5119978 C24.0392504,12.2141962 24.2299107,12.951261 24.2299107,13.7232143 L24.2299107,13.7232143 Z" fill="#FFFFFF"/>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<svg width="51px" height="36px" viewBox="0 0 51 36" xmlns="http://www.w3.org/2000/svg">
<g stroke="none" fill="none" fill-rule="evenodd">
<g transform="translate(0.5,0)">
<path fill="#00af84" d="M50,2.96428571 L50,33.3214286 C50,34.1026825 49.6372804,34.6514121 48.9118304,34.9676339 C48.6700137,35.0606403 48.4375011,35.1071429 48.2142857,35.1071429 C47.7120511,35.1071429 47.2935285,34.9304333 46.9587054,34.5770089 L35.7142857,23.3325893 L35.7142857,27.9642857 C35.7142857,30.1778384 34.9283933,32.0704907 33.3565848,33.6422991 C31.7847764,35.2141076 29.8921242,36 27.6785714,36 L8.03571429,36 C5.82216155,36 3.92950935,35.2141076 2.35770089,33.6422991 C0.785892439,32.0704907 0,30.1778384 0,27.9642857 L0,8.32142857 C0,6.10787584 0.785892439,4.21522363 2.35770089,2.64341518 C3.92950935,1.07160672 5.82216155,0.285714286 8.03571429,0.285714286 L27.6785714,0.285714286 C29.8921242,0.285714286 31.7847764,1.07160672 33.3565848,2.64341518 C34.9283933,4.21522363 35.7142857,6.10787584 35.7142857,8.32142857 L35.7142857,12.9252232 L46.9587054,1.70870536 C47.2935285,1.35528097 47.7120511,1.17857143 48.2142857,1.17857143 C48.4375011,1.17857143 48.6700137,1.22507394 48.9118304,1.31808036 C49.6372804,1.63430218 50,2.18303181 50,2.96428571 L50,2.96428571 Z"/>
<path fill="#fff" d="M19.8214286,22.09375 L19.8214286,25.4419643 C19.8214286,25.5907746 19.7656256,25.7209816 19.6540179,25.8325893 C19.5424102,25.944197 19.4122031,26 19.2633929,26 L15.9151786,26 C15.7663683,26 15.6361613,25.944197 15.5245536,25.8325893 C15.4129459,25.7209816 15.3571429,25.5907746 15.3571429,25.4419643 L15.3571429,22.09375 C15.3571429,21.9449397 15.4129459,21.8147327 15.5245536,21.703125 C15.6361613,21.5915173 15.7663683,21.5357143 15.9151786,21.5357143 L19.2633929,21.5357143 C19.4122031,21.5357143 19.5424102,21.5915173 19.6540179,21.703125 C19.7656256,21.8147327 19.8214286,21.9449397 19.8214286,22.09375 L19.8214286,22.09375 Z M24.2299107,13.7232143 C24.2299107,14.2254489 24.1578318,14.6951243 24.0136719,15.1322545 C23.8695119,15.5693846 23.7067531,15.9251288 23.5253906,16.1994978 C23.3440281,16.4738667 23.0882643,16.7505566 22.7580915,17.0295759 C22.4279187,17.3085951 22.1605293,17.5108811 21.9559152,17.6364397 C21.7513011,17.7619984 21.4676357,17.9270823 21.1049107,18.1316964 C20.7235844,18.3456112 20.4050422,18.6478775 20.1492746,19.0385045 C19.8935069,19.4291314 19.765625,19.7406982 19.765625,19.9732143 C19.765625,20.1313252 19.709822,20.2824584 19.5982143,20.4266183 C19.4866066,20.5707783 19.3563996,20.6428571 19.2075893,20.6428571 L15.859375,20.6428571 C15.7198654,20.6428571 15.601284,20.5568275 15.5036272,20.3847656 C15.4059705,20.2127038 15.3571429,20.0383193 15.3571429,19.8616071 L15.3571429,19.233817 C15.3571429,18.4618637 15.6594092,17.7340994 16.2639509,17.0505022 C16.8684926,16.3669051 17.5334785,15.8623528 18.2589286,15.5368304 C18.8076664,15.285713 19.1982875,15.025299 19.4308036,14.7555804 C19.6633196,14.4858617 19.7795759,14.1324427 19.7795759,13.6953125 C19.7795759,13.3046855 19.5633392,12.960567 19.1308594,12.6629464 C18.6983795,12.3653259 18.1984775,12.2165179 17.6311384,12.2165179 C17.0265967,12.2165179 16.5243696,12.3513751 16.124442,12.6210938 C15.7989195,12.8536098 15.3013426,13.3883887 14.6316964,14.2254464 C14.5107881,14.3742567 14.3666303,14.4486607 14.1992188,14.4486607 C14.087611,14.4486607 13.9713548,14.4114587 13.8504464,14.3370536 L11.5625,12.593192 C11.4415917,12.5001855 11.3695128,12.3839293 11.3462612,12.2444196 C11.3230096,12.10491 11.3485859,11.974703 11.4229911,11.8537946 C12.9110938,9.37982394 15.0688103,8.14285714 17.8962054,8.14285714 C18.6402567,8.14285714 19.3889471,8.28701493 20.1422991,8.57533482 C20.8956511,8.86365472 21.5745878,9.24962556 22.1791295,9.73325893 C22.7836712,10.2168923 23.2765978,10.8097993 23.6579241,11.5119978 C24.0392504,12.2141962 24.2299107,12.951261 24.2299107,13.7232143 L24.2299107,13.7232143 Z"/>
</g>
</g>
</svg>

До

Ширина:  |  Высота:  |  Размер: 3.9 KiB

После

Ширина:  |  Высота:  |  Размер: 4.1 KiB

Просмотреть файл

@ -8,6 +8,8 @@
<meta name="locales" content="en-US" />
<meta name="default_locale" content="en-US" />
<link rel="shortcut icon" href="favicon.ico">
<link rel="stylesheet" type="text/css" href="shared/css/reset.css">
<link rel="stylesheet" type="text/css" href="shared/css/common.css">
<link rel="stylesheet" type="text/css" href="shared/css/conversation.css">
@ -125,6 +127,8 @@
<script type="text/javascript" src="shared/js/feedbackStore.js"></script>
<script type="text/javascript" src="shared/js/views.js"></script>
<script type="text/javascript" src="shared/js/feedbackViews.js"></script>
<script type="text/javascript" src="shared/js/textChatStore.js"></script>
<script type="text/javascript" src="shared/js/textChatView.js"></script>
<script type="text/javascript" src="js/standaloneAppStore.js"></script>
<script type="text/javascript" src="js/standaloneClient.js"></script>
<script type="text/javascript" src="js/standaloneMozLoop.js"></script>

Просмотреть файл

@ -32,7 +32,8 @@ loop.store.StandaloneMetricsStore = (function() {
button: "button click",
download: "download button click",
faceMute: "face mute",
link: "link click",
failed: "failed",
linkClick: "link click",
pageLoad: "page load messages",
success: "success",
support: "support link click"
@ -40,11 +41,15 @@ loop.store.StandaloneMetricsStore = (function() {
var StandaloneMetricsStore = loop.store.createStore({
actions: [
"connectedToSdkServers",
"connectionFailure",
"gotMediaPermission",
"joinRoom",
"joinedRoom",
"leaveRoom",
"mediaConnected",
"recordClick"
"recordClick",
"remotePeerConnected"
],
/**
@ -103,6 +108,29 @@ loop.store.StandaloneMetricsStore = (function() {
window.ga("send", "event", category, action, label);
},
/**
* Handles notification that we've connected to the sdk servers.
*/
connectedToSdkServers: function() {
this._storeEvent(METRICS_GA_CATEGORY.general, METRICS_GA_ACTIONS.success,
"Joined sdk servers");
},
/**
* Handles connection failures for various reasons.
*
* @param {sharedActions.ConnectionFailure} actionData
*/
connectionFailure: function(actionData) {
if (actionData.reason === FAILURE_DETAILS.MEDIA_DENIED) {
this._storeEvent(METRICS_GA_CATEGORY.general, METRICS_GA_ACTIONS.failed,
"Media denied");
} else if (actionData.reason === FAILURE_DETAILS.NO_MEDIA) {
this._storeEvent(METRICS_GA_CATEGORY.general, METRICS_GA_ACTIONS.failed,
"No media");
}
},
/**
* Handles media permssion being obtained.
*/
@ -119,6 +147,14 @@ loop.store.StandaloneMetricsStore = (function() {
"Join the conversation");
},
/**
* Handles the room having been joined on the loop-server.
*/
joinedRoom: function() {
this._storeEvent(METRICS_GA_CATEGORY.general, METRICS_GA_ACTIONS.success,
"Joined room");
},
/**
* Handles the user clicking the leave room button.
*/
@ -146,6 +182,14 @@ loop.store.StandaloneMetricsStore = (function() {
actionData.linkInfo);
},
/**
* Handles notification that the remote peer is connected.
*/
remotePeerConnected: function() {
this._storeEvent(METRICS_GA_CATEGORY.general, METRICS_GA_ACTIONS.success,
"Remote peer connected");
},
/**
* Handles notifications that the activeRoomStore has changed, updating
* the metrics for room state and mute state as necessary.

Просмотреть файл

@ -55,6 +55,8 @@ loop.standaloneRoomViews = (function(mozL10n) {
_getFailureString: function() {
switch(this.props.failureReason) {
case FAILURE_DETAILS.MEDIA_DENIED:
// XXX Bug 1166824 should provide a better string for this.
case FAILURE_DETAILS.NO_MEDIA:
return mozL10n.get("rooms_media_denied_message");
case FAILURE_DETAILS.EXPIRED_OR_INVALID:
return mozL10n.get("rooms_unavailable_notification_message");
@ -125,7 +127,8 @@ loop.standaloneRoomViews = (function(mozL10n) {
return (
React.createElement("div", {className: "ended-conversation"},
React.createElement(sharedViews.FeedbackView, {
onAfterFeedbackReceived: this.onFeedbackSent}
onAfterFeedbackReceived: this.onFeedbackSent,
noCloseText: true}
)
)
);
@ -578,6 +581,7 @@ loop.standaloneRoomViews = (function(mozL10n) {
return (
React.createElement("div", {className: "room-conversation-wrapper"},
React.createElement("div", {className: "beta-logo"}),
React.createElement(sharedViews.TextChatView, {dispatcher: this.props.dispatcher}),
React.createElement(StandaloneRoomHeader, {dispatcher: this.props.dispatcher}),
React.createElement(StandaloneRoomInfoArea, {roomState: this.state.roomState,
failureReason: this.state.failureReason,

Просмотреть файл

@ -55,6 +55,8 @@ loop.standaloneRoomViews = (function(mozL10n) {
_getFailureString: function() {
switch(this.props.failureReason) {
case FAILURE_DETAILS.MEDIA_DENIED:
// XXX Bug 1166824 should provide a better string for this.
case FAILURE_DETAILS.NO_MEDIA:
return mozL10n.get("rooms_media_denied_message");
case FAILURE_DETAILS.EXPIRED_OR_INVALID:
return mozL10n.get("rooms_unavailable_notification_message");
@ -126,6 +128,7 @@ loop.standaloneRoomViews = (function(mozL10n) {
<div className="ended-conversation">
<sharedViews.FeedbackView
onAfterFeedbackReceived={this.onFeedbackSent}
noCloseText={true}
/>
</div>
);
@ -578,6 +581,7 @@ loop.standaloneRoomViews = (function(mozL10n) {
return (
<div className="room-conversation-wrapper">
<div className="beta-logo" />
<sharedViews.TextChatView dispatcher={this.props.dispatcher} />
<StandaloneRoomHeader dispatcher={this.props.dispatcher} />
<StandaloneRoomInfoArea roomState={this.state.roomState}
failureReason={this.state.failureReason}

Просмотреть файл

@ -455,7 +455,7 @@ loop.webapp = (function($, _, OT, mozL10n) {
getInitialState: function() {
return {
urlCreationDateString: '',
urlCreationDateString: "",
disableCallButton: false
};
},
@ -1040,6 +1040,10 @@ loop.webapp = (function($, _, OT, mozL10n) {
baseServerUrl: loop.config.serverUrl
});
var sdkDriver = new loop.OTSdkDriver({
// For the standalone, always request data channels. If they aren't
// implemented on the client, there won't be a similar message to us, and
// we won't display the UI.
useDataChannels: true,
dispatcher: dispatcher,
sdk: OT
});
@ -1085,12 +1089,16 @@ loop.webapp = (function($, _, OT, mozL10n) {
var standaloneMetricsStore = new loop.store.StandaloneMetricsStore(dispatcher, {
activeRoomStore: activeRoomStore
});
var textChatStore = new loop.store.TextChatStore(dispatcher, {
sdkDriver: sdkDriver
});
loop.store.StoreMixin.register({
feedbackStore: feedbackStore,
// This isn't used in any views, but is saved here to ensure it
// is kept alive.
standaloneMetricsStore: standaloneMetricsStore
standaloneMetricsStore: standaloneMetricsStore,
textChatStore: textChatStore
});
window.addEventListener("unload", function() {

Просмотреть файл

@ -455,7 +455,7 @@ loop.webapp = (function($, _, OT, mozL10n) {
getInitialState: function() {
return {
urlCreationDateString: '',
urlCreationDateString: "",
disableCallButton: false
};
},
@ -1040,6 +1040,10 @@ loop.webapp = (function($, _, OT, mozL10n) {
baseServerUrl: loop.config.serverUrl
});
var sdkDriver = new loop.OTSdkDriver({
// For the standalone, always request data channels. If they aren't
// implemented on the client, there won't be a similar message to us, and
// we won't display the UI.
useDataChannels: true,
dispatcher: dispatcher,
sdk: OT
});
@ -1085,12 +1089,16 @@ loop.webapp = (function($, _, OT, mozL10n) {
var standaloneMetricsStore = new loop.store.StandaloneMetricsStore(dispatcher, {
activeRoomStore: activeRoomStore
});
var textChatStore = new loop.store.TextChatStore(dispatcher, {
sdkDriver: sdkDriver
});
loop.store.StoreMixin.register({
feedbackStore: feedbackStore,
// This isn't used in any views, but is saved here to ensure it
// is kept alive.
standaloneMetricsStore: standaloneMetricsStore
standaloneMetricsStore: standaloneMetricsStore,
textChatStore: textChatStore
});
window.addEventListener("unload", function() {

Просмотреть файл

@ -9,7 +9,7 @@
*/
/* eslint-disable no-path-concat,no-process-exit */
var express = require('express');
var express = require("express");
var app = express();
var port = process.env.PORT || 3000;
@ -27,7 +27,7 @@ if (loopServerUrl[loopServerUrl.length - 1] === "/") {
function getConfigFile(req, res) {
"use strict";
res.set('Content-Type', 'text/javascript');
res.set("Content-Type", "text/javascript");
res.send([
"var loop = loop || {};",
"loop.config = loop.config || {};",
@ -52,38 +52,38 @@ function getConfigFile(req, res) {
].join("\n"));
}
app.get('/content/config.js', getConfigFile);
app.get('/content/c/config.js', getConfigFile);
app.get("/content/config.js", getConfigFile);
app.get("/content/c/config.js", getConfigFile);
// Various mappings to let us end up with:
// /test - for the test files
// /ui - for the ui showcase
// /content - for the standalone files.
app.use('/ui', express.static(__dirname + '/../ui'));
app.use("/ui", express.static(__dirname + "/../ui"));
// This exists exclusively for the unit tests. They are served the
// whole loop/ directory structure and expect some files in the standalone directory.
app.use('/standalone/content', express.static(__dirname + '/content'));
app.use("/standalone/content", express.static(__dirname + "/content"));
// We load /content this from both /content *and* /../content. The first one
// does what we need for running in the github loop-client context, the second one
// handles running in the hg repo under mozilla-central and is used so that the shared
// files are in the right location.
app.use('/content', express.static(__dirname + '/content'));
app.use('/content', express.static(__dirname + '/../content'));
app.use("/content", express.static(__dirname + "/content"));
app.use("/content", express.static(__dirname + "/../content"));
// These two are based on the above, but handle call urls, that have a /c/ in them.
app.use('/content/c', express.static(__dirname + '/content'));
app.use('/content/c', express.static(__dirname + '/../content'));
app.use("/content/c", express.static(__dirname + "/content"));
app.use("/content/c", express.static(__dirname + "/../content"));
// Two lines for the same reason as /content above.
app.use('/test', express.static(__dirname + '/test'));
app.use('/test', express.static(__dirname + '/../test'));
app.use("/test", express.static(__dirname + "/test"));
app.use("/test", express.static(__dirname + "/../test"));
// As we don't have hashes on the urls, the best way to serve the index files
// appears to be to be to closely filter the url and match appropriately.
function serveIndex(req, res) {
return res.sendfile(__dirname + '/content/index.html');
return res.sendfile(__dirname + "/content/index.html");
}
app.get(/^\/content\/[\w\-]+$/, serveIndex);
@ -114,4 +114,4 @@ function shutdown(cb) {
}
}
process.on('SIGTERM', shutdown);
process.on("SIGTERM", shutdown);

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше