summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--application/palemoon/app/profile/palemoon.js9
-rw-r--r--dom/base/nsObjectLoadingContent.cpp14
-rw-r--r--gfx/2d/Matrix.h24
3 files changed, 33 insertions, 14 deletions
diff --git a/application/palemoon/app/profile/palemoon.js b/application/palemoon/app/profile/palemoon.js
index ee71c4ea1..df46ea4b6 100644
--- a/application/palemoon/app/profile/palemoon.js
+++ b/application/palemoon/app/profile/palemoon.js
@@ -682,6 +682,15 @@ pref("plugins.update.notifyUser", false);
//Enable tri-state option (Always/Never/Ask)
pref("plugins.click_to_play", true);
+// Platform pref is to enable all plugins by default.
+// Uncomment this pref to default to click-to-play
+// pref("plugin.default.state", 1);
+
+// Don't load plugin instances with no src declared.
+// These prefs are documented in detail in all.js.
+pref("plugins.favorfallback.mode", "follow-ctp");
+pref("plugins.favorfallback.rules", "nosrc");
+
#ifdef XP_WIN
pref("browser.preferences.instantApply", false);
#else
diff --git a/dom/base/nsObjectLoadingContent.cpp b/dom/base/nsObjectLoadingContent.cpp
index 3c850c4cd..4978744e8 100644
--- a/dom/base/nsObjectLoadingContent.cpp
+++ b/dom/base/nsObjectLoadingContent.cpp
@@ -718,9 +718,9 @@ nsObjectLoadingContent::UnbindFromTree(bool aDeep, bool aNullParent)
if (mType == eType_Plugin) {
nsIDocument* doc = thisContent->GetComposedDoc();
if (doc && doc->IsActive()) {
- nsCOMPtr<nsIRunnable> ev = new nsSimplePluginEvent(doc,
- NS_LITERAL_STRING("PluginRemoved"));
- NS_DispatchToCurrentThread(ev);
+ nsCOMPtr<nsIRunnable> ev = new nsSimplePluginEvent(doc,
+ NS_LITERAL_STRING("PluginRemoved"));
+ NS_DispatchToCurrentThread(ev);
}
}
}
@@ -3628,6 +3628,14 @@ nsObjectLoadingContent::HasGoodFallback() {
}
}
+ // RULE "nosrc":
+ // Use fallback content if the object has not specified a src URI.
+ if (rulesList[i].EqualsLiteral("nosrc")) {
+ if (!mOriginalURI) {
+ return true;
+ }
+ }
+
// RULE "adobelink":
// Don't use fallback content when it has a link to adobe's website.
if (rulesList[i].EqualsLiteral("adobelink")) {
diff --git a/gfx/2d/Matrix.h b/gfx/2d/Matrix.h
index 22a01ca10..84c9a5280 100644
--- a/gfx/2d/Matrix.h
+++ b/gfx/2d/Matrix.h
@@ -734,7 +734,8 @@ public:
// Initialize a double-buffered array of points in homogenous space with
// the input rectangle, aRect.
Point4DTyped<UnknownUnits, F> points[2][kTransformAndClipRectMaxVerts];
- Point4DTyped<UnknownUnits, F>* dstPoint = points[0];
+ Point4DTyped<UnknownUnits, F>* dstPointStart = points[0];
+ Point4DTyped<UnknownUnits, F>* dstPoint = dstPointStart;
*dstPoint++ = TransformPoint(Point4DTyped<UnknownUnits, F>(aRect.x, aRect.y, 0, 1));
*dstPoint++ = TransformPoint(Point4DTyped<UnknownUnits, F>(aRect.XMost(), aRect.y, 0, 1));
@@ -754,11 +755,11 @@ public:
// points[1].
for (int plane=0; plane < 4; plane++) {
planeNormals[plane].Normalize();
- Point4DTyped<UnknownUnits, F>* srcPoint = points[plane & 1];
+ Point4DTyped<UnknownUnits, F>* srcPoint = dstPointStart;
Point4DTyped<UnknownUnits, F>* srcPointEnd = dstPoint;
- dstPoint = points[~plane & 1];
- Point4DTyped<UnknownUnits, F>* dstPointStart = dstPoint;
+ dstPointStart = points[~plane & 1];
+ dstPoint = dstPointStart;
Point4DTyped<UnknownUnits, F>* prevPoint = srcPointEnd - 1;
F prevDot = planeNormals[plane].DotProduct(*prevPoint);
@@ -787,10 +788,10 @@ public:
}
}
- size_t dstPointCount = 0;
- size_t srcPointCount = dstPoint - points[0];
- for (Point4DTyped<UnknownUnits, F>* srcPoint = points[0]; srcPoint < points[0] + srcPointCount; srcPoint++) {
-
+ Point4DTyped<UnknownUnits, F>* srcPoint = dstPointStart;
+ Point4DTyped<UnknownUnits, F>* srcPointEnd = dstPoint;
+ size_t vertCount = 0;
+ while (srcPoint < srcPointEnd) {
PointTyped<TargetUnits, F> p;
if (srcPoint->w == 0.0) {
// If a point lies on the intersection of the clipping planes at
@@ -800,12 +801,13 @@ public:
p = srcPoint->As2DPoint();
}
// Emit only unique points
- if (dstPointCount == 0 || p != aVerts[dstPointCount - 1]) {
- aVerts[dstPointCount++] = p;
+ if (vertCount == 0 || p != aVerts[vertCount - 1]) {
+ aVerts[vertCount++] = p;
}
+ srcPoint++;
}
- return dstPointCount;
+ return vertCount;
}
static const int kTransformAndClipRectMaxVerts = 32;