зеркало из https://github.com/mozilla/gecko-dev.git
Merge m-c to a CLOSED TREE f-t
This commit is contained in:
Коммит
0d901b89d3
2
CLOBBER
2
CLOBBER
|
@ -22,4 +22,4 @@
|
||||||
# changes to stick? As of bug 928195, this shouldn't be necessary! Please
|
# changes to stick? As of bug 928195, this shouldn't be necessary! Please
|
||||||
# don't change CLOBBER for WebIDL changes any more.
|
# don't change CLOBBER for WebIDL changes any more.
|
||||||
|
|
||||||
Bug 1223729 - Touching CLOBBER for moving files under dom/bluetooth/common
|
Bug 1186060 - Switch Windows compiler from VS2013 to VS2015
|
||||||
|
|
|
@ -27,7 +27,7 @@ export MOZILLA_OFFICIAL=1
|
||||||
|
|
||||||
export MOZ_TELEMETRY_REPORTING=1
|
export MOZ_TELEMETRY_REPORTING=1
|
||||||
|
|
||||||
. $topsrcdir/build/win32/mozconfig.vs2013-win64
|
. $topsrcdir/build/win32/mozconfig.vs2015-win64
|
||||||
|
|
||||||
# Treat warnings as errors (modulo ALLOW_COMPILER_WARNINGS).
|
# Treat warnings as errors (modulo ALLOW_COMPILER_WARNINGS).
|
||||||
ac_add_options --enable-warnings-as-errors
|
ac_add_options --enable-warnings-as-errors
|
||||||
|
|
|
@ -18,7 +18,7 @@ ac_add_options --with-google-oauth-api-keyfile=${_google_oauth_api_keyfile}
|
||||||
# Needed to enable breakpad in application.ini
|
# Needed to enable breakpad in application.ini
|
||||||
export MOZILLA_OFFICIAL=1
|
export MOZILLA_OFFICIAL=1
|
||||||
|
|
||||||
. $topsrcdir/build/win32/mozconfig.vs2013-win64
|
. $topsrcdir/build/win32/mozconfig.vs2015-win64
|
||||||
|
|
||||||
# Treat warnings as errors (modulo ALLOW_COMPILER_WARNINGS).
|
# Treat warnings as errors (modulo ALLOW_COMPILER_WARNINGS).
|
||||||
ac_add_options --enable-warnings-as-errors
|
ac_add_options --enable-warnings-as-errors
|
||||||
|
|
|
@ -9,7 +9,7 @@ ac_add_options --with-branding=browser/branding/nightly
|
||||||
export MOZILLA_OFFICIAL=1
|
export MOZILLA_OFFICIAL=1
|
||||||
|
|
||||||
if test "$PROCESSOR_ARCHITECTURE" = "AMD64" -o "$PROCESSOR_ARCHITEW6432" = "AMD64"; then
|
if test "$PROCESSOR_ARCHITECTURE" = "AMD64" -o "$PROCESSOR_ARCHITEW6432" = "AMD64"; then
|
||||||
. $topsrcdir/build/win32/mozconfig.vs2013-win64
|
. $topsrcdir/build/win32/mozconfig.vs2015-win64
|
||||||
else
|
else
|
||||||
. $topsrcdir/build/win32/mozconfig.vs2010
|
. $topsrcdir/build/win32/mozconfig.vs2010
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -28,7 +28,7 @@ export MOZ_TELEMETRY_REPORTING=1
|
||||||
# Treat warnings as errors (modulo ALLOW_COMPILER_WARNINGS).
|
# Treat warnings as errors (modulo ALLOW_COMPILER_WARNINGS).
|
||||||
ac_add_options --enable-warnings-as-errors
|
ac_add_options --enable-warnings-as-errors
|
||||||
|
|
||||||
. $topsrcdir/build/win64/mozconfig.vs2013
|
. $topsrcdir/build/win64/mozconfig.vs2015
|
||||||
|
|
||||||
# Enable Adobe Primetime CDM on 64-bit Windows in Mozilla builds.
|
# Enable Adobe Primetime CDM on 64-bit Windows in Mozilla builds.
|
||||||
# Enabled here on the assumption that downstream vendors will not be using
|
# Enabled here on the assumption that downstream vendors will not be using
|
||||||
|
|
|
@ -28,7 +28,7 @@ export MOZ_PACKAGE_JSSHELL=1
|
||||||
|
|
||||||
ac_add_options --with-branding=browser/branding/nightly
|
ac_add_options --with-branding=browser/branding/nightly
|
||||||
|
|
||||||
. $topsrcdir/build/win64/mozconfig.vs2013
|
. $topsrcdir/build/win64/mozconfig.vs2015
|
||||||
|
|
||||||
. "$topsrcdir/build/mozconfig.rust"
|
. "$topsrcdir/build/mozconfig.rust"
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,6 @@ ac_add_options --with-branding=browser/branding/nightly
|
||||||
|
|
||||||
export MOZILLA_OFFICIAL=1
|
export MOZILLA_OFFICIAL=1
|
||||||
|
|
||||||
. $topsrcdir/build/win64/mozconfig.vs2013
|
. $topsrcdir/build/win64/mozconfig.vs2015
|
||||||
|
|
||||||
. "$topsrcdir/build/mozconfig.common.override"
|
. "$topsrcdir/build/mozconfig.common.override"
|
||||||
|
|
|
@ -18,5 +18,13 @@
|
||||||
"algorithm": "sha512",
|
"algorithm": "sha512",
|
||||||
"filename": "sccache.tar.bz2",
|
"filename": "sccache.tar.bz2",
|
||||||
"unpack": true
|
"unpack": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"version": "Visual Studio 2015 Update 1 / SDK 10.0.10586.0",
|
||||||
|
"size": 330570496,
|
||||||
|
"digest": "0379fd087705f54aeb335449e6c623cd550b656d7110acafd1e5b315e1fc9272b7cdd1e37f99d575b16ecba4e8e4fe3af965967a3944c023b83caf68fa684888",
|
||||||
|
"algorithm": "sha512",
|
||||||
|
"filename": "vs2015u1.zip",
|
||||||
|
"unpack": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -19,5 +19,13 @@
|
||||||
"algorithm": "sha512",
|
"algorithm": "sha512",
|
||||||
"filename": "sccache.tar.bz2",
|
"filename": "sccache.tar.bz2",
|
||||||
"unpack": true
|
"unpack": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"version": "Visual Studio 2015 Update 1 / SDK 10.0.10586.0",
|
||||||
|
"size": 330570496,
|
||||||
|
"digest": "0379fd087705f54aeb335449e6c623cd550b656d7110acafd1e5b315e1fc9272b7cdd1e37f99d575b16ecba4e8e4fe3af965967a3944c023b83caf68fa684888",
|
||||||
|
"algorithm": "sha512",
|
||||||
|
"filename": "vs2015u1.zip",
|
||||||
|
"unpack": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -13,9 +13,6 @@ const kBrowserSharingNotificationId = "loop-sharing-notification";
|
||||||
const CURSOR_MIN_DELTA = 3;
|
const CURSOR_MIN_DELTA = 3;
|
||||||
const CURSOR_MIN_INTERVAL = 100;
|
const CURSOR_MIN_INTERVAL = 100;
|
||||||
const CURSOR_CLICK_DELAY = 1000;
|
const CURSOR_CLICK_DELAY = 1000;
|
||||||
// Due to bug 1051238 frame scripts are cached forever, so we can't update them
|
|
||||||
// as a restartless add-on. The Math.random() is the work around for this.
|
|
||||||
const FRAME_SCRIPT = "chrome://loop/content/modules/tabFrame.js?" + Math.random();
|
|
||||||
|
|
||||||
Cu.import("resource://gre/modules/Services.jsm");
|
Cu.import("resource://gre/modules/Services.jsm");
|
||||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||||
|
@ -60,7 +57,6 @@ var WindowListener = {
|
||||||
let FileReader = window.FileReader;
|
let FileReader = window.FileReader;
|
||||||
let menuItem = null;
|
let menuItem = null;
|
||||||
let isSlideshowOpen = false;
|
let isSlideshowOpen = false;
|
||||||
let titleChangedListener = null;
|
|
||||||
|
|
||||||
// the "exported" symbols
|
// the "exported" symbols
|
||||||
var LoopUI = {
|
var LoopUI = {
|
||||||
|
@ -119,10 +115,6 @@ var WindowListener = {
|
||||||
return this._constants;
|
return this._constants;
|
||||||
},
|
},
|
||||||
|
|
||||||
get mm() {
|
|
||||||
return window.getGroupMessageManager("browsers");
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return {Promise}
|
* @return {Promise}
|
||||||
*/
|
*/
|
||||||
|
@ -321,10 +313,6 @@ var WindowListener = {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load the frame script into any tab, plus any that get created in the
|
|
||||||
// future.
|
|
||||||
this.mm.loadFrameScript(FRAME_SCRIPT, true);
|
|
||||||
|
|
||||||
// Cleanup when the window unloads.
|
// Cleanup when the window unloads.
|
||||||
window.addEventListener("unload", () => {
|
window.addEventListener("unload", () => {
|
||||||
Services.obs.removeObserver(this, "loop-status-changed");
|
Services.obs.removeObserver(this, "loop-status-changed");
|
||||||
|
@ -534,13 +522,9 @@ var WindowListener = {
|
||||||
gBrowser.tabContainer.addEventListener("TabSelect", this);
|
gBrowser.tabContainer.addEventListener("TabSelect", this);
|
||||||
this._listeningToTabSelect = true;
|
this._listeningToTabSelect = true;
|
||||||
|
|
||||||
titleChangedListener = this.handleDOMTitleChanged.bind(this);
|
|
||||||
|
|
||||||
// Watch for title changes as opposed to location changes as more
|
// Watch for title changes as opposed to location changes as more
|
||||||
// metadata about the page is available when this event fires.
|
// metadata about the page is available when this event fires.
|
||||||
this.mm.addMessageListener("loop@mozilla.org:DOMTitleChanged",
|
gBrowser.addEventListener("DOMTitleChanged", this);
|
||||||
titleChangedListener);
|
|
||||||
|
|
||||||
this._browserSharePaused = false;
|
this._browserSharePaused = false;
|
||||||
|
|
||||||
// Add this event to the parent gBrowser to avoid adding and removing
|
// Add this event to the parent gBrowser to avoid adding and removing
|
||||||
|
@ -566,12 +550,7 @@ var WindowListener = {
|
||||||
|
|
||||||
this._hideBrowserSharingInfoBar();
|
this._hideBrowserSharingInfoBar();
|
||||||
gBrowser.tabContainer.removeEventListener("TabSelect", this);
|
gBrowser.tabContainer.removeEventListener("TabSelect", this);
|
||||||
|
gBrowser.removeEventListener("DOMTitleChanged", this);
|
||||||
if (titleChangedListener) {
|
|
||||||
this.mm.removeMessageListener("loop@mozilla.org:DOMTitleChanged",
|
|
||||||
titleChangedListener);
|
|
||||||
titleChangedListener = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove shared pointers related events
|
// Remove shared pointers related events
|
||||||
gBrowser.removeEventListener("mousemove", this);
|
gBrowser.removeEventListener("mousemove", this);
|
||||||
|
@ -809,27 +788,15 @@ var WindowListener = {
|
||||||
gBrowser.selectedBrowser.outerWindowID);
|
gBrowser.selectedBrowser.outerWindowID);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles events from the frame script.
|
|
||||||
*
|
|
||||||
* @param {Object} message The message received from the frame script.
|
|
||||||
*/
|
|
||||||
handleDOMTitleChanged: function(message) {
|
|
||||||
if (!this._listeningToTabSelect || this._browserSharePaused) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gBrowser.selectedBrowser == message.target) {
|
|
||||||
// Get the new title of the shared tab
|
|
||||||
this._notifyBrowserSwitch();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles events from gBrowser.
|
* Handles events from gBrowser.
|
||||||
*/
|
*/
|
||||||
handleEvent: function(event) {
|
handleEvent: function(event) {
|
||||||
switch (event.type) {
|
switch (event.type) {
|
||||||
|
case "DOMTitleChanged":
|
||||||
|
// Get the new title of the shared tab
|
||||||
|
this._notifyBrowserSwitch();
|
||||||
|
break;
|
||||||
case "TabSelect":
|
case "TabSelect":
|
||||||
let wasVisible = false;
|
let wasVisible = false;
|
||||||
// Hide the infobar from the previous tab.
|
// Hide the infobar from the previous tab.
|
||||||
|
@ -972,10 +939,6 @@ var WindowListener = {
|
||||||
if (window.LoopUI) {
|
if (window.LoopUI) {
|
||||||
window.LoopUI.removeMenuItem();
|
window.LoopUI.removeMenuItem();
|
||||||
|
|
||||||
// This stops the frame script being loaded to new tabs, but doesn't
|
|
||||||
// remove it from existing tabs (there's no way to do that).
|
|
||||||
window.LoopUI.mm.removeDelayedFrameScript(FRAME_SCRIPT);
|
|
||||||
|
|
||||||
// XXX Bug 1229352 - Add in tear-down of the panel.
|
// XXX Bug 1229352 - Add in tear-down of the panel.
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
/* 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/. */
|
|
||||||
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
/* global sendAsyncMessage */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This script runs in the content process and is attached to browsers when
|
|
||||||
* they are created.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Listen for when the title is changed and send a message back to the chrome
|
|
||||||
// process.
|
|
||||||
addEventListener("DOMTitleChanged", ({ target }) => {
|
|
||||||
sendAsyncMessage("loop@mozilla.org:DOMTitleChanged", {
|
|
||||||
details: "titleChanged"
|
|
||||||
}, {
|
|
||||||
target: target
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -30,6 +30,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.room-invitation-content > * {
|
.room-invitation-content > * {
|
||||||
|
width: 100%;
|
||||||
margin: 0 15px;
|
margin: 0 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,6 +230,10 @@ html[dir="rtl"] .share-panel-container > .room-invitation-overlay {
|
||||||
margin: 0 0 12px;
|
margin: 0 0 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.share-panel-container > .room-invitation-overlay > .room-invitation-content > * {
|
||||||
|
width: initial;
|
||||||
|
}
|
||||||
|
|
||||||
.share-panel-open > .room-invitation-overlay,
|
.share-panel-open > .room-invitation-overlay,
|
||||||
html[dir="rtl"] .share-panel-open > .room-invitation-overlay {
|
html[dir="rtl"] .share-panel-open > .room-invitation-overlay {
|
||||||
transform: translateX(0);
|
transform: translateX(0);
|
||||||
|
|
|
@ -356,7 +356,6 @@ loop.roomViews = function (mozL10n) {
|
||||||
screenShareMediaElement: this.state.screenShareMediaElement,
|
screenShareMediaElement: this.state.screenShareMediaElement,
|
||||||
screenSharePosterUrl: null,
|
screenSharePosterUrl: null,
|
||||||
showInitialContext: false,
|
showInitialContext: false,
|
||||||
showMediaWait: false,
|
|
||||||
showTile: false },
|
showTile: false },
|
||||||
React.createElement(sharedViews.ConversationToolbar, {
|
React.createElement(sharedViews.ConversationToolbar, {
|
||||||
audio: { enabled: !this.state.audioMuted, visible: true },
|
audio: { enabled: !this.state.audioMuted, visible: true },
|
||||||
|
|
|
@ -1,12 +1,7 @@
|
||||||
pref("loop.enabled", true);
|
pref("loop.enabled", true);
|
||||||
pref("loop.remote.autostart", true);
|
pref("loop.remote.autostart", true);
|
||||||
#ifdef LOOP_DEV_XPI
|
|
||||||
pref("loop.server", "https://loop-dev.stage.mozaws.net/v0");
|
|
||||||
pref("loop.linkClicker.url", "https://loop-webapp-dev.stage.mozaws.net/");
|
|
||||||
#else
|
|
||||||
pref("loop.server", "https://loop.services.mozilla.com/v0");
|
pref("loop.server", "https://loop.services.mozilla.com/v0");
|
||||||
pref("loop.linkClicker.url", "https://hello.firefox.com/");
|
pref("loop.linkClicker.url", "https://hello.firefox.com/");
|
||||||
#endif
|
|
||||||
pref("loop.gettingStarted.latestFTUVersion", 1);
|
pref("loop.gettingStarted.latestFTUVersion", 1);
|
||||||
pref("loop.gettingStarted.url", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/hello/start/");
|
pref("loop.gettingStarted.url", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/hello/start/");
|
||||||
pref("loop.gettingStarted.resumeOnFirstJoin", false);
|
pref("loop.gettingStarted.resumeOnFirstJoin", false);
|
||||||
|
|
|
@ -510,74 +510,40 @@ html, .fx-embedded, #main,
|
||||||
width: 272px;
|
width: 272px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.media-wrapper > .text-chat-view > .text-chat-entries > .text-chat-scroller > .welcome-message {
|
.media-wrapper.showing-local-streams > .text-chat-view {
|
||||||
font-size: 1.2rem;
|
|
||||||
margin: 0 0 15px;
|
|
||||||
color: #5e5f64;
|
|
||||||
line-height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.media-wrapper.showing-local-streams > .text-chat-view,
|
|
||||||
.media-wrapper.showing-media-wait > .text-chat-view {
|
|
||||||
/* When we're displaying the local streams, then we need to make the text
|
/* When we're displaying the local streams, then we need to make the text
|
||||||
chat view a bit shorter to give room. */
|
chat view a bit shorter to give room. */
|
||||||
height: calc(100% - 204px);
|
height: calc(100% - 204px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.media-wrapper.showing-media-wait > .text-chat-view {
|
|
||||||
order: 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.media-wrapper.showing-media-wait > .local {
|
|
||||||
/* Hides the local stream video box while we're asking the user for permissions */
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.media-wrapper.showing-local-streams.receiving-screen-share {
|
.media-wrapper.showing-local-streams.receiving-screen-share {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.media-wrapper.showing-local-streams.receiving-screen-share > .text-chat-view {
|
.media-wrapper.showing-local-streams.receiving-screen-share > .text-chat-view {
|
||||||
/* When we're displaying the local streams, then we need to make the text
|
/* When we're displaying the local streams, then we need to make the text
|
||||||
chat view a bit shorter to give room. 1 streams x 204px */
|
chat view a bit shorter to give room. 2 streams x 204px each*/
|
||||||
height: calc(100% - 204px);
|
height: calc(100% - 408px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.media-wrapper.receiving-screen-share > .screen {
|
.media-wrapper.receiving-screen-share > .screen {
|
||||||
order: 1;
|
order: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.media-wrapper.receiving-screen-share > .text-chat-view,
|
.media-wrapper.receiving-screen-share > .text-chat-view {
|
||||||
.media-wrapper.showing-local-streams > .text-chat-view {
|
order: 2;
|
||||||
order: 4;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.media-wrapper.receiving-screen-share > .remote {
|
.media-wrapper.receiving-screen-share > .remote {
|
||||||
flex: 0 1 auto;
|
flex: 0 1 auto;
|
||||||
order: 2;
|
order: 3;
|
||||||
/* to keep the 4:3 ratio set both height and width */
|
/* to keep the 4:3 ratio set both height and width */
|
||||||
height: 204px;
|
height: 204px;
|
||||||
width: 272px;
|
width: 272px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.media-wrapper.receiving-screen-share > .local {
|
.media-wrapper.receiving-screen-share > .local {
|
||||||
order: 3;
|
order: 4;
|
||||||
}
|
|
||||||
|
|
||||||
.media-wrapper.receiving-screen-share.showing-remote-streams > .local {
|
|
||||||
position: absolute;
|
|
||||||
z-index: 2;
|
|
||||||
padding: 8px;
|
|
||||||
right: 0;
|
|
||||||
left: auto;
|
|
||||||
top: 124px;
|
|
||||||
/* to keep the 4:3 ratio 80x60px + 16px padding + 4px border */
|
|
||||||
width: calc(80px + 16px + 4px);
|
|
||||||
height: calc(60px + 16px + 4px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.media-wrapper.receiving-screen-share.showing-remote-streams > .local > .remote-video-box {
|
|
||||||
border: solid 2px #fff;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (max-width:640px) {
|
@media screen and (max-width:640px) {
|
||||||
|
@ -664,7 +630,7 @@ html, .fx-embedded, #main,
|
||||||
object-fit: contain;
|
object-fit: contain;
|
||||||
}
|
}
|
||||||
|
|
||||||
.media-wrapper.receiving-screen-share.showing-remote-streams > .local {
|
.media-wrapper.receiving-screen-share > .local {
|
||||||
/* Screen shares have remote & local video side-by-side on narrow screens */
|
/* Screen shares have remote & local video side-by-side on narrow screens */
|
||||||
order: 3;
|
order: 3;
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
|
@ -675,15 +641,13 @@ html, .fx-embedded, #main,
|
||||||
max-width: 50%;
|
max-width: 50%;
|
||||||
/* This cancels out the absolute positioning when it's just remote video. */
|
/* This cancels out the absolute positioning when it's just remote video. */
|
||||||
position: relative;
|
position: relative;
|
||||||
top: auto;
|
|
||||||
bottom: auto;
|
bottom: auto;
|
||||||
right: auto;
|
right: auto;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.media-wrapper.receiving-screen-share.showing-remote-streams > .local > .remote-video-box {
|
.media-wrapper.receiving-screen-share > .text-chat-view {
|
||||||
border: 0;
|
order: 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -216,11 +216,6 @@ loop.shared.views.chat = function (mozL10n) {
|
||||||
React.createElement(
|
React.createElement(
|
||||||
"div",
|
"div",
|
||||||
{ className: "text-chat-scroller" },
|
{ className: "text-chat-scroller" },
|
||||||
loop.shared.utils.isDesktop() ? null : React.createElement(
|
|
||||||
"p",
|
|
||||||
{ className: "welcome-message" },
|
|
||||||
mozL10n.get("rooms_welcome_text_chat_label", { clientShortname: mozL10n.get("clientShortname2") })
|
|
||||||
),
|
|
||||||
this.props.messageList.map(function (entry, i) {
|
this.props.messageList.map(function (entry, i) {
|
||||||
if (entry.type === CHAT_MESSAGE_TYPES.SPECIAL) {
|
if (entry.type === CHAT_MESSAGE_TYPES.SPECIAL) {
|
||||||
if (!this.props.showInitialContext) {
|
if (!this.props.showInitialContext) {
|
||||||
|
|
|
@ -885,7 +885,6 @@ loop.shared.views = function (_, mozL10n) {
|
||||||
screenSharePosterUrl: React.PropTypes.string,
|
screenSharePosterUrl: React.PropTypes.string,
|
||||||
screenSharingPaused: React.PropTypes.bool,
|
screenSharingPaused: React.PropTypes.bool,
|
||||||
showInitialContext: React.PropTypes.bool.isRequired,
|
showInitialContext: React.PropTypes.bool.isRequired,
|
||||||
showMediaWait: React.PropTypes.bool.isRequired,
|
|
||||||
showTile: React.PropTypes.bool.isRequired
|
showTile: React.PropTypes.bool.isRequired
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -943,30 +942,6 @@ loop.shared.views = function (_, mozL10n) {
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
renderMediaWait: function () {
|
|
||||||
var msg = mozL10n.get("call_progress_getting_media_description", { clientShortname: mozL10n.get("clientShortname2") });
|
|
||||||
var utils = loop.shared.utils;
|
|
||||||
var isChrome = utils.isChrome(navigator.userAgent);
|
|
||||||
var isFirefox = utils.isFirefox(navigator.userAgent);
|
|
||||||
var isOpera = utils.isOpera(navigator.userAgent);
|
|
||||||
var promptMediaMessageClasses = classNames({
|
|
||||||
"prompt-media-message": true,
|
|
||||||
"chrome": isChrome,
|
|
||||||
"firefox": isFirefox,
|
|
||||||
"opera": isOpera,
|
|
||||||
"other": !isChrome && !isFirefox && !isOpera
|
|
||||||
});
|
|
||||||
return React.createElement(
|
|
||||||
"div",
|
|
||||||
{ className: "prompt-media-message-wrapper" },
|
|
||||||
React.createElement(
|
|
||||||
"p",
|
|
||||||
{ className: promptMediaMessageClasses },
|
|
||||||
msg
|
|
||||||
)
|
|
||||||
);
|
|
||||||
},
|
|
||||||
|
|
||||||
render: function () {
|
render: function () {
|
||||||
var remoteStreamClasses = classNames({
|
var remoteStreamClasses = classNames({
|
||||||
"remote": true,
|
"remote": true,
|
||||||
|
@ -983,7 +958,6 @@ loop.shared.views = function (_, mozL10n) {
|
||||||
"media-wrapper": true,
|
"media-wrapper": true,
|
||||||
"receiving-screen-share": this.props.displayScreenShare,
|
"receiving-screen-share": this.props.displayScreenShare,
|
||||||
"showing-local-streams": this.props.localSrcMediaElement || this.props.localPosterUrl,
|
"showing-local-streams": this.props.localSrcMediaElement || this.props.localPosterUrl,
|
||||||
"showing-media-wait": this.props.showMediaWait,
|
|
||||||
"showing-remote-streams": this.props.remoteSrcMediaElement || this.props.remotePosterUrl || this.props.isRemoteLoading
|
"showing-remote-streams": this.props.remoteSrcMediaElement || this.props.remotePosterUrl || this.props.isRemoteLoading
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1029,8 +1003,7 @@ loop.shared.views = function (_, mozL10n) {
|
||||||
dispatcher: this.props.dispatcher,
|
dispatcher: this.props.dispatcher,
|
||||||
showInitialContext: this.props.showInitialContext,
|
showInitialContext: this.props.showInitialContext,
|
||||||
showTile: this.props.showTile }),
|
showTile: this.props.showTile }),
|
||||||
this.state.localMediaAboslutelyPositioned ? null : this.renderLocalVideo(),
|
this.state.localMediaAboslutelyPositioned ? null : this.renderLocalVideo()
|
||||||
this.props.showMediaWait ? this.renderMediaWait() : null
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -831,7 +831,6 @@ describe("loop.shared.views", function() {
|
||||||
matchMedia: window.matchMedia,
|
matchMedia: window.matchMedia,
|
||||||
renderRemoteVideo: false,
|
renderRemoteVideo: false,
|
||||||
showInitialContext: false,
|
showInitialContext: false,
|
||||||
showMediaWait: false,
|
|
||||||
showTile: false
|
showTile: false
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -969,24 +968,6 @@ describe("loop.shared.views", function() {
|
||||||
expect(view.getDOMNode().querySelector(".media-wrapper")
|
expect(view.getDOMNode().querySelector(".media-wrapper")
|
||||||
.classList.contains("showing-remote-streams")).eql(true);
|
.classList.contains("showing-remote-streams")).eql(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should mark the wrapper as showing media wait tile when asking for user media", function() {
|
|
||||||
view = mountTestComponent({
|
|
||||||
showMediaWait: true
|
|
||||||
});
|
|
||||||
|
|
||||||
expect(view.getDOMNode().querySelector(".media-wrapper")
|
|
||||||
.classList.contains("showing-media-wait")).eql(true);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should display a media wait tile when asking for user media", function() {
|
|
||||||
view = mountTestComponent({
|
|
||||||
showMediaWait: true
|
|
||||||
});
|
|
||||||
|
|
||||||
expect(view.getDOMNode().querySelector(".prompt-media-message-wrapper"))
|
|
||||||
.not.eql(null);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("RemoteCursorView", function() {
|
describe("RemoteCursorView", function() {
|
||||||
|
|
|
@ -16,5 +16,4 @@ support-files =
|
||||||
[browser_mozLoop_sharingListeners.js]
|
[browser_mozLoop_sharingListeners.js]
|
||||||
skip-if = e10s
|
skip-if = e10s
|
||||||
[browser_mozLoop_telemetry.js]
|
[browser_mozLoop_telemetry.js]
|
||||||
[browser_sharingTitleListeners.js]
|
|
||||||
[browser_toolbarbutton.js]
|
[browser_toolbarbutton.js]
|
||||||
|
|
|
@ -1,51 +0,0 @@
|
||||||
/* Any copyright is dedicated to the Public Domain.
|
|
||||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file contains tests for the browser sharing document title listeners.
|
|
||||||
*/
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var [, gHandlers] = LoopAPI.inspect();
|
|
||||||
|
|
||||||
function promiseBrowserSwitch() {
|
|
||||||
return new Promise(resolve => {
|
|
||||||
LoopAPI.stub([{
|
|
||||||
sendAsyncMessage: function(messageName, data) {
|
|
||||||
if (data[0] == "BrowserSwitch") {
|
|
||||||
LoopAPI.restore();
|
|
||||||
resolve();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}]);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
add_task(function* setup() {
|
|
||||||
Services.prefs.setBoolPref("loop.remote.autostart", true);
|
|
||||||
|
|
||||||
gHandlers.AddBrowserSharingListener({ data: [42] }, () => {});
|
|
||||||
|
|
||||||
let newTab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, "about:blank", true);
|
|
||||||
|
|
||||||
registerCleanupFunction(function* () {
|
|
||||||
// Remove the listener.
|
|
||||||
gHandlers.RemoveBrowserSharingListener({ data: [42] }, function() {});
|
|
||||||
|
|
||||||
yield BrowserTestUtils.removeTab(newTab);
|
|
||||||
|
|
||||||
Services.prefs.clearUserPref("loop.remote.autostart");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
add_task(function* test_notifyOnTitleChanged() {
|
|
||||||
// Hook up the async listener and wait for the BrowserSwitch to happen.
|
|
||||||
let browserSwitchPromise = promiseBrowserSwitch();
|
|
||||||
|
|
||||||
BrowserTestUtils.loadURI(gBrowser.selectedBrowser, "about:mozilla");
|
|
||||||
|
|
||||||
// Now check we get the notification of the browser switch.
|
|
||||||
yield browserSwitchPromise;
|
|
||||||
|
|
||||||
Assert.ok(true, "We got notification of the browser switch");
|
|
||||||
});
|
|
|
@ -9,9 +9,8 @@
|
||||||
<Description about="urn:mozilla:install-manifest">
|
<Description about="urn:mozilla:install-manifest">
|
||||||
<em:id>loop@mozilla.org</em:id>
|
<em:id>loop@mozilla.org</em:id>
|
||||||
<em:bootstrap>true</em:bootstrap>
|
<em:bootstrap>true</em:bootstrap>
|
||||||
<em:version>1.2.3</em:version>
|
<em:version>1.2.2</em:version>
|
||||||
<em:type>2</em:type>
|
<em:type>2</em:type>
|
||||||
<em:multiprocessCompatible>true</em:multiprocessCompatible>
|
|
||||||
|
|
||||||
<!-- Target Application this extension can install into,
|
<!-- Target Application this extension can install into,
|
||||||
with minimum and maximum supported versions. -->
|
with minimum and maximum supported versions. -->
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
[features/loop@mozilla.org] chrome.jar:
|
[features/loop@mozilla.org] chrome.jar:
|
||||||
% content loop %content/ contentaccessible=yes
|
% content loop %content/ contentaccessible=yes
|
||||||
% content loop-locale-fallback %content/locale-fallback/en-US/
|
% content loop-locale-fallback %content/locale-fallback/en-US/
|
||||||
% skin loop classic/1.0 %skin/linux/
|
% skin loop classic/1.0 %skin/linux/ os=Linux
|
||||||
% skin loop classic/1.0 %skin/osx/ os=Darwin
|
% skin loop classic/1.0 %skin/osx/ os=Darwin
|
||||||
% skin loop classic/1.0 %skin/windows/ os=WINNT
|
% skin loop classic/1.0 %skin/windows/ os=WINNT
|
||||||
% skin loop-shared classic/1.0 %skin/shared/
|
% skin loop-shared classic/1.0 %skin/shared/
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
if [ -z "${VSPATH}" ]; then
|
||||||
|
VSPATH="$(cd ${topsrcdir} && pwd)/vs2015u1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
export WINDOWSSDKDIR="${VSPATH}/SDK"
|
||||||
|
export WIN32_REDIST_DIR="${VSPATH}/VC/redist/x86/Microsoft.VC140.CRT"
|
||||||
|
export WIN_UCRT_REDIST_DIR="${VSPATH}/SDK/Redist/ucrt/DLLs/x86"
|
||||||
|
|
||||||
|
export PATH="${VSPATH}/VC/bin/amd64_x86:${VSPATH}/VC/bin/amd64:${VSPATH}/VC/bin:${VSPATH}/SDK/bin/x86:${VSPATH}/SDK/bin/x64:${VSPATH}/DIASDK/bin:${PATH}"
|
||||||
|
export PATH="${VSPATH}/VC/redist/x86/Microsoft.VC140.CRT:${VSPATH}/VC/redist/x64/Microsoft.VC140.CRT:${VSPATH}/SDK/Redist/ucrt/DLLs/x86:${VSPATH}/SDK/Redist/ucrt/DLLs/x64:${PATH}"
|
||||||
|
|
||||||
|
export INCLUDE="${VSPATH}/VC/include:${VSPATH}/VC/atlmfc/include:${VSPATH}/SDK/Include/ucrt:${VSPATH}/SDK/Include/shared:${VSPATH}/SDK/Include/um:${VSPATH}/SDK/Include/winrt:${VSPATH}/DIASDK/include"
|
||||||
|
export LIB="${VSPATH}/VC/lib:${VSPATH}/VC/atlmfc/lib:${VSPATH}/SDK/lib/ucrt/x86:${VSPATH}/SDK/lib/um/x86:${VSPATH}/DIASDK/lib"
|
||||||
|
|
||||||
|
. $topsrcdir/build/mozconfig.vs-common
|
||||||
|
|
||||||
|
mk_export_correct_style INCLUDE
|
||||||
|
mk_export_correct_style LIB
|
||||||
|
mk_export_correct_style PATH
|
||||||
|
mk_export_correct_style WIN32_REDIST_DIR
|
||||||
|
mk_export_correct_style WIN_UCRT_REDIST_DIR
|
|
@ -0,0 +1,20 @@
|
||||||
|
if [ -z "${VSPATH}" ]; then
|
||||||
|
VSPATH="$(cd ${topsrcdir} && pwd)/vs2015u1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
export WINDOWSSDKDIR="${VSPATH}/SDK"
|
||||||
|
export WIN32_REDIST_DIR=${VSPATH}/VC/redist/x64/Microsoft.VC140.CRT
|
||||||
|
export WIN_UCRT_REDIST_DIR="${VSPATH}/SDK/Redist/ucrt/DLLs/x64"
|
||||||
|
|
||||||
|
export PATH="${VSPATH}/VC/bin/amd64:${VSPATH}/VC/bin:${VSPATH}/SDK/bin/x64:${VSPATH}/VC/redist/x64/Microsoft.VC140.CRT:${VSPATH}/SDK/Redist/ucrt/DLLs/x64:${VSPATH}/DIASDK/bin/amd64:${PATH}"
|
||||||
|
|
||||||
|
export INCLUDE="${VSPATH}/VC/include:${VSPATH}/VC/atlmfc/include:${VSPATH}/SDK/Include/ucrt:${VSPATH}/SDK/Include/shared:${VSPATH}/SDK/Include/um:${VSPATH}/SDK/Include/winrt:${VSPATH}/DIASDK/include"
|
||||||
|
export LIB="${VSPATH}/VC/lib/amd64:${VSPATH}/VC/atlmfc/lib/amd64:${VSPATH}/SDK/lib/ucrt/x64:${VSPATH}/SDK/lib/um/x64:${VSPATH}/DIASDK/lib/amd64"
|
||||||
|
|
||||||
|
. $topsrcdir/build/mozconfig.vs-common
|
||||||
|
|
||||||
|
mk_export_correct_style INCLUDE
|
||||||
|
mk_export_correct_style LIB
|
||||||
|
mk_export_correct_style PATH
|
||||||
|
mk_export_correct_style WIN32_REDIST_DIR
|
||||||
|
mk_export_correct_style WIN_UCRT_REDIST_DIR
|
|
@ -7,6 +7,11 @@ mk_add_options() {
|
||||||
|
|
||||||
topsrcdir="$SOURCE"
|
topsrcdir="$SOURCE"
|
||||||
|
|
||||||
|
# Tooltool installs in parent of topsrcdir for spidermonkey builds.
|
||||||
|
# Resolve that path since the mozconfigs assume tooltool installs in
|
||||||
|
# topsrcdir.
|
||||||
|
VSPATH="$(cd ${topsrcdir}/.. && pwd)/vs2015u1"
|
||||||
|
|
||||||
# When running on a developer machine, several variables will already
|
# When running on a developer machine, several variables will already
|
||||||
# have the right settings and we will need to keep them since the
|
# have the right settings and we will need to keep them since the
|
||||||
# Windows mozconfigs overwrite them.
|
# Windows mozconfigs overwrite them.
|
||||||
|
@ -17,18 +22,13 @@ export OLD_LIBPATH=$(IFS=';'; for d in $LIBPATH; do ( cd "$d" && echo -n $(pwd):
|
||||||
# The various browser/config/mozconfigs/win32/* files use these checks to pick
|
# The various browser/config/mozconfigs/win32/* files use these checks to pick
|
||||||
# the compiler.
|
# the compiler.
|
||||||
if $USE_64BIT; then
|
if $USE_64BIT; then
|
||||||
. $topsrcdir/build/win64/mozconfig.vs2013
|
. $topsrcdir/build/win64/mozconfig.vs2015
|
||||||
elif test "$PROCESSOR_ARCHITECTURE" = "AMD64" -o "$PROCESSOR_ARCHITEW6432" = "AMD64"; then
|
elif test "$PROCESSOR_ARCHITECTURE" = "AMD64" -o "$PROCESSOR_ARCHITEW6432" = "AMD64"; then
|
||||||
. $topsrcdir/build/win32/mozconfig.vs2013-win64
|
. $topsrcdir/build/win32/mozconfig.vs2015-win64
|
||||||
else
|
else
|
||||||
. $topsrcdir/build/win32/mozconfig.vs2010
|
. $topsrcdir/build/win32/mozconfig.vs2010
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# If PATH starts with a directory beginning with /d that does not
|
|
||||||
# exist, it messes up cl.exe invocation (probably by passing in a
|
|
||||||
# bogus option or something. I don't know why exactly.)
|
|
||||||
export PATH="$(perl -le 'print join ":", grep { -d $_ } split ":", $ENV{PATH}')"
|
|
||||||
|
|
||||||
# PATH also needs to point to mozmake.exe, which can come from either
|
# PATH also needs to point to mozmake.exe, which can come from either
|
||||||
# newer mozilla-build or tooltool.
|
# newer mozilla-build or tooltool.
|
||||||
if ! which mozmake 2>/dev/null; then
|
if ! which mozmake 2>/dev/null; then
|
||||||
|
@ -38,14 +38,3 @@ if ! which mozmake 2>/dev/null; then
|
||||||
( cd $SOURCE/..; ./scripts/scripts/tooltool/tooltool_wrapper.sh $SOURCE/browser/config/tooltool-manifests/${platform:-win32}/releng.manifest $TT_SERVER setup.sh c:/mozilla-build/python27/python.exe C:/mozilla-build/tooltool.py )
|
( cd $SOURCE/..; ./scripts/scripts/tooltool/tooltool_wrapper.sh $SOURCE/browser/config/tooltool-manifests/${platform:-win32}/releng.manifest $TT_SERVER setup.sh c:/mozilla-build/python27/python.exe C:/mozilla-build/tooltool.py )
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Set INCLUDE to any existing directories from either the INCLUDE set by the
|
|
||||||
# mozconfig, or pre-existing directories. I have observed cases where extra
|
|
||||||
# nonexistent directories in the INCLUDE search path causes the compiler to
|
|
||||||
# fail to find files that show up later in the search path.
|
|
||||||
#
|
|
||||||
# Note that the mozconfig will use msys-style paths and OLD_INCLUDE will use
|
|
||||||
# Windows-style paths, but perl and cl.exe both seem ok with either.
|
|
||||||
export INCLUDE="$(perl -le 'print join ":", grep { -d $_ } split(":", $ENV{INCLUDE}),split(":", $ENV{OLD_INCLUDE})')"
|
|
||||||
export LIB="$(perl -le 'print join ":", grep { -d $_ } split(":", $ENV{LIB}),split(":", $ENV{OLD_LIB})')"
|
|
||||||
export LIBPATH="$(perl -le 'print join ":", grep { -d $_ } split(":", $ENV{LIBPATH}),split(":", $ENV{OLD_LIBPATH})')"
|
|
||||||
|
|
|
@ -7077,18 +7077,20 @@ Shell(JSContext* cx, OptionParser* op, char** envp)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
SetOutputFile(const char* const envVar,
|
SetOutputFile(const char* const envVar,
|
||||||
FILE* defaultOut,
|
RCFile* defaultOut,
|
||||||
RCFile** outFile)
|
RCFile** outFileP)
|
||||||
{
|
{
|
||||||
|
RCFile* outFile;
|
||||||
|
|
||||||
const char* outPath = getenv(envVar);
|
const char* outPath = getenv(envVar);
|
||||||
FILE* newfp;
|
FILE* newfp;
|
||||||
if (outPath && *outPath && (newfp = fopen(outPath, "w"))) {
|
if (outPath && *outPath && (newfp = fopen(outPath, "w")))
|
||||||
*outFile = js_new<RCFile>(newfp);
|
outFile = js_new<RCFile>(newfp);
|
||||||
(*outFile)->acquire();
|
else
|
||||||
} else {
|
outFile = defaultOut;
|
||||||
*outFile = js_new<RCFile>(defaultOut);
|
|
||||||
(*outFile)->acquire();
|
outFile->acquire();
|
||||||
}
|
*outFileP = outFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Pretend we can always preserve wrappers for dummy DOM objects. */
|
/* Pretend we can always preserve wrappers for dummy DOM objects. */
|
||||||
|
@ -7129,8 +7131,15 @@ main(int argc, char** argv, char** envp)
|
||||||
setlocale(LC_ALL, "");
|
setlocale(LC_ALL, "");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
SetOutputFile("JS_STDERR", stderr, &gErrFile);
|
// Special-case stdout and stderr. We bump their refcounts to prevent them
|
||||||
SetOutputFile("JS_STDOUT", stdout, &gOutFile);
|
// from getting closed and then having some printf fail somewhere.
|
||||||
|
RCFile rcStdout(stdout);
|
||||||
|
rcStdout.acquire();
|
||||||
|
RCFile rcStderr(stderr);
|
||||||
|
rcStderr.acquire();
|
||||||
|
|
||||||
|
SetOutputFile("JS_STDOUT", &rcStdout, &gOutFile);
|
||||||
|
SetOutputFile("JS_STDERR", &rcStderr, &gErrFile);
|
||||||
|
|
||||||
OptionParser op("Usage: {progname} [options] [[script] scriptArgs*]");
|
OptionParser op("Usage: {progname} [options] [[script] scriptArgs*]");
|
||||||
|
|
||||||
|
|
|
@ -264,14 +264,3 @@
|
||||||
[111111e1a (quirks)]
|
[111111e1a (quirks)]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[1111111111...a (quirks)]
|
|
||||||
expected:
|
|
||||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
|
||||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
|
||||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
|
||||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
|
||||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
|
||||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
|
||||||
if debug and (os == "win") and (version == "10.0.10240") and (processor == "x86_64") and (bits == 64): FAIL
|
|
||||||
if not debug and (os == "win") and (version == "10.0.10240") and (processor == "x86_64") and (bits == 64): FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -506,7 +506,7 @@ struct MessageWindow {
|
||||||
::_snwprintf(classNameBuffer,
|
::_snwprintf(classNameBuffer,
|
||||||
128, // size of classNameBuffer in PRUnichars
|
128, // size of classNameBuffer in PRUnichars
|
||||||
L"%s%s",
|
L"%s%s",
|
||||||
wwc(NS_ConvertUTF8toUTF16(gAppData->remotingName).get()),
|
static_cast<const wchar_t*>(NS_ConvertUTF8toUTF16(gAppData->remotingName).get()),
|
||||||
L"MessageWindow" );
|
L"MessageWindow" );
|
||||||
mClassName = classNameBuffer;
|
mClassName = classNameBuffer;
|
||||||
}
|
}
|
||||||
|
@ -669,7 +669,7 @@ nsNativeAppSupportWin::Start( bool *aResult ) {
|
||||||
::_snwprintf(reinterpret_cast<wchar_t*>(mMutexName),
|
::_snwprintf(reinterpret_cast<wchar_t*>(mMutexName),
|
||||||
sizeof mMutexName / sizeof(char16_t), L"%s%s%s",
|
sizeof mMutexName / sizeof(char16_t), L"%s%s%s",
|
||||||
MOZ_MUTEX_NAMESPACE,
|
MOZ_MUTEX_NAMESPACE,
|
||||||
wwc(NS_ConvertUTF8toUTF16(gAppData->name).get()),
|
static_cast<const wchar_t*>(NS_ConvertUTF8toUTF16(gAppData->name).get()),
|
||||||
MOZ_STARTUP_MUTEX_NAME );
|
MOZ_STARTUP_MUTEX_NAME );
|
||||||
Win32Mutex startupLock = Win32Mutex( mMutexName );
|
Win32Mutex startupLock = Win32Mutex( mMutexName );
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче