merge autoland to mozilla-central. r=merge a=merge

MozReview-Commit-ID: BVrawNPrB4h
This commit is contained in:
Sebastian Hengst 2017-09-17 23:30:04 +02:00
Родитель 05c4c3bc0c afd0595779
Коммит 054f8a9b40
7 изменённых файлов: 87 добавлений и 13 удалений

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

@ -8,6 +8,7 @@ support-files =
file_workerPerformance.js
head.js
[browser_block_mozAddonManager.js]
[browser_navigator.js]
[browser_netInfo.js]
[browser_performanceAPI.js]

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

@ -0,0 +1,35 @@
/**
* Bug 1384330 - A test case for making sure the navigator.mozAddonManager will
* be blocked when pref 'privacy.resistFingerprinting.block_mozAddonManager' is true.
*/
const TEST_PATH = "https://example.com/browser/browser/" +
"components/resistfingerprinting/test/browser/"
add_task(async function test() {
await SpecialPowers.pushPrefEnv({"set":
[["extensions.webapi.testing", true]]
});
for (let pref of [false, true]) {
await SpecialPowers.pushPrefEnv({"set":
[["privacy.resistFingerprinting.block_mozAddonManager", pref]]
});
let tab = await BrowserTestUtils.openNewForegroundTab(
gBrowser, TEST_PATH + "file_dummy.html");
await ContentTask.spawn(tab.linkedBrowser, pref, function(aPref) {
if (aPref) {
is(content.navigator.mozAddonManager, undefined,
"The navigator.mozAddonManager should not exist when the pref is on.");
} else {
ok(content.navigator.mozAddonManager,
"The navigator.mozAddonManager should exist when the pref is off.");
}
});
await BrowserTestUtils.removeTab(tab);
await SpecialPowers.popPrefEnv();
}
});

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

@ -889,6 +889,7 @@ html|span.ac-emphasize-text-url {
-moz-appearance: none;
/* overlap the nav-bar's top border */
margin-bottom: calc(-1 * var(--tab-toolbar-navbar-overlap));
padding-top: var(--space-above-tabbar);
}
:root:not([customizing]):not([tabsintitlebar]):not([inFullscreen]) #TabsToolbar:not(:-moz-lwtheme) {
@ -900,7 +901,6 @@ html|span.ac-emphasize-text-url {
text-shadow: @loweredShadow@;
}
#main-window[tabsintitlebar] > #titlebar:not(:-moz-lwtheme),
:root:-moz-any([inFullscreen], [tabsintitlebar]) #TabsToolbar:not(:-moz-lwtheme) {
-moz-appearance: -moz-mac-vibrancy-dark;
-moz-font-smoothing-background-color: -moz-mac-vibrancy-dark;

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

@ -3165,11 +3165,14 @@ MediaFormatReader::GetMozDebugReaderData(nsACString& aString)
mAudio.mLastStreamSourceID);
}
VideoInfo videoInfo = mVideo.mInfo ? *mVideo.mInfo->GetAsVideoInfo()
: *mVideo.mOriginalInfo->GetAsVideoInfo();
VideoInfo videoInfo = mVideo.mInfo
? *mVideo.mInfo->GetAsVideoInfo()
: mVideo.mOriginalInfo
? *mVideo.mOriginalInfo->GetAsVideoInfo()
: VideoInfo();
result += nsPrintfCString(
"Video Decoder(%s, %dx%d @ %0.2ffps): %s\n",
"Video Decoder(%s, %dx%d @ %0.2f): %s\n",
videoType.get(),
videoInfo.mDisplay.width < 0 ? 0 : videoInfo.mDisplay.width,
videoInfo.mDisplay.height < 0 ? 0 : videoInfo.mDisplay.height,

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

@ -441,7 +441,7 @@ public:
if (aData->Length() < 8) {
return NS_ERROR_NOT_AVAILABLE;
}
AtomParser parser(mType, aData);
AtomParser parser(mType, aData, AtomParser::StopAt::eInitSegment);
if (!parser.IsValid()) {
return MediaResult(
NS_ERROR_FAILURE,
@ -455,7 +455,7 @@ public:
if (aData->Length() < 8) {
return NS_ERROR_NOT_AVAILABLE;
}
AtomParser parser(mType, aData);
AtomParser parser(mType, aData, AtomParser::StopAt::eMediaSegment);
if (!parser.IsValid()) {
return MediaResult(
NS_ERROR_FAILURE,
@ -465,14 +465,24 @@ public:
}
private:
class AtomParser {
class AtomParser
{
public:
AtomParser(const MediaContainerType& aType, const MediaByteBuffer* aData)
enum class StopAt
{
eInitSegment,
eMediaSegment,
eEnd
};
AtomParser(const MediaContainerType& aType, const MediaByteBuffer* aData,
StopAt aStop = StopAt::eEnd)
{
const MediaContainerType mType(aType); // for logging macro.
mp4_demuxer::ByteReader reader(aData);
mp4_demuxer::AtomType initAtom("moov");
mp4_demuxer::AtomType mediaAtom("moof");
mp4_demuxer::AtomType dataAtom("mdat");
// Valid top-level boxes defined in ISO/IEC 14496-12 (Table 1)
static const mp4_demuxer::AtomType validBoxes[] = {
@ -511,9 +521,9 @@ private:
mp4_demuxer::AtomType(type) == mediaAtom) {
mMediaOffset = Some(reader.Offset());
}
if (mInitOffset.isSome() && mMediaOffset.isSome()) {
// We have everything we need.
break;
if (mDataOffset.isNothing() &&
mp4_demuxer::AtomType(type) == dataAtom) {
mDataOffset = Some(reader.Offset());
}
if (size == 1) {
// 64 bits size.
@ -531,6 +541,20 @@ private:
break;
}
reader.Read(size - 8);
if (aStop == StopAt::eInitSegment && (mInitOffset || mMediaOffset)) {
// When we're looking for an init segment, if we encountered a media
// segment, it we will need to be processed first. So we can stop
// right away if we have found a media segment.
break;
}
if (aStop == StopAt::eMediaSegment &&
(mInitOffset || (mMediaOffset && mDataOffset))) {
// When we're looking for a media segment, if we encountered an init
// segment, it we will need to be processed first. So we can stop
// right away if we have found an init segment.
break;
}
}
}
@ -549,6 +573,7 @@ private:
private:
Maybe<size_t> mInitOffset;
Maybe<size_t> mMediaOffset;
Maybe<size_t> mDataOffset;
bool mValid = true;
char mLastInvalidBox[5];
};

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

@ -7,7 +7,6 @@ extern crate bitflags;
extern crate bluetooth_traits;
extern crate device;
extern crate ipc_channel;
#[cfg(target_os = "linux")]
extern crate servo_config;
extern crate servo_rand;
#[cfg(target_os = "linux")]
@ -26,6 +25,7 @@ use device::bluetooth::{BluetoothGATTDescriptor, BluetoothGATTService};
use ipc_channel::ipc::{self, IpcReceiver, IpcSender};
#[cfg(target_os = "linux")]
use servo_config::opts;
use servo_config::prefs::PREFS;
use servo_rand::Rng;
use std::borrow::ToOwned;
use std::collections::{HashMap, HashSet};
@ -75,7 +75,11 @@ pub trait BluetoothThreadFactory {
impl BluetoothThreadFactory for IpcSender<BluetoothRequest> {
fn new() -> IpcSender<BluetoothRequest> {
let (sender, receiver) = ipc::channel().unwrap();
let adapter = BluetoothAdapter::init().ok();
let adapter = if Some(true) == PREFS.get("dom.bluetooth.enabled").as_boolean() {
BluetoothAdapter::init()
} else {
BluetoothAdapter::init_mock()
}.ok();
thread::Builder::new().name("BluetoothThread".to_owned()).spawn(move || {
BluetoothManager::new(receiver, adapter).start();
}).expect("Thread spawning failed");

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

@ -20,6 +20,12 @@ using namespace mozilla::dom;
static bool
IsValidHost(const nsACString& host) {
// This hidden pref allows users to disable mozAddonManager entirely if they want
// for fingerprinting resistance. Someone like Tor browser will use this pref.
if (Preferences::GetBool("privacy.resistFingerprinting.block_mozAddonManager")) {
return false;
}
// This is ugly, but Preferences.h doesn't have support
// for default prefs or locked prefs
nsCOMPtr<nsIPrefService> prefService (do_GetService(NS_PREFSERVICE_CONTRACTID));