mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
merge to tip
This commit is contained in:
commit
887a9358bc
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
BIN
content/media/video/test/bug461281.ogg
Normal file
BIN
content/media/video/test/bug461281.ogg
Normal file
Binary file not shown.
49
content/media/video/test/test_bug461281.html
Normal file
49
content/media/video/test/test_bug461281.html
Normal 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>
|
@ -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 }
|
||||
|
@ -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",
|
||||
|
@ -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;
|
||||
|
@ -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___ */
|
||||
|
@ -67,7 +67,6 @@ endif
|
||||
|
||||
CPPSRCS = \
|
||||
nsColor.cpp \
|
||||
nsColorNames.cpp \
|
||||
nsDeviceContext.cpp \
|
||||
nsFont.cpp \
|
||||
nsRect.cpp \
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
@ -50,7 +50,6 @@ REQUIRES = xpcom \
|
||||
$(NULL)
|
||||
|
||||
CPPSRCS = \
|
||||
DumpColors.cpp \
|
||||
TestColorNames.cpp \
|
||||
TestRect.cpp \
|
||||
$(NULL)
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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!");
|
||||
|
@ -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.
|
||||
|
@ -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,
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user