merge to tip

This commit is contained in:
Doug Turner 2008-10-24 09:07:02 -07:00
commit 887a9358bc
20 changed files with 209 additions and 311 deletions

View File

@ -154,7 +154,8 @@ NS_IMPL_CYCLE_COLLECTING_ADDREF(TableRowsCollection)
NS_IMPL_CYCLE_COLLECTING_RELEASE(TableRowsCollection)
NS_INTERFACE_TABLE_HEAD(TableRowsCollection)
NS_INTERFACE_TABLE1(TableRowsCollection, nsIDOMHTMLCollection)
NS_INTERFACE_TABLE2(TableRowsCollection, nsIHTMLCollection,
nsIDOMHTMLCollection)
NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(TableRowsCollection)
NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(HTMLGenericCollection)
NS_INTERFACE_MAP_END

View File

@ -79,7 +79,7 @@ size_t nsChannelReader::io_read(char* aBuffer, size_t aCount)
{
PRUint32 bytes = 0;
nsresult rv = mStream.Read(aBuffer, aCount, &bytes);
if (!NS_SUCCEEDED(rv) || bytes == 0) {
if (!NS_SUCCEEDED(rv)) {
return static_cast<size_t>(OGGZ_ERR_SYSTEM);
}
mCurrentPosition += bytes;

View File

@ -44,6 +44,7 @@ include $(DEPTH)/config/autoconf.mk
include $(topsrcdir)/config/rules.mk
_TEST_FILES = test_autoplay.html \
test_bug461281.html \
test_constants.html \
test_controls.html \
test_currentTime.html \
@ -68,6 +69,7 @@ _TEST_FILES = test_autoplay.html \
test_timeupdate3.html \
test_volume.html \
320x240.ogg \
bug461281.ogg \
seek.ogg \
# test_bug448534.html \
$(NULL)

Binary file not shown.

View File

@ -0,0 +1,49 @@
<!DOCTYPE HTML>
<html>
<head>
<title>Media test: Bug 461281 - Ogg Streams with eof marker</title>
<script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<video id='v'
src='bug461281.ogg'
onloadedmetadata='return startTest();'
onended='return playbackEnded();'></video>
<pre id="test">
<script class="testbody" type="text/javascript">
// Test if the ended event occurs with media without an eos marker
var v = document.getElementById('v');
var endPassed = false;
var completed = false;
var timeout;
function startTest() {
if (completed)
return false;
v.play();
return false;
}
function playbackEnded() {
if (completed)
return false
completed = true;
ok(v.ended, "Checking playback has ended");
clearTimeout(timeout);
SimpleTest.finish();
return false;
}
timeout = setTimeout(function () {
ok(false, "Test timed out");
SimpleTest.finish();
}, 30000);
SimpleTest.waitForExplicitFinish();
</script>
</pre>
</body>
</html>

View File

@ -81,7 +81,6 @@ static RedirEntry kRedirMap[] = {
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT },
{ "licence", "chrome://global/content/license.html",
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT },
{ "about", "chrome://global/content/aboutAbout.html", 0 },
{ "neterror", "chrome://global/content/netError.xhtml",
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
nsIAboutModule::ALLOW_SCRIPT }

View File

@ -211,11 +211,6 @@ static const nsModuleComponentInfo gDocShellModuleInfo[] = {
NS_ABOUT_MODULE_CONTRACTID_PREFIX "licence",
nsAboutRedirector::Create
},
{ "about:about",
NS_ABOUT_REDIRECTOR_MODULE_CID,
NS_ABOUT_MODULE_CONTRACTID_PREFIX "about",
nsAboutRedirector::Create
},
{ "about:neterror",
NS_ABOUT_REDIRECTOR_MODULE_CID,
NS_ABOUT_MODULE_CONTRACTID_PREFIX "neterror",

View File

@ -194,7 +194,7 @@ CheckForExtendedDialog()
//----------------------------------------------------------------------------------
// Map an incoming size to a Windows Native enum in the DevMode
static void
MapPaperSizeToNativeEnum(LPDEVMODE aDevMode,
MapPaperSizeToNativeEnum(LPDEVMODEW aDevMode,
PRInt16 aType,
double aW,
double aH)
@ -249,7 +249,7 @@ MapPaperSizeToNativeEnum(LPDEVMODE aDevMode,
// Setup Paper Size & Orientation options into the DevMode
//
static void
SetupDevModeFromSettings(LPDEVMODE aDevMode, nsIPrintSettings* aPrintSettings)
SetupDevModeFromSettings(LPDEVMODEW aDevMode, nsIPrintSettings* aPrintSettings)
{
// Setup paper size
if (aPrintSettings) {
@ -753,28 +753,28 @@ static UINT CALLBACK PrintHookProc(HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM
// This function assumes that aPrintName has already been converted from
// unicode
//
static HGLOBAL CreateGlobalDevModeAndInit(LPCTSTR aPrintName, nsIPrintSettings* aPS)
static HGLOBAL CreateGlobalDevModeAndInit(LPCWSTR aPrintName, nsIPrintSettings* aPS)
{
HGLOBAL hGlobalDevMode = NULL;
nsresult rv = NS_ERROR_FAILURE;
HANDLE hPrinter = NULL;
// const cast kludge for silly Win32 api's
LPTSTR printName = const_cast<char*>(aPrintName);
BOOL status = ::OpenPrinter(printName, &hPrinter, NULL);
LPWSTR printName = const_cast<wchar_t*>(aPrintName);
BOOL status = ::OpenPrinterW(printName, &hPrinter, NULL);
if (status) {
LPDEVMODE pNewDevMode;
LPDEVMODEW pNewDevMode;
DWORD dwNeeded, dwRet;
// Get the buffer size
dwNeeded = ::DocumentProperties(gParentWnd, hPrinter, printName, NULL, NULL, 0);
dwNeeded = ::DocumentPropertiesW(gParentWnd, hPrinter, printName, NULL, NULL, 0);
if (dwNeeded == 0) {
return NULL;
}
// Allocate a buffer of the correct size.
pNewDevMode = (LPDEVMODE)::HeapAlloc (::GetProcessHeap(), HEAP_ZERO_MEMORY, dwNeeded);
pNewDevMode = (LPDEVMODEW)::HeapAlloc (::GetProcessHeap(), HEAP_ZERO_MEMORY, dwNeeded);
if (!pNewDevMode) return NULL;
hGlobalDevMode = (HGLOBAL)::GlobalAlloc(GHND, dwNeeded);
@ -783,7 +783,7 @@ static HGLOBAL CreateGlobalDevModeAndInit(LPCTSTR aPrintName, nsIPrintSettings*
return NULL;
}
dwRet = ::DocumentProperties(gParentWnd, hPrinter, printName, pNewDevMode, NULL, DM_OUT_BUFFER);
dwRet = ::DocumentPropertiesW(gParentWnd, hPrinter, printName, pNewDevMode, NULL, DM_OUT_BUFFER);
if (dwRet != IDOK) {
::HeapFree(::GetProcessHeap(), 0, pNewDevMode);
@ -794,14 +794,14 @@ static HGLOBAL CreateGlobalDevModeAndInit(LPCTSTR aPrintName, nsIPrintSettings*
// Lock memory and copy contents from DEVMODE (current printer)
// to Global Memory DEVMODE
LPDEVMODE devMode = (DEVMODE *)::GlobalLock(hGlobalDevMode);
LPDEVMODEW devMode = (DEVMODEW *)::GlobalLock(hGlobalDevMode);
if (devMode) {
memcpy(devMode, pNewDevMode, dwNeeded);
// Initialize values from the PrintSettings
SetupDevModeFromSettings(devMode, aPS);
// Sets back the changes we made to the DevMode into the Printer Driver
dwRet = ::DocumentProperties(gParentWnd, hPrinter, printName, devMode, devMode, DM_IN_BUFFER | DM_OUT_BUFFER);
dwRet = ::DocumentPropertiesW(gParentWnd, hPrinter, printName, devMode, devMode, DM_IN_BUFFER | DM_OUT_BUFFER);
if (dwRet != IDOK) {
::GlobalUnlock(hGlobalDevMode);
::GlobalFree(hGlobalDevMode);
@ -882,10 +882,7 @@ ShowNativePrintDialog(HWND aHWnd,
printerName = GetDefaultPrinterNameFromGlobalPrinters();
} else {
HANDLE hPrinter = NULL;
nsCAutoString printerNameNative;
NS_CopyUnicodeToNative(nsDependentString(printerName), printerNameNative);
LPTSTR tempPrinterName = const_cast<char*>(printerNameNative.get());
if(!::OpenPrinter(tempPrinterName, &hPrinter, NULL)) {
if(!::OpenPrinterW(const_cast<wchar_t*>(printerName), &hPrinter, NULL)) {
// If the last used printer is not found, we should use default printer.
printerName = GetDefaultPrinterNameFromGlobalPrinters();
} else {
@ -897,20 +894,18 @@ ShowNativePrintDialog(HWND aHWnd,
if (!printerName) return NS_ERROR_FAILURE;
// Now create a DEVNAMES struct so the the dialog is initialized correctly.
nsCAutoString tempPrinterName;
rv = NS_CopyUnicodeToNative(nsDependentString(printerName), tempPrinterName);
NS_ENSURE_SUCCESS(rv, rv);
PRUint32 len = tempPrinterName.Length();
hDevNames = (HGLOBAL)::GlobalAlloc(GHND, len+sizeof(DEVNAMES)+1);
PRUint32 len = wcslen(printerName);
hDevNames = (HGLOBAL)::GlobalAlloc(GHND, sizeof(wchar_t) * (len + 1) +
sizeof(DEVNAMES));
DEVNAMES* pDevNames = (DEVNAMES*)::GlobalLock(hDevNames);
pDevNames->wDriverOffset = sizeof(DEVNAMES);
pDevNames->wDeviceOffset = sizeof(DEVNAMES);
pDevNames->wOutputOffset = sizeof(DEVNAMES)+len+1;
pDevNames->wDefault = 0;
char* device = &(((char*)pDevNames)[pDevNames->wDeviceOffset]);
strcpy(device, tempPrinterName.get());
wchar_t* device = &(((wchar_t*)pDevNames)[pDevNames->wDeviceOffset]);
wcscpy(device, printerName);
::GlobalUnlock(hDevNames);
// Create a Moveable Memory Object that holds a new DevMode
@ -919,11 +914,11 @@ ShowNativePrintDialog(HWND aHWnd,
// NOTE: We only need to free hGlobalDevMode when the dialog is cancelled
// When the user prints, it comes back in the printdlg struct and
// is used and cleaned up later
hGlobalDevMode = CreateGlobalDevModeAndInit(tempPrinterName.get(), aPrintSettings);
hGlobalDevMode = CreateGlobalDevModeAndInit(printerName, aPrintSettings);
// Prepare to Display the Print Dialog
PRINTDLG prntdlg;
memset(&prntdlg, 0, sizeof(PRINTDLG));
PRINTDLGW prntdlg;
memset(&prntdlg, 0, sizeof(PRINTDLGW));
prntdlg.lStructSize = sizeof(prntdlg);
prntdlg.hwndOwner = aHWnd;
@ -969,7 +964,7 @@ ShowNativePrintDialog(HWND aHWnd,
prntdlg.Flags |= PD_ENABLEPRINTHOOK;
}
BOOL result = ::PrintDlg(&prntdlg);
BOOL result = ::PrintDlgW(&prntdlg);
if (TRUE == result) {
// check to make sure we don't have any NULL pointers
@ -986,8 +981,8 @@ ShowNativePrintDialog(HWND aHWnd,
return NS_ERROR_FAILURE;
}
char* device = &(((char *)devnames)[devnames->wDeviceOffset]);
char* driver = &(((char *)devnames)[devnames->wDriverOffset]);
wchar_t* device = &(((wchar_t *)devnames)[devnames->wDeviceOffset]);
wchar_t* driver = &(((wchar_t *)devnames)[devnames->wDriverOffset]);
// Check to see if the "Print To File" control is checked
// then take the name from devNames and set it in the PrintSettings
@ -998,9 +993,9 @@ ShowNativePrintDialog(HWND aHWnd,
// if the "Print To File" checkbox is checked it MUST be "FILE:"
// We assert as an extra safety check.
if (prntdlg.Flags & PD_PRINTTOFILE) {
char* fileName = &(((char *)devnames)[devnames->wOutputOffset]);
NS_ASSERTION(strcmp(fileName, "FILE:") == 0, "FileName must be `FILE:`");
aPrintSettings->SetToFileName(NS_ConvertASCIItoUTF16(fileName).get());
wchar_t* fileName = &(((wchar_t *)devnames)[devnames->wOutputOffset]);
NS_ASSERTION(wcscmp(fileName, L"FILE:") == 0, "FileName must be `FILE:`");
aPrintSettings->SetToFileName(fileName);
aPrintSettings->SetPrintToFile(PR_TRUE);
} else {
// clear "print to file" info
@ -1015,18 +1010,15 @@ ShowNativePrintDialog(HWND aHWnd,
}
// Setup local Data members
psWin->SetDeviceName(NS_ConvertUTF8toUTF16(device).get());
psWin->SetDriverName(NS_ConvertUTF8toUTF16(driver).get());
psWin->SetDeviceName(device);
psWin->SetDriverName(driver);
#if defined(DEBUG_rods) || defined(DEBUG_dcone)
printf("printer: driver %s, device %s flags: %d\n", driver, device, prntdlg.Flags);
wprintf(L"printer: driver %s, device %s flags: %d\n", driver, device, prntdlg.Flags);
#endif
// fill the print options with the info from the dialog
nsDependentCString printerNameNative(device);
nsAutoString printerName;
NS_CopyNativeToUnicode(printerNameNative, printerName);
aPrintSettings->SetPrinterName(printerName.get());
aPrintSettings->SetPrinterName(device);
if (prntdlg.Flags & PD_SELECTION) {
aPrintSettings->SetPrintRange(nsIPrintSettings::kRangeSelection);
@ -1247,10 +1239,8 @@ ShowNativePrintDialogEx(HWND aHWnd,
aPrintSettings->GetPrinterName(&printerName);
HGLOBAL hGlobalDevMode = NULL;
if (printerName) {
nsCAutoString tempPrinterName;
rv = NS_CopyUnicodeToNative(nsDependentString(printerName), tempPrinterName));
NS_ENSURE_SUCCESS(rv, rv);
hGlobalDevMode = CreateGlobalDevModeAndInit(tempPrinterName.get(), aPrintSettings);
hGlobalDevMode = CreateGlobalDevModeAndInit(printerName, aPrintSettings);
}
// Prepare to Display the Print Dialog
@ -1407,7 +1397,7 @@ ShowNativePrintDialogEx(HWND aHWnd,
::GlobalUnlock(prntdlg.hDevNames);
// Transfer the settings from the native data to the PrintSettings
LPDEVMODE devMode = (LPDEVMODE)::GlobalLock(prntdlg.hDevMode);
LPDEVMODEW devMode = (LPDEVMODEW)::GlobalLock(prntdlg.hDevMode);
if (devMode == NULL) {
::GlobalFree(hGlobalDevMode);
return NS_ERROR_FAILURE;

View File

@ -38,39 +38,12 @@
#ifndef nsColorNames_h___
#define nsColorNames_h___
#include "nsColor.h"
#include "gfxCore.h"
#include "nsStringFwd.h"
/*
Declare the enum list using the magic of preprocessing
enum values are "eColorName_foo" (where foo is the color name)
To change the list of colors, see nsColorNameList.h
*/
#define GFX_COLOR(_name, _value) eColorName_##_name,
enum nsColorName {
eColorName_UNKNOWN = -1,
#include "nsColorNameList.h"
eColorName_COUNT
};
#undef GFX_COLOR
class NS_GFX nsColorNames {
public:
static void AddRefTable(void);
static void ReleaseTable(void);
// Given a color name, return the color enum value
// This only functions provided a valid ref on the table
static nsColorName LookupName(const nsAString& aName);
static nsColorName LookupName(const nsACString& aName);
static const nsAFlatCString& GetStringValue(nsColorName aColorName);
// Color id to rgb value table
static NS_GFX_STATIC_MEMBER_(const nscolor) kColors[];
};
#endif /* nsColorNames_h___ */

View File

@ -67,7 +67,6 @@ endif
CPPSRCS = \
nsColor.cpp \
nsColorNames.cpp \
nsDeviceContext.cpp \
nsFont.cpp \
nsRect.cpp \

View File

@ -45,6 +45,56 @@
#include "nsIServiceManager.h"
#include <math.h>
#include "prprf.h"
#include "nsStaticNameTable.h"
// define an array of all color names
#define GFX_COLOR(_name, _value) #_name,
static const char* const kColorNames[] = {
#include "nsColorNameList.h"
};
#undef GFX_COLOR
// define an array of all color name values
#define GFX_COLOR(_name, _value) _value,
static const nscolor kColors[] = {
#include "nsColorNameList.h"
};
#undef GFX_COLOR
#define eColorName_COUNT (NS_ARRAY_LENGTH(kColorNames))
#define eColorName_UNKNOWN (-1)
static nsStaticCaseInsensitiveNameTable* gColorTable = nsnull;
void nsColorNames::AddRefTable(void)
{
NS_ASSERTION(!gColorTable, "pre existing array!");
if (!gColorTable) {
gColorTable = new nsStaticCaseInsensitiveNameTable();
if (gColorTable) {
#ifdef DEBUG
{
// let's verify the table...
for (PRInt32 index = 0; index < eColorName_COUNT; ++index) {
nsCAutoString temp1(kColorNames[index]);
nsCAutoString temp2(kColorNames[index]);
ToLowerCase(temp1);
NS_ASSERTION(temp1.Equals(temp2), "upper case char in table");
}
}
#endif
gColorTable->Init(kColorNames, eColorName_COUNT);
}
}
}
void nsColorNames::ReleaseTable(void)
{
if (gColorTable) {
delete gColorTable;
gColorTable = nsnull;
}
}
static int ComponentValue(const PRUnichar* aColorSpec, int aLen, int color, int dpc)
{
@ -161,11 +211,13 @@ NS_GFX_(void) NS_RGBToHex(nscolor aColor, nsAString& aResult)
NS_GFX_(PRBool) NS_ColorNameToRGB(const nsAString& aColorName, nscolor* aResult)
{
nsColorName id = nsColorNames::LookupName(aColorName);
if (!gColorTable) return PR_FALSE;
PRInt32 id = gColorTable->Lookup(aColorName);
if (eColorName_UNKNOWN < id) {
NS_ASSERTION(id < eColorName_COUNT, "LookupName mess up");
if (nsnull != aResult) {
*aResult = nsColorNames::kColors[id];
if (aResult) {
*aResult = kColors[id];
}
return PR_TRUE;
}

View File

@ -1,125 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsColorNames.h"
#include "nsString.h"
#include "nsStaticNameTable.h"
#include "nsReadableUtils.h"
// define an array of all color names
#define GFX_COLOR(_name, _value) #_name,
const char* const kColorNames[] = {
#include "nsColorNameList.h"
};
#undef GFX_COLOR
// define an array of all color name values
#define GFX_COLOR(_name, _value) _value,
const nscolor nsColorNames::kColors[] = {
#include "nsColorNameList.h"
};
#undef GFX_COLOR
static PRInt32 gTableRefCount;
static nsStaticCaseInsensitiveNameTable* gColorTable;
void
nsColorNames::AddRefTable(void)
{
if (0 == gTableRefCount++) {
NS_ASSERTION(!gColorTable, "pre existing array!");
gColorTable = new nsStaticCaseInsensitiveNameTable();
if (gColorTable) {
#ifdef DEBUG
{
// let's verify the table...
for (PRInt32 index = 0; index < eColorName_COUNT; ++index) {
nsCAutoString temp1(kColorNames[index]);
nsCAutoString temp2(kColorNames[index]);
ToLowerCase(temp1);
NS_ASSERTION(temp1.Equals(temp2), "upper case char in table");
}
}
#endif
gColorTable->Init(kColorNames, eColorName_COUNT);
}
}
}
void
nsColorNames::ReleaseTable(void)
{
if (0 == --gTableRefCount) {
if (gColorTable) {
delete gColorTable;
gColorTable = nsnull;
}
}
}
nsColorName
nsColorNames::LookupName(const nsACString& aColor)
{
NS_ASSERTION(gColorTable, "no lookup table, needs addref");
if (gColorTable) {
return nsColorName(gColorTable->Lookup(aColor));
}
return eColorName_UNKNOWN;
}
nsColorName
nsColorNames::LookupName(const nsAString& aColor)
{
NS_ASSERTION(gColorTable, "no lookup table, needs addref");
if (gColorTable) {
return nsColorName(gColorTable->Lookup(aColor));
}
return eColorName_UNKNOWN;
}
const nsAFlatCString&
nsColorNames::GetStringValue(nsColorName aColor)
{
NS_ASSERTION(gColorTable, "no lookup table, needs addref");
if (gColorTable) {
return gColorTable->GetStringValue(PRInt32(aColor));
} else {
static nsDependentCString kNullStr("");
return kNullStr;
}
}

View File

@ -1,52 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include <stdio.h>
#include "nsColor.h"
#include "nsColorNames.h"
#include "nsString.h"
int main(int argc, char** argv)
{
for (int i = 0; i < eColorName_COUNT; i++) {
nscolor rgba = nsColorNames::kColors[i];
printf("%s: NS_RGB(%d,%d,%d,%d)\n",
nsColorNames::GetStringValue(nsColorName(i)).get(),
NS_GET_R(rgba), NS_GET_G(rgba), NS_GET_B(rgba), NS_GET_A(rgba));
}
return 0;
}

View File

@ -50,7 +50,6 @@ REQUIRES = xpcom \
$(NULL)
CPPSRCS = \
DumpColors.cpp \
TestColorNames.cpp \
TestRect.cpp \
$(NULL)

View File

@ -39,10 +39,25 @@
#include <stdio.h>
#include <string.h>
#include "nsColor.h"
#include "nsColorNames.h"
#include "prprf.h"
#include "nsString.h"
// define an array of all color names
#define GFX_COLOR(_name, _value) #_name,
static const char* const kColorNames[] = {
#include "nsColorNameList.h"
};
#undef GFX_COLOR
// define an array of all color name values
#define GFX_COLOR(_name, _value) _value,
static const nscolor kColors[] = {
#include "nsColorNameList.h"
};
#undef GFX_COLOR
static const char* kJunkNames[] = {
nsnull,
"",
@ -54,8 +69,7 @@ static const char* kJunkNames[] = {
int main(int argc, char** argv)
{
nsColorName id;
nsColorName index;
nscolor rgb;
int rv = 0;
// Everything appears to assert if we don't do this first...
@ -65,49 +79,30 @@ int main(int argc, char** argv)
// be in the table. Futz with the case to make sure any case will
// work
index = eColorName_UNKNOWN;
while (PRInt32(index) < (PRInt32 (eColorName_COUNT) - 1)) {
for (int index = 0 ; index < NS_ARRAY_LENGTH(kColorNames); index++) {
// Lookup color by name and make sure it has the right id
index = nsColorName(PRInt32(index) + 1);
nsCString tagName(nsColorNames::GetStringValue(index));
if (tagName.IsEmpty()) {
printf("bug: tagName for nsColorNames::GetStringValue(%d) is ''\n", index);
rv = -1;
continue;
}
nsCString tagName(kColorNames[index]);
id = nsColorNames::LookupName(NS_ConvertASCIItoUTF16(tagName));
if (id == eColorName_UNKNOWN) {
// Check that color lookup by name gets the right rgb value
if (!NS_ColorNameToRGB(NS_ConvertASCIItoUTF16(tagName), &rgb)) {
printf("bug: can't find '%s'\n", tagName.get());
rv = -1;
}
if (id != index) {
printf("bug: name='%s' id=%d index=%d\n", tagName.get(), id, index);
if (rgb != kColors[index]) {
printf("bug: name='%s' ColorNameToRGB=%x kColors[%d]=%08x\n",
tagName.get(), rgb, index, kColors[index]);
rv = -1;
}
// fiddle with the case to make sure we can still find it
tagName.SetCharAt(tagName.CharAt(0) - 32, 0);
id = nsColorNames::LookupName(NS_ConvertASCIItoUTF16(tagName));
if (id == eColorName_UNKNOWN) {
if (!NS_ColorNameToRGB(NS_ConvertASCIItoUTF16(tagName), &rgb)) {
printf("bug: can't find '%s'\n", tagName.get());
rv = -1;
}
if (id != index) {
printf("bug: name='%s' id=%d index=%d\n", tagName.get(), id, index);
rv = -1;
}
// Check that color lookup by name gets the right rgb value
nscolor rgb;
if (!NS_ColorNameToRGB(NS_ConvertASCIItoUTF16(tagName), &rgb)) {
printf("bug: name='%s' didn't NS_ColorNameToRGB\n", tagName.get());
rv = -1;
}
if (nsColorNames::kColors[index] != rgb) {
printf("bug: name='%s' ColorNameToRGB=%x kColors[%d]=%x\n",
tagName.get(), rgb, nsColorNames::kColors[index],
nsColorNames::kColors[index]);
if (rgb != kColors[index]) {
printf("bug: name='%s' ColorNameToRGB=%x kColors[%d]=%08x\n",
tagName.get(), rgb, index, kColors[index]);
rv = -1;
}
@ -129,14 +124,15 @@ int main(int argc, char** argv)
}
// Now make sure we don't find some garbage
for (int i = 0; i < (int) (sizeof(kJunkNames) / sizeof(const char*)); i++) {
const char* tag = kJunkNames[i];
id = nsColorNames::LookupName(NS_ConvertASCIItoUTF16(tag));
if (id > eColorName_UNKNOWN) {
printf("bug: found '%s'\n", tag ? tag : "(null)");
for (int i = 0; i < NS_ARRAY_LENGTH(kJunkNames); i++) {
nsCString tag(kJunkNames[i]);
if (NS_ColorNameToRGB(NS_ConvertASCIItoUTF16(tag), &rgb)) {
printf("bug: found '%s'\n", kJunkNames[i] ? kJunkNames[i] : "(null)");
rv = -1;
}
}
nsColorNames::ReleaseTable();
return rv;
}

View File

@ -97,7 +97,8 @@ nsSVGForeignObjectFrame::Init(nsIContent* aContent,
nsIFrame* aPrevInFlow)
{
nsresult rv = nsSVGForeignObjectFrameBase::Init(aContent, aParent, aPrevInFlow);
AddStateBits(NS_STATE_SVG_PROPAGATE_TRANSFORM);
AddStateBits(NS_STATE_SVG_PROPAGATE_TRANSFORM |
(aParent->GetStateBits() & NS_STATE_SVG_NONDISPLAY_CHILD));
if (NS_SUCCEEDED(rv)) {
nsSVGUtils::GetOuterSVGFrame(this)->RegisterForeignObject(this);
}
@ -174,7 +175,7 @@ nsSVGForeignObjectFrame::InvalidateInternal(const nsRect& aDamageRect,
nsIFrame* aForChild,
PRUint32 aFlags)
{
if (mParent->GetStateBits() & NS_STATE_SVG_NONDISPLAY_CHILD)
if (GetStateBits() & NS_STATE_SVG_NONDISPLAY_CHILD)
return;
nsRegion* region = (aFlags & INVALIDATE_CROSS_DOC)
@ -291,7 +292,7 @@ nsresult
nsSVGForeignObjectFrame::TransformPointFromOuterPx(const nsPoint &aIn,
nsPoint* aOut)
{
if (mParent->GetStateBits() & NS_STATE_SVG_NONDISPLAY_CHILD)
if (GetStateBits() & NS_STATE_SVG_NONDISPLAY_CHILD)
return NS_ERROR_FAILURE;
nsCOMPtr<nsIDOMSVGMatrix> tm = GetTMIncludingOffset();
@ -355,7 +356,7 @@ nsSVGForeignObjectFrame::GetCoveredRegion()
NS_IMETHODIMP
nsSVGForeignObjectFrame::UpdateCoveredRegion()
{
if (mParent->GetStateBits() & NS_STATE_SVG_NONDISPLAY_CHILD)
if (GetStateBits() & NS_STATE_SVG_NONDISPLAY_CHILD)
return NS_ERROR_FAILURE;
nsCOMPtr<nsIDOMSVGMatrix> ctm = GetCanvasTM();
@ -452,7 +453,7 @@ nsSVGForeignObjectFrame::NotifyRedrawSuspended()
NS_IMETHODIMP
nsSVGForeignObjectFrame::NotifyRedrawUnsuspended()
{
if (!(mParent->GetStateBits() & NS_STATE_SVG_NONDISPLAY_CHILD)) {
if (!(GetStateBits() & NS_STATE_SVG_NONDISPLAY_CHILD)) {
if (GetStateBits() & NS_STATE_SVG_DIRTY) {
UpdateGraphic();
} else {
@ -484,7 +485,7 @@ nsSVGForeignObjectFrame::GetBBox(nsIDOMSVGRect **_retval)
{
*_retval = nsnull;
if (mParent->GetStateBits() & NS_STATE_SVG_NONDISPLAY_CHILD)
if (GetStateBits() & NS_STATE_SVG_NONDISPLAY_CHILD)
return NS_ERROR_FAILURE;
nsCOMPtr<nsIDOMSVGMatrix> ctm = GetCanvasTM();
@ -612,7 +613,7 @@ nsSVGForeignObjectFrame::DoReflow()
if (IsDisabled())
return;
if (mParent->GetStateBits() & NS_STATE_SVG_NONDISPLAY_CHILD)
if (GetStateBits() & NS_STATE_SVG_NONDISPLAY_CHILD)
return;
nsPresContext *presContext = PresContext();

View File

@ -831,7 +831,8 @@ nsSVGOuterSVGFrame::RegisterForeignObject(nsSVGForeignObjectFrame* aFrame)
}
void
nsSVGOuterSVGFrame::UnregisterForeignObject(nsSVGForeignObjectFrame* aFrame) {
nsSVGOuterSVGFrame::UnregisterForeignObject(nsSVGForeignObjectFrame* aFrame)
{
NS_ASSERTION(aFrame, "Who on earth is calling us?!");
NS_ASSERTION(mForeignObjectHash.GetEntry(aFrame),
"nsSVGForeignObjectFrame not in registry!");

View File

@ -5,4 +5,4 @@ the Mozilla build system.
http://svn.annodex.net/libsydneyaudio/trunk
The svn revision number used was r3731.
The svn revision number used was r3733.

View File

@ -55,6 +55,21 @@ struct sa_stream {
unsigned int period_bytes;
};
/*
* -----------------------------------------------------------------------------
* Error Handler to prevent output to stderr
* ----------------------------------------------------------------------------
*/
static void
quiet_error_handler(const char* file,
int line,
const char* function,
int err,
const char* format,
...)
{
}
/*
* -----------------------------------------------------------------------------
* Startup and shutdown functions
@ -116,6 +131,9 @@ sa_stream_open(sa_stream_t *s) {
return SA_ERROR_INVALID;
}
/* Turn off debug output to stderr */
snd_lib_error_set_handler(quiet_error_handler);
if (snd_pcm_open(&s->output_unit,
"default",
SND_PCM_STREAM_PLAYBACK,

View File

@ -83,13 +83,13 @@ NS_IMETHODIMP nsPrintSettingsWin::SetDeviceName(const PRUnichar * aDeviceName)
if (mDeviceName) {
nsMemory::Free(mDeviceName);
}
mDeviceName = aDeviceName?nsCRT::strdup(aDeviceName):nsnull;
mDeviceName = aDeviceName?wcsdup(aDeviceName):nsnull;
return NS_OK;
}
NS_IMETHODIMP nsPrintSettingsWin::GetDeviceName(PRUnichar **aDeviceName)
{
NS_ENSURE_ARG_POINTER(aDeviceName);
*aDeviceName = mDeviceName?nsCRT::strdup(mDeviceName):nsnull;
*aDeviceName = mDeviceName?wcsdup(mDeviceName):nsnull;
return NS_OK;
}
@ -99,13 +99,13 @@ NS_IMETHODIMP nsPrintSettingsWin::SetDriverName(const PRUnichar * aDriverName)
if (mDriverName) {
nsMemory::Free(mDriverName);
}
mDriverName = aDriverName?nsCRT::strdup(aDriverName):nsnull;
mDriverName = aDriverName?wcsdup(aDriverName):nsnull;
return NS_OK;
}
NS_IMETHODIMP nsPrintSettingsWin::GetDriverName(PRUnichar **aDriverName)
{
NS_ENSURE_ARG_POINTER(aDriverName);
*aDriverName = mDriverName?nsCRT::strdup(mDriverName):nsnull;
*aDriverName = mDriverName?wcsdup(mDriverName):nsnull;
return NS_OK;
}
@ -176,8 +176,8 @@ nsPrintSettingsWin& nsPrintSettingsWin::operator=(const nsPrintSettingsWin& rhs)
::HeapFree(::GetProcessHeap(), 0, mDevMode);
}
mDeviceName = rhs.mDeviceName?nsCRT::strdup(rhs.mDeviceName):nsnull;
mDriverName = rhs.mDriverName?nsCRT::strdup(rhs.mDriverName):nsnull;
mDeviceName = rhs.mDeviceName?wcsdup(rhs.mDeviceName):nsnull;
mDriverName = rhs.mDriverName?wcsdup(rhs.mDriverName):nsnull;
if (rhs.mDevMode) {
CopyDevMode(rhs.mDevMode, mDevMode);