Skip to content

Commit

Permalink
Merge inbound to central, a=merge
Browse files Browse the repository at this point in the history
  • Loading branch information
KWierso committed Oct 14, 2016
2 parents 03c85fb + 70a3e2d commit 4208397
Show file tree
Hide file tree
Showing 84 changed files with 5,260 additions and 4,301 deletions.
4 changes: 4 additions & 0 deletions browser/base/content/browser-media.js
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,10 @@ let gDecoderDoctorHandler = {
if (type == "cannot-initialize-pulseaudio") {
return gNavigatorBundle.getString("decoder.noPulseAudio.message");
}
if (type == "unsupported-libavcodec" &&
AppConstants.platform == "linux") {
return gNavigatorBundle.getString("decoder.unsupportedLibavcodec.message");
}
return "";
},

Expand Down
12 changes: 12 additions & 0 deletions browser/base/content/test/general/browser_decoderDoctor.js
Original file line number Diff line number Diff line change
Expand Up @@ -108,3 +108,15 @@ add_task(function* test_cannot_initialize_pulseaudio() {
message,
{sumo: "fix-common-audio-and-video-issues"});
});

add_task(function* test_unsupported_libavcodec() {
// This is only sent on Linux.
if (AppConstants.platform != "linux") {
return;
}

let message = gNavigatorBundle.getString("decoder.unsupportedLibavcodec.message");
yield test_decoder_doctor_notification("unsupported-libavcodec",
message,
{noLearnMoreButton: true});
});
4 changes: 4 additions & 0 deletions browser/components/uitour/UITour.jsm
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
Cu.import("resource://gre/modules/AppConstants.jsm");
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/Preferences.jsm");
Cu.import("resource://gre/modules/Promise.jsm");
Cu.import("resource:///modules/RecentWindow.jsm");
Cu.import("resource://gre/modules/Task.jsm");
Expand Down Expand Up @@ -1865,6 +1866,9 @@ this.UITour = {
case "sync":
this.sendPageCallback(aMessageManager, aCallbackID, {
setup: Services.prefs.prefHasUserValue("services.sync.username"),
desktopDevices: Preferences.get("services.sync.clients.devices.desktop", 0),
mobileDevices: Preferences.get("services.sync.clients.devices.mobile", 0),
totalDevices: Preferences.get("services.sync.numClients", 0),
});
break;
case "canReset":
Expand Down
28 changes: 28 additions & 0 deletions browser/components/uitour/test/browser_UITour_sync.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,34 @@ add_UITour_task(function* test_checkSyncSetup_enabled() {
is(result.setup, true, "Sync should be setup");
});

add_UITour_task(function* test_checkSyncCounts() {
Services.prefs.setIntPref("services.sync.clients.devices.desktop", 4);
Services.prefs.setIntPref("services.sync.clients.devices.mobile", 5);
Services.prefs.setIntPref("services.sync.numClients", 9);
let result = yield getConfigurationPromise("sync");
is(result.mobileDevices, 5, "mobileDevices should be set");
is(result.desktopDevices, 4, "desktopDevices should be set");
is(result.totalDevices, 9, "totalDevices should be set");

Services.prefs.clearUserPref("services.sync.clients.devices.desktop");
result = yield getConfigurationPromise("sync");
is(result.mobileDevices, 5, "mobileDevices should be set");
is(result.desktopDevices, 0, "desktopDevices should be 0");
is(result.totalDevices, 9, "totalDevices should be set");

Services.prefs.clearUserPref("services.sync.clients.devices.mobile");
result = yield getConfigurationPromise("sync");
is(result.mobileDevices, 0, "mobileDevices should be 0");
is(result.desktopDevices, 0, "desktopDevices should be 0");
is(result.totalDevices, 9, "totalDevices should be set");

Services.prefs.clearUserPref("services.sync.numClients");
result = yield getConfigurationPromise("sync");
is(result.mobileDevices, 0, "mobileDevices should be 0");
is(result.desktopDevices, 0, "desktopDevices should be 0");
is(result.totalDevices, 0, "totalDevices should be 0");
});

// The showFirefoxAccounts API is sync related, so we test that here too...
add_UITour_task(function* test_firefoxAccountsNoParams() {
yield gContentAPI.showFirefoxAccounts();
Expand Down
1 change: 1 addition & 0 deletions browser/locales/en-US/chrome/browser/browser.properties
Original file line number Diff line number Diff line change
Expand Up @@ -735,6 +735,7 @@ decoder.noCodecsLinux.message = To play video, you may need to install the requi
decoder.noHWAcceleration.message = To improve video quality, you may need to install Microsoft’s Media Feature Pack.
decoder.noHWAccelerationVista.message = To improve video quality, you may need to install Microsoft’s Platform Update Supplement for Windows Vista.
decoder.noPulseAudio.message = To play audio, you may need to install the required PulseAudio software.
decoder.unsupportedLibavcodec.message = libavcodec may be vulnerable or is not supported, and should be updated to play video.

permissions.remove.tooltip = Clear this permission and ask again

Expand Down
2 changes: 1 addition & 1 deletion devtools/client/themes/rules.css
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@
display: inline-block;
}

.ruleview-expander.theme-twisty:dir(rtl) {
.ruleview-rule .ruleview-expander.theme-twisty:dir(rtl) {
/* for preventing .theme-twisty's wrong direction in rtl; Bug 1296648 */
transform: none;
}
Expand Down
13 changes: 2 additions & 11 deletions dom/base/ShadowRoot.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -745,23 +745,14 @@ ShadowRootStyleSheetList::~ShadowRootStyleSheetList()
MOZ_COUNT_DTOR(ShadowRootStyleSheetList);
}

CSSStyleSheet*
StyleSheet*
ShadowRootStyleSheetList::IndexedGetter(uint32_t aIndex, bool& aFound)
{
aFound = aIndex < mShadowRoot->mProtoBinding->SheetCount();

if (!aFound) {
return nullptr;
}

// XXXheycam Return null until ServoStyleSheet implements the right
// DOM interfaces.
StyleSheet* sheet = mShadowRoot->mProtoBinding->StyleSheetAt(aIndex);
if (sheet->IsServo()) {
NS_ERROR("stylo: can't return ServoStyleSheets to script yet");
return nullptr;
}
return sheet->AsGecko();
return mShadowRoot->mProtoBinding->StyleSheetAt(aIndex);
}

uint32_t
Expand Down
4 changes: 2 additions & 2 deletions dom/base/ShadowRoot.h
Original file line number Diff line number Diff line change
Expand Up @@ -202,8 +202,8 @@ class ShadowRootStyleSheetList : public StyleSheetList
return mShadowRoot;
}

virtual uint32_t Length() override;
virtual CSSStyleSheet* IndexedGetter(uint32_t aIndex, bool& aFound) override;
uint32_t Length() override;
StyleSheet* IndexedGetter(uint32_t aIndex, bool& aFound) override;

protected:
virtual ~ShadowRootStyleSheetList();
Expand Down
6 changes: 3 additions & 3 deletions dom/base/StyleSheetList.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
class nsINode;

namespace mozilla {
class CSSStyleSheet;
class StyleSheet;

namespace dom {

Expand All @@ -30,8 +30,8 @@ class StyleSheetList : public nsIDOMStyleSheetList
virtual nsINode* GetParentObject() const = 0;

virtual uint32_t Length() = 0;
virtual CSSStyleSheet* IndexedGetter(uint32_t aIndex, bool& aFound) = 0;
CSSStyleSheet* Item(uint32_t aIndex)
virtual StyleSheet* IndexedGetter(uint32_t aIndex, bool& aFound) = 0;
StyleSheet* Item(uint32_t aIndex)
{
bool dummy = false;
return IndexedGetter(aIndex, dummy);
Expand Down
14 changes: 2 additions & 12 deletions dom/base/nsDocument.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -592,25 +592,15 @@ nsDOMStyleSheetList::Length()
return mLength;
}

CSSStyleSheet*
StyleSheet*
nsDOMStyleSheetList::IndexedGetter(uint32_t aIndex, bool& aFound)
{
if (!mDocument || aIndex >= (uint32_t)mDocument->GetNumberOfStyleSheets()) {
aFound = false;
return nullptr;
}

aFound = true;
StyleSheet* sheet = mDocument->GetStyleSheetAt(aIndex);
NS_ASSERTION(sheet, "Must have a sheet");

// XXXheycam Return null until ServoStyleSheet implements the right DOM
// interfaces.
if (sheet->IsServo()) {
NS_ERROR("stylo: can't return a ServoStyleSheet to the DOM yet");
return nullptr;
}
return sheet->AsGecko();
return mDocument->GetStyleSheetAt(aIndex);
}

void
Expand Down
5 changes: 2 additions & 3 deletions dom/base/nsDocument.h
Original file line number Diff line number Diff line change
Expand Up @@ -306,9 +306,8 @@ class nsDOMStyleSheetList : public mozilla::dom::StyleSheetList,
return mDocument;
}

virtual uint32_t Length() override;
virtual mozilla::CSSStyleSheet*
IndexedGetter(uint32_t aIndex, bool& aFound) override;
uint32_t Length() override;
mozilla::StyleSheet* IndexedGetter(uint32_t aIndex, bool& aFound) override;

protected:
virtual ~nsDOMStyleSheetList();
Expand Down
2 changes: 1 addition & 1 deletion dom/base/nsHostObjectURI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ NS_INTERFACE_MAP_END_INHERITING(mozilla::net::nsSimpleURI)
NS_IMETHODIMP
nsHostObjectURI::GetBlobImpl(nsISupports** aBlobImpl)
{
RefPtr<BlobImpl> blobImpl(mBlobImpl);
RefPtr<mozilla::dom::BlobImpl> blobImpl(mBlobImpl);
blobImpl.forget(aBlobImpl);
return NS_OK;
}
Expand Down
10 changes: 1 addition & 9 deletions dom/base/nsStyleLinkElement.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,7 @@ class nsStyleLinkElement : public nsIStyleSheetLinkingElement

NS_IMETHOD QueryInterface(REFNSIID aIID, void** aInstancePtr) override = 0;

mozilla::CSSStyleSheet* GetSheet() const
{
// XXXheycam Return nullptr for ServoStyleSheets until we have a way of
// exposing them to script.
NS_ASSERTION(!mStyleSheet || mStyleSheet->IsGecko(),
"stylo: ServoStyleSheets can't be exposed to script yet");
return mStyleSheet && mStyleSheet->IsGecko() ? mStyleSheet->AsGecko() :
nullptr;
}
mozilla::StyleSheet* GetSheet() const { return mStyleSheet; }

// nsIStyleSheetLinkingElement
NS_IMETHOD SetStyleSheet(mozilla::StyleSheet* aStyleSheet) override;
Expand Down
5 changes: 3 additions & 2 deletions dom/bindings/Bindings.conf
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,7 @@ DOMInterfaces = {
},

'CSSStyleSheet': {
'nativeType': 'mozilla::CSSStyleSheet',
'nativeType': 'mozilla::StyleSheet',
'binaryNames': { 'ownerRule': 'DOMOwnerRule' },
},

Expand Down Expand Up @@ -927,7 +927,8 @@ DOMInterfaces = {
},

'StyleSheet': {
'nativeType': 'mozilla::CSSStyleSheet',
'nativeType': 'mozilla::StyleSheet',
'headerFile': 'mozilla/StyleSheetInlines.h',
},

'SVGAnimatedLengthList': {
Expand Down
8 changes: 7 additions & 1 deletion dom/bindings/Codegen.py
Original file line number Diff line number Diff line change
Expand Up @@ -3111,8 +3111,14 @@ def definition_body(self):
* Calling fromMarkedLocation() is safe because protoAndIfaceCache is
* traced by TraceProtoAndIfaceCache() and its contents are never
* changed after they have been set.
*
* Calling address() avoids the read read barrier that does gray
* unmarking, but it's not possible for the object to be gray here.
*/
return JS::Handle<JSObject*>::fromMarkedLocation(protoAndIfaceCache.EntrySlotMustExist(${id}).address());

const JS::Heap<JSObject*>& entrySlot = protoAndIfaceCache.EntrySlotMustExist(${id});
MOZ_ASSERT_IF(entrySlot, !JS::ObjectIsMarkedGray(entrySlot));
return JS::Handle<JSObject*>::fromMarkedLocation(entrySlot.address());
""",
id=self.id)

Expand Down
1 change: 1 addition & 0 deletions dom/canvas/test/crash/mochitest.ini
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,4 @@ support-files =
[test_616401.html]
[test_798802-1.html]
[test_1251091-1.html]
[test_createImageBitmap-video.html]
34 changes: 34 additions & 0 deletions dom/canvas/test/crash/test_createImageBitmap-video.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=1309838
-->
<head>
<title>Test for canvas crashing</title>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>

<body>
<script class="testbody" type="application/javascript">
SimpleTest.waitForExplicitFinish();

var v = document.createElement("video");
document.body.appendChild(v);
v.src ="data:video/ogg;base64,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";
v.addEventListener("playing", function() {
var x = createImageBitmap(v);
x.then(function() {
ok(false, "Can't have an image bitmap for this video.");
}, function() {
ok(true, "Yay, rejected but no crash!");
}).then(function() {
SimpleTest.finish();
});
});
v.play();
</script>
</body>
</html>

Loading

0 comments on commit 4208397

Please sign in to comment.