Bug 713381 - Commit backout. r=backout

This commit is contained in:
Chris Pearce 2012-01-19 11:57:44 +13:00
Родитель 7894822b60 96369eaeb1
Коммит 351ff8bb7e
26 изменённых файлов: 200 добавлений и 87 удалений

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

@ -1271,7 +1271,7 @@ InplaceEditor.prototype = {
// Replace spaces with non-breaking spaces. Otherwise setting
// the span's textContent will collapse spaces and the measurement
// will be wrong.
this._measurement.textContent = this.input.value.replace(' ', '\u00a0', 'g');
this._measurement.textContent = this.input.value.replace(/ /g, '\u00a0');
// We add a bit of padding to the end. Should be enough to fit
// any letter that could be typed, otherwise we'll scroll before

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

@ -29,4 +29,4 @@ fi
# Note, the version (10) is used by libffi's configure.
ac_add_options --target=i386-apple-darwin10
ac_add_options --with-macos-sdk=/Developer/SDKs/MacOSX10.5.sdk
ac_add_options --with-macos-sdk=/Developer/SDKs/MacOSX10.6.sdk

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

@ -42,8 +42,7 @@ mk_add_options MOZ_POSTFLIGHT_ALL+=build/macosx/universal/flight.mk
ac_add_app_options i386 --target=i386-apple-darwin10
ac_add_app_options x86_64 --target=x86_64-apple-darwin10
ac_add_app_options i386 --with-macos-sdk=/Developer/SDKs/MacOSX10.5.sdk
ac_add_app_options x86_64 --with-macos-sdk=/Developer/SDKs/MacOSX10.6.sdk
ac_add_options --with-macos-sdk=/Developer/SDKs/MacOSX10.6.sdk
. $topsrcdir/build/macosx/common

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

@ -566,6 +566,11 @@ if test -n "$CROSS_COMPILE" -a "$target" != "$host"; then
AC_DEFINE(CROSS_COMPILE)
else
AC_PROG_CC
case "$target" in
*-mingw*)
# Work around the conftest.exe access problem on Windows
sleep 1
esac
AC_PROG_CXX
AC_PROG_RANLIB
MOZ_PATH_PROGS(AS, $AS as, $CC)

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

@ -1551,9 +1551,8 @@ nsGenericHTMLElement::GetPrimaryPresState(nsGenericHTMLElement* aContent,
nsresult result = NS_OK;
nsCOMPtr<nsILayoutHistoryState> history;
nsCAutoString key;
GetLayoutHistoryAndKey(aContent, false, getter_AddRefs(history), key);
nsCOMPtr<nsILayoutHistoryState> history = GetLayoutHistoryAndKey(aContent, false, key);
if (history) {
// Get the pres state for this key, if it doesn't exist, create one
@ -1568,10 +1567,9 @@ nsGenericHTMLElement::GetPrimaryPresState(nsGenericHTMLElement* aContent,
}
nsresult
already_AddRefed<nsILayoutHistoryState>
nsGenericHTMLElement::GetLayoutHistoryAndKey(nsGenericHTMLElement* aContent,
bool aRead,
nsILayoutHistoryState** aHistory,
nsACString& aKey)
{
//
@ -1579,20 +1577,19 @@ nsGenericHTMLElement::GetLayoutHistoryAndKey(nsGenericHTMLElement* aContent,
//
nsCOMPtr<nsIDocument> doc = aContent->GetDocument();
if (!doc) {
return NS_OK;
return nsnull;
}
//
// Get the history (don't bother with the key if the history is not there)
//
*aHistory = doc->GetLayoutHistoryState().get();
if (!*aHistory) {
return NS_OK;
nsCOMPtr<nsILayoutHistoryState> history = doc->GetLayoutHistoryState();
if (!history) {
return nsnull;
}
if (aRead && !(*aHistory)->HasStates()) {
NS_RELEASE(*aHistory);
return NS_OK;
if (aRead && !history->HasStates()) {
return nsnull;
}
//
@ -1602,31 +1599,27 @@ nsGenericHTMLElement::GetLayoutHistoryAndKey(nsGenericHTMLElement* aContent,
nsIStatefulFrame::eNoID,
aKey);
if (NS_FAILED(rv)) {
NS_RELEASE(*aHistory);
return rv;
return nsnull;
}
// If the state key is blank, this is anonymous content or for
// whatever reason we are not supposed to save/restore state.
if (aKey.IsEmpty()) {
NS_RELEASE(*aHistory);
return NS_OK;
return nsnull;
}
// Add something unique to content so layout doesn't muck us up
aKey += "-C";
return rv;
return history.forget();
}
bool
nsGenericHTMLElement::RestoreFormControlState(nsGenericHTMLElement* aContent,
nsIFormControl* aControl)
{
nsCOMPtr<nsILayoutHistoryState> history;
nsCAutoString key;
GetLayoutHistoryAndKey(aContent, true,
getter_AddRefs(history), key);
nsCOMPtr<nsILayoutHistoryState> history = GetLayoutHistoryAndKey(aContent, true, key);
if (!history) {
return false;
}

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

@ -471,10 +471,10 @@ public:
* @param aState the history state object (out param)
* @param aKey the key (out param)
*/
static nsresult GetLayoutHistoryAndKey(nsGenericHTMLElement* aContent,
bool aRead,
nsILayoutHistoryState** aState,
nsACString& aKey);
static already_AddRefed<nsILayoutHistoryState>
GetLayoutHistoryAndKey(nsGenericHTMLElement* aContent,
bool aRead,
nsACString& aKey);
/**
* Restore the state for a form control. Ends up calling
* nsIFormControl::RestoreState().
@ -869,7 +869,7 @@ public:
{
return NS_OK;
}
virtual bool RestoreState(nsPresState* aState)
{
return false;

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

@ -757,10 +757,10 @@ var WifiManager = (function() {
}
function ipToString(n) {
return String((n & (0xff << 24)) >> 24) + "." +
((n & (0xff << 16)) >> 16) + "." +
((n & (0xff << 8)) >> 8) + "." +
((n & (0xff << 0)) >> 0);
return String((n >> 0) & 0xFF) + "." +
((n >> 8) & 0xFF) + "." +
((n >> 16) & 0xFF) + "." +
((n >> 24) & 0xFF);
}
manager.enableNetwork = function(netId, disableOthers, callback) {

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

@ -0,0 +1,9 @@
<span>
<script contenteditable="true"></script>
<blockquote>
<input>
<code style="display: table-row;">
<html contenteditable="true">
</blockquote>

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

@ -0,0 +1,28 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script>
<![CDATA[
function boom()
{
while (document.documentElement.firstChild) {
document.documentElement.removeChild(document.documentElement.firstChild);
}
var td = document.createElementNS("http://www.w3.org/1999/xhtml", "td");
td.setAttributeNS(null, "contenteditable", "true");
(document.documentElement).appendChild(td);
var head = document.createElementNS("http://www.w3.org/1999/xhtml", "head");
(document.documentElement).appendChild(head);
head.appendChild(td);
}
window.addEventListener("load", boom, false);
]]>
</script>
</head>
<body></body>
</html>

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

@ -8,3 +8,5 @@ load 459613.html
load 475132-1.xhtml
asserts-if(!Android,1) load 633709.xhtml # Bug 695364
asserts-if(!Android,6) load 636074-1.html # Bug 439258, charged to the wrong test due to bug 635550
load 713427-1.html
load 713427-2.xhtml

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

@ -3605,32 +3605,37 @@ IsElementVisible(dom::Element* aElement)
nsIContent *cur = aElement;
for (; ;) {
// Walk up the tree looking for the nearest ancestor with a frame.
// The state of the child right below it will determine whether
// we might possibly have a frame or not.
bool haveLazyBitOnChild = cur->HasFlag(NODE_NEEDS_FRAME);
cur = cur->GetFlattenedTreeParent();
if (!cur) {
// None of our ancestors have lazy bits set, so we shouldn't have a frame
return false;
if (!haveLazyBitOnChild) {
// None of our ancestors have lazy bits set, so we shouldn't
// have a frame
return false;
}
// The root has a lazy frame construction bit. We need to check
// our style.
break;
}
if (cur->GetPrimaryFrame()) {
// None of our ancestors up to the nearest ancestor with a frame have
// lazy bits; that means we won't get a frame
return false;
}
if (cur->HasFlag(NODE_NEEDS_FRAME)) {
// Double-check that the parent doesn't have a leaf frame
nsIContent *parent = cur->GetFlattenedTreeParent();
if (parent) {
NS_ASSERTION(parent->GetPrimaryFrame(),
"Why does our parent not have a frame?");
if (parent->GetPrimaryFrame()->IsLeaf()) {
// No frame for us
return false;
}
if (!haveLazyBitOnChild) {
// Our ancestor directly under |cur| doesn't have lazy bits;
// that means we won't get a frame
return false;
}
// |cur| will get a frame sometime. What does that mean for us?
// |We have to figure that out!
if (cur->GetPrimaryFrame()->IsLeaf()) {
// Nothing under here will ever get frames
return false;
}
// Otherwise, we might end up with a frame when that lazy bit is
// processed. Figure out our actual style.
break;
}
}

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

@ -431,6 +431,36 @@ gfxDWriteFontEntry::CreateFontFace(IDWriteFontFace **aFontFace,
HRESULT hr;
if (mFont) {
hr = mFont->CreateFontFace(aFontFace);
if (SUCCEEDED(hr) && (aSimulations & DWRITE_FONT_SIMULATIONS_BOLD) &&
!((*aFontFace)->GetSimulations() & DWRITE_FONT_SIMULATIONS_BOLD)) {
// need to replace aFontFace with a version that has the Bold
// simulation - unfortunately, DWrite doesn't provide a simple API
// for this
nsRefPtr<IDWriteFontFace> origFace = (*aFontFace);
(*aFontFace)->Release();
*aFontFace = NULL;
UINT32 numberOfFiles = 0;
hr = origFace->GetFiles(&numberOfFiles, NULL);
if (FAILED(hr)) {
return NS_ERROR_FAILURE;
}
nsAutoTArray<IDWriteFontFile*,1> files;
files.AppendElements(numberOfFiles);
hr = origFace->GetFiles(&numberOfFiles, files.Elements());
if (FAILED(hr)) {
return NS_ERROR_FAILURE;
}
hr = gfxWindowsPlatform::GetPlatform()->GetDWriteFactory()->
CreateFontFace(origFace->GetType(),
numberOfFiles,
files.Elements(),
origFace->GetIndex(),
aSimulations,
aFontFace);
for (UINT32 i = 0; i < numberOfFiles; ++i) {
files[i]->Release();
}
}
} else if (mFontFile) {
IDWriteFontFile *fontFile = mFontFile.get();
hr = gfxWindowsPlatform::GetPlatform()->GetDWriteFactory()->

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

@ -215,10 +215,8 @@ Execute(JSContext *cx, JSScript *script, JSObject &scopeChain, Value *rval);
enum InterpMode
{
JSINTERP_NORMAL = 0, /* interpreter is running normally */
JSINTERP_RECORD = 1, /* interpreter has been started to record/run traces */
JSINTERP_PROFILE = 2, /* interpreter should profile a loop */
JSINTERP_REJOIN = 3, /* as normal, but the frame has already started */
JSINTERP_SKIP_TRAP = 4 /* as REJOIN, but skip trap at first opcode */
JSINTERP_REJOIN = 1, /* as normal, but the frame has already started */
JSINTERP_SKIP_TRAP = 2 /* as REJOIN, but skip trap at first opcode */
};
/*

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

@ -50,6 +50,7 @@ skip-if(!(d2d||cocoaWidget)) random-if(d2d) != subpixel-glyphs-x-2a.html subpixe
== subpixel-lineheight-1a.html subpixel-lineheight-1b.html
== swash-1.html swash-1-ref.html
HTTP(..) != synthetic-bold-metrics-01.html synthetic-bold-metrics-01-notref.html
== synthetic-bold-papyrus-01.html synthetic-bold-papyrus-01-ref.html
# Tests for text-align-last
== text-align-last-start.html text-align-last-start-ref.html
== text-align-last-end.html text-align-last-end-ref.html

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

@ -0,0 +1,23 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
body {
margin: 50px;
font-size: 24px;
}
#test1 { font-family: Papyrus, serif; }
</style>
</head>
<body>
<p id="test1">Test for Papyrus font <b>within a bold tag</b>.</p>
</body>
</html>

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

@ -0,0 +1,28 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
body {
margin: 50px;
font-size: 24px;
}
@font-face {
font-family: test;
src: local(Papyrus);
}
#test2 { font-family: test, serif; }
</style>
</head>
<body>
<p id="test2">Test for Papyrus font <b>within a bold tag</b>.</p>
</body>
</html>

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

@ -556,7 +556,8 @@ var BrowserApp = {
let ms = Cc["@mozilla.org/mime;1"].getService(Ci.nsIMIMEService);
let mimeInfo = ms.getFromTypeAndExtension("application/pdf", "pdf");
let webBrowserPrint = content.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIWebBrowserPrint);
let webBrowserPrint = aBrowser.contentWindow.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIWebBrowserPrint);
let cancelable = {
cancel: function (aReason) {

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

@ -648,7 +648,7 @@ let TPS =
.createInstance(CI.nsILocalFile);
if (hh.oscpu.toLowerCase().indexOf('windows') > -1) {
let re = /\/(\w)\/(.*)/;
this.config.testdir = this.config.testdir.replace(re, "$1://$2").replace("/", "\\", "g");
this.config.testdir = this.config.testdir.replace(re, "$1://$2").replace(/\//g, "\\");
}
mozmillfile.initWithPath(this.config.testdir);
mozmillfile.appendRelativePath(testfile);

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

@ -108,7 +108,7 @@ LightweightThemeConsumer.prototype = {
function _setImage(aElement, aActive, aURL) {
aElement.style.backgroundImage =
(aActive && aURL) ? 'url("' + aURL.replace('"', '\\"', "g") + '")' : "";
(aActive && aURL) ? 'url("' + aURL.replace(/"/g, '\\"') + '")' : "";
}
function _parseRGB(aColorString) {

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

@ -56,11 +56,11 @@ var expectedResults = {
// "pastetofirst" strips leading newlines
"pastetofirst": testString.replace(/^\n/, '').split(/\n/)[0],
// "replacewithspaces" strips trailing newlines first - bug 432415
"replacewithspaces": testString.replace(/\n$/, '').replace('\n',' ','g'),
"replacewithspaces": testString.replace(/\n$/, '').replace(/\n/g,' '),
// "strip" is pretty straightforward
"strip": testString.replace('\n','','g'),
"strip": testString.replace(/\n/g,''),
// "replacewithcommas" strips leading and trailing newlines first
"replacewithcommas": testString.replace(/^\n/, '').replace(/\n$/, '').replace('\n',',','g'),
"replacewithcommas": testString.replace(/^\n/, '').replace(/\n$/, '').replace(/\n/g,','),
// "stripsurroundingwhitespace" strips all newlines and whitespace around them
"stripsurroundingwhitespace": testString.replace(/\s*\n\s*/g,'')
};

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

@ -67,7 +67,7 @@ function parseKeyValuePairs(text) {
let [key, value] = [lines[i].substring(0, eq),
lines[i].substring(eq + 1)];
if (key && value)
data[key] = value.replace("\\n", "\n", "g").replace("\\\\", "\\", "g");
data[key] = value.replace(/\\n/g, "\n").replace(/\\\\/g, "\\");
}
}
return data;

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

@ -148,14 +148,14 @@ function convertHTMLToPlainText(html) {
var input = Cc["@mozilla.org/supports-string;1"].
createInstance(Ci.nsISupportsString);
input.data = html.replace("\n", "<br>", "g");
input.data = html.replace(/\n/g, "<br>");
var output = {};
converter.convert("text/html", input, input.data.length, "text/unicode",
output, {});
if (output.value instanceof Ci.nsISupportsString)
return output.value.data.replace("\r\n", "\n", "g");
return output.value.data.replace(/\r\n/g, "\n");
return html;
}

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

@ -828,8 +828,8 @@ function loadManifestFromRDF(aUri, aStream) {
let byte_string = [String.fromCharCode(byte) for each (byte in bytes)]
.join("");
// Base64 encode
addon.syncGUID = btoa(byte_string).replace('+', '-', 'g')
.replace('/', '_', 'g');
addon.syncGUID = btoa(byte_string).replace(/\+/g, '-')
.replace(/\//g, '_');
return addon;
}

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

@ -592,7 +592,7 @@ char* mozilla_sampler_get_profile()
const char** mozilla_sampler_get_features()
{
static const char* features[] = {
#if defined(MOZ_PROFILING) && defined(USE_BACKTRACE)
#if defined(MOZ_PROFILING) && (defined(USE_BACKTRACE) || defined(USE_NS_STACKWALK))
"stackwalk",
#endif
NULL

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

@ -41,6 +41,7 @@
#include "android/log.h"
#include "ui/FramebufferNativeWindow.h"
#include "mozilla/Hal.h"
#include "Framebuffer.h"
#include "gfxContext.h"
#include "gfxUtils.h"
@ -101,6 +102,11 @@ nsWindow::~nsWindow()
void
nsWindow::DoDraw(void)
{
if (!hal::GetScreenEnabled()) {
gDrawRequest = true;
return;
}
if (!gWindowToRedraw) {
LOG(" no window to draw, bailing");
return;
@ -296,8 +302,7 @@ nsWindow::ConfigureChildren(const nsTArray<nsIWidget::Configuration>&)
}
NS_IMETHODIMP
nsWindow::Invalidate(const nsIntRect &aRect,
bool aIsSynchronous)
nsWindow::Invalidate(const nsIntRect &aRect)
{
nsWindow *parent = mParent;
while (parent && parent != sTopWindows[0])
@ -307,20 +312,8 @@ nsWindow::Invalidate(const nsIntRect &aRect,
mDirtyRegion.Or(mDirtyRegion, aRect);
gWindowToRedraw = this;
if (aIsSynchronous) {
gDrawRequest = false;
DoDraw();
} else {
gDrawRequest = true;
mozilla::NotifyEvent();
}
return NS_OK;
}
NS_IMETHODIMP
nsWindow::Update()
{
Invalidate(gScreenBounds, false);
gDrawRequest = true;
mozilla::NotifyEvent();
return NS_OK;
}
@ -442,7 +435,7 @@ nsWindow::BringToTop()
nsGUIEvent event(true, NS_ACTIVATE, this);
(*mEventCallback)(&event);
Update();
Invalidate(gScreenBounds);
}
void

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

@ -98,9 +98,7 @@ public:
NS_IMETHOD IsEnabled(bool *aState);
NS_IMETHOD SetFocus(bool aRaise = false);
NS_IMETHOD ConfigureChildren(const nsTArray<nsIWidget::Configuration>&);
NS_IMETHOD Invalidate(const nsIntRect &aRect,
bool aIsSynchronous);
NS_IMETHOD Update();
NS_IMETHOD Invalidate(const nsIntRect &aRect);
virtual void* GetNativeData(PRUint32 aDataType);
NS_IMETHOD SetTitle(const nsAString& aTitle)
{