зеркало из 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
|
||||
# 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
|
||||
|
||||
. $topsrcdir/build/win32/mozconfig.vs2013-win64
|
||||
. $topsrcdir/build/win32/mozconfig.vs2015-win64
|
||||
|
||||
# Treat warnings as errors (modulo ALLOW_COMPILER_WARNINGS).
|
||||
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
|
||||
export MOZILLA_OFFICIAL=1
|
||||
|
||||
. $topsrcdir/build/win32/mozconfig.vs2013-win64
|
||||
. $topsrcdir/build/win32/mozconfig.vs2015-win64
|
||||
|
||||
# Treat warnings as errors (modulo ALLOW_COMPILER_WARNINGS).
|
||||
ac_add_options --enable-warnings-as-errors
|
||||
|
|
|
@ -9,7 +9,7 @@ ac_add_options --with-branding=browser/branding/nightly
|
|||
export MOZILLA_OFFICIAL=1
|
||||
|
||||
if test "$PROCESSOR_ARCHITECTURE" = "AMD64" -o "$PROCESSOR_ARCHITEW6432" = "AMD64"; then
|
||||
. $topsrcdir/build/win32/mozconfig.vs2013-win64
|
||||
. $topsrcdir/build/win32/mozconfig.vs2015-win64
|
||||
else
|
||||
. $topsrcdir/build/win32/mozconfig.vs2010
|
||||
fi
|
||||
|
|
|
@ -28,7 +28,7 @@ export MOZ_TELEMETRY_REPORTING=1
|
|||
# Treat warnings as errors (modulo ALLOW_COMPILER_WARNINGS).
|
||||
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.
|
||||
# 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
|
||||
|
||||
. $topsrcdir/build/win64/mozconfig.vs2013
|
||||
. $topsrcdir/build/win64/mozconfig.vs2015
|
||||
|
||||
. "$topsrcdir/build/mozconfig.rust"
|
||||
|
||||
|
|
|
@ -9,6 +9,6 @@ ac_add_options --with-branding=browser/branding/nightly
|
|||
|
||||
export MOZILLA_OFFICIAL=1
|
||||
|
||||
. $topsrcdir/build/win64/mozconfig.vs2013
|
||||
. $topsrcdir/build/win64/mozconfig.vs2015
|
||||
|
||||
. "$topsrcdir/build/mozconfig.common.override"
|
||||
|
|
|
@ -18,5 +18,13 @@
|
|||
"algorithm": "sha512",
|
||||
"filename": "sccache.tar.bz2",
|
||||
"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",
|
||||
"filename": "sccache.tar.bz2",
|
||||
"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_INTERVAL = 100;
|
||||
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/XPCOMUtils.jsm");
|
||||
|
@ -60,7 +57,6 @@ var WindowListener = {
|
|||
let FileReader = window.FileReader;
|
||||
let menuItem = null;
|
||||
let isSlideshowOpen = false;
|
||||
let titleChangedListener = null;
|
||||
|
||||
// the "exported" symbols
|
||||
var LoopUI = {
|
||||
|
@ -119,10 +115,6 @@ var WindowListener = {
|
|||
return this._constants;
|
||||
},
|
||||
|
||||
get mm() {
|
||||
return window.getGroupMessageManager("browsers");
|
||||
},
|
||||
|
||||
/**
|
||||
* @return {Promise}
|
||||
*/
|
||||
|
@ -321,10 +313,6 @@ var WindowListener = {
|
|||
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.
|
||||
window.addEventListener("unload", () => {
|
||||
Services.obs.removeObserver(this, "loop-status-changed");
|
||||
|
@ -534,13 +522,9 @@ var WindowListener = {
|
|||
gBrowser.tabContainer.addEventListener("TabSelect", this);
|
||||
this._listeningToTabSelect = true;
|
||||
|
||||
titleChangedListener = this.handleDOMTitleChanged.bind(this);
|
||||
|
||||
// Watch for title changes as opposed to location changes as more
|
||||
// metadata about the page is available when this event fires.
|
||||
this.mm.addMessageListener("loop@mozilla.org:DOMTitleChanged",
|
||||
titleChangedListener);
|
||||
|
||||
gBrowser.addEventListener("DOMTitleChanged", this);
|
||||
this._browserSharePaused = false;
|
||||
|
||||
// Add this event to the parent gBrowser to avoid adding and removing
|
||||
|
@ -566,12 +550,7 @@ var WindowListener = {
|
|||
|
||||
this._hideBrowserSharingInfoBar();
|
||||
gBrowser.tabContainer.removeEventListener("TabSelect", this);
|
||||
|
||||
if (titleChangedListener) {
|
||||
this.mm.removeMessageListener("loop@mozilla.org:DOMTitleChanged",
|
||||
titleChangedListener);
|
||||
titleChangedListener = null;
|
||||
}
|
||||
gBrowser.removeEventListener("DOMTitleChanged", this);
|
||||
|
||||
// Remove shared pointers related events
|
||||
gBrowser.removeEventListener("mousemove", this);
|
||||
|
@ -809,27 +788,15 @@ var WindowListener = {
|
|||
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.
|
||||
*/
|
||||
handleEvent: function(event) {
|
||||
switch (event.type) {
|
||||
case "DOMTitleChanged":
|
||||
// Get the new title of the shared tab
|
||||
this._notifyBrowserSwitch();
|
||||
break;
|
||||
case "TabSelect":
|
||||
let wasVisible = false;
|
||||
// Hide the infobar from the previous tab.
|
||||
|
@ -972,10 +939,6 @@ var WindowListener = {
|
|||
if (window.LoopUI) {
|
||||
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.
|
||||
}
|
||||
},
|
||||
|
|
|
@ -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 > * {
|
||||
width: 100%;
|
||||
margin: 0 15px;
|
||||
}
|
||||
|
||||
|
@ -229,6 +230,10 @@ html[dir="rtl"] .share-panel-container > .room-invitation-overlay {
|
|||
margin: 0 0 12px;
|
||||
}
|
||||
|
||||
.share-panel-container > .room-invitation-overlay > .room-invitation-content > * {
|
||||
width: initial;
|
||||
}
|
||||
|
||||
.share-panel-open > .room-invitation-overlay,
|
||||
html[dir="rtl"] .share-panel-open > .room-invitation-overlay {
|
||||
transform: translateX(0);
|
||||
|
|
|
@ -356,7 +356,6 @@ loop.roomViews = function (mozL10n) {
|
|||
screenShareMediaElement: this.state.screenShareMediaElement,
|
||||
screenSharePosterUrl: null,
|
||||
showInitialContext: false,
|
||||
showMediaWait: false,
|
||||
showTile: false },
|
||||
React.createElement(sharedViews.ConversationToolbar, {
|
||||
audio: { enabled: !this.state.audioMuted, visible: true },
|
||||
|
|
|
@ -1,12 +1,7 @@
|
|||
pref("loop.enabled", 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.linkClicker.url", "https://hello.firefox.com/");
|
||||
#endif
|
||||
pref("loop.gettingStarted.latestFTUVersion", 1);
|
||||
pref("loop.gettingStarted.url", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/hello/start/");
|
||||
pref("loop.gettingStarted.resumeOnFirstJoin", false);
|
||||
|
|
|
@ -510,74 +510,40 @@ html, .fx-embedded, #main,
|
|||
width: 272px;
|
||||
}
|
||||
|
||||
.media-wrapper > .text-chat-view > .text-chat-entries > .text-chat-scroller > .welcome-message {
|
||||
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 {
|
||||
.media-wrapper.showing-local-streams > .text-chat-view {
|
||||
/* When we're displaying the local streams, then we need to make the text
|
||||
chat view a bit shorter to give room. */
|
||||
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 {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.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
|
||||
chat view a bit shorter to give room. 1 streams x 204px */
|
||||
height: calc(100% - 204px);
|
||||
chat view a bit shorter to give room. 2 streams x 204px each*/
|
||||
height: calc(100% - 408px);
|
||||
}
|
||||
|
||||
.media-wrapper.receiving-screen-share > .screen {
|
||||
order: 1;
|
||||
}
|
||||
|
||||
.media-wrapper.receiving-screen-share > .text-chat-view,
|
||||
.media-wrapper.showing-local-streams > .text-chat-view {
|
||||
order: 4;
|
||||
.media-wrapper.receiving-screen-share > .text-chat-view {
|
||||
order: 2;
|
||||
}
|
||||
|
||||
.media-wrapper.receiving-screen-share > .remote {
|
||||
flex: 0 1 auto;
|
||||
order: 2;
|
||||
order: 3;
|
||||
/* to keep the 4:3 ratio set both height and width */
|
||||
height: 204px;
|
||||
width: 272px;
|
||||
}
|
||||
|
||||
.media-wrapper.receiving-screen-share > .local {
|
||||
order: 3;
|
||||
}
|
||||
|
||||
.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;
|
||||
order: 4;
|
||||
}
|
||||
|
||||
@media screen and (max-width:640px) {
|
||||
|
@ -664,7 +630,7 @@ html, .fx-embedded, #main,
|
|||
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 */
|
||||
order: 3;
|
||||
flex: 1 1 auto;
|
||||
|
@ -675,15 +641,13 @@ html, .fx-embedded, #main,
|
|||
max-width: 50%;
|
||||
/* This cancels out the absolute positioning when it's just remote video. */
|
||||
position: relative;
|
||||
top: auto;
|
||||
bottom: auto;
|
||||
right: auto;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.media-wrapper.receiving-screen-share.showing-remote-streams > .local > .remote-video-box {
|
||||
border: 0;
|
||||
.media-wrapper.receiving-screen-share > .text-chat-view {
|
||||
order: 4;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -216,11 +216,6 @@ loop.shared.views.chat = function (mozL10n) {
|
|||
React.createElement(
|
||||
"div",
|
||||
{ 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) {
|
||||
if (entry.type === CHAT_MESSAGE_TYPES.SPECIAL) {
|
||||
if (!this.props.showInitialContext) {
|
||||
|
|
|
@ -885,7 +885,6 @@ loop.shared.views = function (_, mozL10n) {
|
|||
screenSharePosterUrl: React.PropTypes.string,
|
||||
screenSharingPaused: React.PropTypes.bool,
|
||||
showInitialContext: React.PropTypes.bool.isRequired,
|
||||
showMediaWait: 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 () {
|
||||
var remoteStreamClasses = classNames({
|
||||
"remote": true,
|
||||
|
@ -983,7 +958,6 @@ loop.shared.views = function (_, mozL10n) {
|
|||
"media-wrapper": true,
|
||||
"receiving-screen-share": this.props.displayScreenShare,
|
||||
"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
|
||||
});
|
||||
|
||||
|
@ -1029,8 +1003,7 @@ loop.shared.views = function (_, mozL10n) {
|
|||
dispatcher: this.props.dispatcher,
|
||||
showInitialContext: this.props.showInitialContext,
|
||||
showTile: this.props.showTile }),
|
||||
this.state.localMediaAboslutelyPositioned ? null : this.renderLocalVideo(),
|
||||
this.props.showMediaWait ? this.renderMediaWait() : null
|
||||
this.state.localMediaAboslutelyPositioned ? null : this.renderLocalVideo()
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
|
@ -831,7 +831,6 @@ describe("loop.shared.views", function() {
|
|||
matchMedia: window.matchMedia,
|
||||
renderRemoteVideo: false,
|
||||
showInitialContext: false,
|
||||
showMediaWait: false,
|
||||
showTile: false
|
||||
};
|
||||
|
||||
|
@ -969,24 +968,6 @@ describe("loop.shared.views", function() {
|
|||
expect(view.getDOMNode().querySelector(".media-wrapper")
|
||||
.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() {
|
||||
|
|
|
@ -16,5 +16,4 @@ support-files =
|
|||
[browser_mozLoop_sharingListeners.js]
|
||||
skip-if = e10s
|
||||
[browser_mozLoop_telemetry.js]
|
||||
[browser_sharingTitleListeners.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">
|
||||
<em:id>loop@mozilla.org</em:id>
|
||||
<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:multiprocessCompatible>true</em:multiprocessCompatible>
|
||||
|
||||
<!-- Target Application this extension can install into,
|
||||
with minimum and maximum supported versions. -->
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
[features/loop@mozilla.org] chrome.jar:
|
||||
% content loop %content/ contentaccessible=yes
|
||||
% 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/windows/ os=WINNT
|
||||
% 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"
|
||||
|
||||
# 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
|
||||
# have the right settings and we will need to keep them since the
|
||||
# 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 compiler.
|
||||
if $USE_64BIT; then
|
||||
. $topsrcdir/build/win64/mozconfig.vs2013
|
||||
. $topsrcdir/build/win64/mozconfig.vs2015
|
||||
elif test "$PROCESSOR_ARCHITECTURE" = "AMD64" -o "$PROCESSOR_ARCHITEW6432" = "AMD64"; then
|
||||
. $topsrcdir/build/win32/mozconfig.vs2013-win64
|
||||
. $topsrcdir/build/win32/mozconfig.vs2015-win64
|
||||
else
|
||||
. $topsrcdir/build/win32/mozconfig.vs2010
|
||||
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
|
||||
# newer mozilla-build or tooltool.
|
||||
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 )
|
||||
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
|
||||
SetOutputFile(const char* const envVar,
|
||||
FILE* defaultOut,
|
||||
RCFile** outFile)
|
||||
RCFile* defaultOut,
|
||||
RCFile** outFileP)
|
||||
{
|
||||
RCFile* outFile;
|
||||
|
||||
const char* outPath = getenv(envVar);
|
||||
FILE* newfp;
|
||||
if (outPath && *outPath && (newfp = fopen(outPath, "w"))) {
|
||||
*outFile = js_new<RCFile>(newfp);
|
||||
(*outFile)->acquire();
|
||||
} else {
|
||||
*outFile = js_new<RCFile>(defaultOut);
|
||||
(*outFile)->acquire();
|
||||
}
|
||||
if (outPath && *outPath && (newfp = fopen(outPath, "w")))
|
||||
outFile = js_new<RCFile>(newfp);
|
||||
else
|
||||
outFile = defaultOut;
|
||||
|
||||
outFile->acquire();
|
||||
*outFileP = outFile;
|
||||
}
|
||||
|
||||
/* Pretend we can always preserve wrappers for dummy DOM objects. */
|
||||
|
@ -7129,8 +7131,15 @@ main(int argc, char** argv, char** envp)
|
|||
setlocale(LC_ALL, "");
|
||||
#endif
|
||||
|
||||
SetOutputFile("JS_STDERR", stderr, &gErrFile);
|
||||
SetOutputFile("JS_STDOUT", stdout, &gOutFile);
|
||||
// Special-case stdout and stderr. We bump their refcounts to prevent them
|
||||
// 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*]");
|
||||
|
||||
|
|
|
@ -264,14 +264,3 @@
|
|||
[111111e1a (quirks)]
|
||||
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,
|
||||
128, // size of classNameBuffer in PRUnichars
|
||||
L"%s%s",
|
||||
wwc(NS_ConvertUTF8toUTF16(gAppData->remotingName).get()),
|
||||
static_cast<const wchar_t*>(NS_ConvertUTF8toUTF16(gAppData->remotingName).get()),
|
||||
L"MessageWindow" );
|
||||
mClassName = classNameBuffer;
|
||||
}
|
||||
|
@ -669,7 +669,7 @@ nsNativeAppSupportWin::Start( bool *aResult ) {
|
|||
::_snwprintf(reinterpret_cast<wchar_t*>(mMutexName),
|
||||
sizeof mMutexName / sizeof(char16_t), L"%s%s%s",
|
||||
MOZ_MUTEX_NAMESPACE,
|
||||
wwc(NS_ConvertUTF8toUTF16(gAppData->name).get()),
|
||||
static_cast<const wchar_t*>(NS_ConvertUTF8toUTF16(gAppData->name).get()),
|
||||
MOZ_STARTUP_MUTEX_NAME );
|
||||
Win32Mutex startupLock = Win32Mutex( mMutexName );
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче