merge mozilla-central to devtools

This commit is contained in:
Rob Campbell 2011-03-28 10:55:52 -03:00
commit a93179831a
274 changed files with 4631 additions and 3377 deletions

View File

@ -8,6 +8,13 @@
</targetApplication>
</versionRange>
</emItem>
<emItem id="firefox@bandoo.com">
<versionRange minVersion="5.0" maxVersion="5.0" severity="1">
<targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
<versionRange minVersion="3.7a1pre" maxVersion="*"/>
</targetApplication>
</versionRange>
</emItem>
<emItem id="langpack-vi-VN@firefox.mozilla.org">
<versionRange minVersion="2.0" maxVersion="2.0"/>
</emItem>
@ -70,13 +77,27 @@
</targetApplication>
</versionRange>
</emItem>
<emItem id="{6E19037A-12E3-4295-8915-ED48BC341614}">
<versionRange minVersion="0.1" maxVersion="1.3.328.4" severity="1">
<targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
<versionRange minVersion="3.7a1pre" maxVersion="*"/>
</targetApplication>
</versionRange>
</emItem>
<emItem id="{8CE11043-9A15-4207-A565-0C94C42D590D}"/>
<emItem id="{AB2CE124-6272-4b12-94A9-7303C7397BD1}">
<versionRange severity="1"/>
<versionRange minVersion="0.1" maxVersion="5.2.0.7164" severity="1"/>
</emItem>
<emItem id="{B13721C7-F507-4982-B2E5-502A71474FED}">
<versionRange severity="1"/>
</emItem>
<emItem id="{B7082FAA-CB62-4872-9106-E42DD88EDE45}">
<versionRange minVersion="0.1" maxVersion="3.3.0.*">
<targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
<versionRange minVersion="3.7a1" maxVersion="*"/>
</targetApplication>
</versionRange>
</emItem>
<emItem id="{E8E88AB0-7182-11DF-904E-6045E0D72085}"/>
</emItems>
<pluginItems>
@ -132,4 +153,36 @@
</versionRange>
</pluginItem>
</pluginItems>
<gfxItems>
<gfxBlacklistEntry>
<os>WINNT 6.1</os>
<vendor>0x10de</vendor>
<devices>
<device>0x0a6c</device>
</devices>
<feature>DIRECT2D</feature>
<featureStatus>BLOCKED_DRIVER_VERSION</featureStatus>
<driverVersion>8.17.12.5896</driverVersion>
<driverVersionComparator>LESS_THAN_OR_EQUAL</driverVersionComparator>
</gfxBlacklistEntry>
<gfxBlacklistEntry>
<os>WINNT 6.1</os>
<vendor>0x10de</vendor>
<devices>
<device>0x0a6c</device>
</devices>
<feature>DIRECT3D_9_LAYERS</feature>
<featureStatus>BLOCKED_DRIVER_VERSION</featureStatus>
<driverVersion>8.17.12.5896</driverVersion>
<driverVersionComparator>LESS_THAN_OR_EQUAL</driverVersionComparator>
</gfxBlacklistEntry>
<gfxBlacklistEntry>
<os>WINNT 5.1</os>
<vendor>0x10de</vendor>
<feature>DIRECT3D_9_LAYERS</feature>
<featureStatus>BLOCKED_DRIVER_VERSION</featureStatus>
<driverVersion>7.0.0.0</driverVersion>
<driverVersionComparator>GREATER_THAN_OR_EQUAL</driverVersionComparator>
</gfxBlacklistEntry>
</gfxItems>
</blocklist>

View File

@ -101,6 +101,13 @@ function Drag(item, event, isFauxDrag) {
};
Drag.prototype = {
// ----------
// Function: toString
// Prints [Drag (item)] for debug use
toString: function Drag_toString() {
return "[Drag (" + this.item + ")]";
},
// ----------
// Function: snapBounds
// Adjusts the given bounds according to the currently active trenches. Used by <Drag.snap>

View File

@ -281,6 +281,13 @@ function GroupItem(listOfEls, options) {
// ----------
GroupItem.prototype = Utils.extend(new Item(), new Subscribable(), {
// ----------
// Function: toString
// Prints [GroupItem id=id] for debug use
toString: function GroupItem_toString() {
return "[GroupItem id=" + this.id + "]";
},
// ----------
// Variable: defaultName
// The prompt text for the title field.
@ -1792,6 +1799,13 @@ let GroupItems = {
minGroupHeight: 110,
minGroupWidth: 125,
// ----------
// Function: toString
// Prints [GroupItems] for debug use
toString: function GroupItems_toString() {
return "[GroupItems count=" + this.groupItems.length + "]";
},
// ----------
// Function: init
init: function GroupItems_init() {

View File

@ -186,6 +186,23 @@ function iQClass(selector, context) {
iQClass.prototype = {
// ----------
// Function: toString
// Prints [iQ...] for debug use
toString: function iQClass_toString() {
if (this.length > 1) {
if (this.selector)
return "[iQ (" + this.selector + ")]";
else
return "[iQ multi-object]";
}
if (this.length == 1)
return "[iQ (" + this[0].toString() + ")]";
return "[iQ non-object]";
},
// Start with an empty selector
selector: "",

View File

@ -854,6 +854,13 @@ Item.prototype = {
// Class: Items
// Keeps track of all Items.
let Items = {
// ----------
// Function: toString
// Prints [Items] for debug use
toString: function Items_toString() {
return "[Items]";
},
// ----------
// Variable: defaultGutter
// How far apart Items should be from each other and from bounds

View File

@ -41,6 +41,13 @@ Cu.import("resource://gre/modules/Services.jsm");
let EXPORTED_SYMBOLS = ["AllTabs"];
let AllTabs = {
// ----------
// Function: toString
// Prints [AllTabs] for debug use
toString: function AllTabs_toString() {
return "[AllTabs]";
},
/**
* Get an array of all tabs from all tabbrowser windows.
*

View File

@ -74,6 +74,13 @@ function Point(a, y) {
};
Point.prototype = {
// ----------
// Function: toString
// Prints [Point (x,y)] for debug use
toString: function Point_toString() {
return "[Point (" + this.x + "," + this.y + ")]";
},
// ----------
// Function: distance
// Returns the distance from this point to the given <Point>.
@ -109,6 +116,13 @@ function Rect(a, top, width, height) {
};
Rect.prototype = {
// ----------
// Function: toString
// Prints [Rect (left,top,width,height)] for debug use
toString: function Rect_toString() {
return "[Rect (" + this.left + "," + this.top + "," +
this.width + "," + this.height + ")]";
},
get right() this.left + this.width,
set right(value) {
@ -282,6 +296,13 @@ function Range(min, max) {
};
Range.prototype = {
// ----------
// Function: toString
// Prints [Range (min,max)] for debug use
toString: function Range_toString() {
return "[Range (" + this.min + "," + this.max + ")]";
},
// Variable: extent
// Equivalent to max-min
get extent() {
@ -464,6 +485,13 @@ Subscribable.prototype = {
let Utils = {
defaultFaviconURL: "chrome://mozapps/skin/places/defaultFavicon.png",
// ----------
// Function: toString
// Prints [Utils] for debug use
toString: function Utils_toString() {
return "[Utils]";
},
// ___ Logging
useConsole: true, // as opposed to dump
showTime: false,

View File

@ -116,6 +116,13 @@ function scorePatternMatch(pattern, matched, offset) {
// <TabItem>s and <xul:tab>s without having to worry which
// one is which.
var TabUtils = {
// ----------
// Function: toString
// Prints [TabUtils] for debug use
toString: function TabUtils_toString() {
return "[TabUtils]";
},
// ---------
// Function: _nameOfTab
// Given a <TabItem> or a <xul:tab> returns the tab's name.
@ -166,7 +173,14 @@ function TabMatcher(term) {
this.term = term;
}
TabMatcher.prototype = {
TabMatcher.prototype = {
// ----------
// Function: toString
// Prints [TabMatcher (term)] for debug use
toString: function TabMatcher_toString() {
return "[TabMatcher (" + this.term + ")]";
},
// ---------
// Function: _filterAndSortMatches
// Given an array of <TabItem>s and <xul:tab>s returns a new array
@ -316,6 +330,13 @@ function SearchEventHandlerClass() {
}
SearchEventHandlerClass.prototype = {
// ----------
// Function: toString
// Prints [SearchEventHandler] for debug use
toString: function SearchEventHandlerClass_toString() {
return "[SearchEventHandler]";
},
// ----------
// Function: init
// Initializes the searchbox to be focused, and everything

View File

@ -50,6 +50,13 @@ let Storage = {
CACHE_CLIENT_IDENTIFIER: "tabview-cache",
CACHE_PREFIX: "moz-panorama:",
// ----------
// Function: toString
// Prints [Storage] for debug use
toString: function Storage_toString() {
return "[Storage]";
},
// ----------
// Function: init
// Sets up the object.
@ -413,6 +420,13 @@ function CacheListener(callback) {
};
CacheListener.prototype = {
// ----------
// Function: toString
// Prints [CacheListener] for debug use
toString: function CacheListener_toString() {
return "[CacheListener]";
},
QueryInterface: XPCOMUtils.generateQI([Ci.nsICacheListener]),
onCacheEntryAvailable: function (entry, access, status) {
this.callback(entry, access, status);

View File

@ -212,6 +212,13 @@ function TabItem(tab, options) {
};
TabItem.prototype = Utils.extend(new Item(), new Subscribable(), {
// ----------
// Function: toString
// Prints [TabItem (tab)] for debug use
toString: function TabItem_toString() {
return "[TabItem (" + this.tab + ")]";
},
// ----------
// Function: forceCanvasSize
// Repaints the thumbnail with the given resolution, and forces it
@ -672,6 +679,8 @@ TabItem.prototype = Utils.extend(new Item(), new Subscribable(), {
let transform = this.getZoomTransform();
TabItems.pausePainting();
if (this.parent && this.parent.expanded)
$tabEl.removeClass("stack-trayed");
$tabEl.addClass("front");
$canvas
.css({ '-moz-transform-origin': transform.transformOrigin })
@ -812,6 +821,13 @@ let TabItems = {
_reconnectingPaused: false,
tabItemPadding: {},
// ----------
// Function: toString
// Prints [TabItems count=count] for debug use
toString: function TabItems_toString() {
return "[TabItems count=" + this.items.length + "]";
},
// ----------
// Function: init
// Set up the necessary tracking to maintain the <TabItems>s.
@ -855,7 +871,9 @@ let TabItems = {
if (tab.ownerDocument.defaultView != gWindow || tab.pinned)
return;
self.unlink(tab);
// XXX bug #635975 - don't unlink the tab if the dom window is closing.
if (!UI.isDOMWindowClosing)
self.unlink(tab);
}
for (let name in this._eventListeners) {
AllTabs.register(name, this._eventListeners[name]);
@ -1338,6 +1356,13 @@ TabPriorityQueue.prototype = {
_low: [], // low priority queue
_high: [], // high priority queue
// ----------
// Function: toString
// Prints [TabPriorityQueue count=count] for debug use
toString: function TabPriorityQueue_toString() {
return "[TabPriorityQueue count=" + (this._low.length + this._high.length) + "]";
},
// ----------
// Function: clear
// Empty the update queue
@ -1439,6 +1464,13 @@ function TabCanvas(tab, canvas) {
};
TabCanvas.prototype = {
// ----------
// Function: toString
// Prints [TabCanvas (tab)] for debug use
toString: function TabCanvas_toString() {
return "[TabCanvas (" + this.tab + ")]";
},
// ----------
// Function: paint
paint: function TabCanvas_paint(evt) {

View File

@ -110,6 +110,15 @@ function Trench(element, xory, type, edge) {
};
Trench.prototype = {
// ----------
// Function: toString
// Prints [Trench edge type (parentItem)] for debug use
toString: function Trench_toString() {
return "[Trench " + this.edge + " " + this.type +
(this.parentItem ? " (" + this.parentItem + ")" : "") +
"]";
},
//----------
// Variable: radius
// (integer) radius is how far away we should snap from
@ -481,6 +490,13 @@ var Trenches = {
trenches: [],
// ----------
// Function: toString
// Prints [Trenches count=count] for debug use
toString: function Trenches_toString() {
return "[Trenches count=" + this.trenches.length + "]";
},
// ---------
// Function: getById
// Return the specified <Trench>.

View File

@ -132,6 +132,13 @@ let UI = {
// windows is about to close.
isDOMWindowClosing: false,
// ----------
// Function: toString
// Prints [UI] for debug use
toString: function UI_toString() {
return "[UI]";
},
// ----------
// Function: init
// Must be called after the object is created.

View File

@ -123,6 +123,7 @@ _BROWSER_FILES = \
browser_tabview_dragdrop.js \
browser_tabview_exit_button.js \
browser_tabview_expander.js \
browser_tabview_firstrun_pref.js \
browser_tabview_group.js \
browser_tabview_launch.js \
browser_tabview_multiwindow_search.js \

View File

@ -2,6 +2,7 @@
http://creativecommons.org/publicdomain/zero/1.0/ */
let handleDialog;
let timer; // keep in outer scope so it's not GC'd before firing
function test() {
waitForExplicitFinish();
@ -124,7 +125,7 @@ function startCallbackTimer() {
const dialogDelay = 10;
// Use a timer to invoke a callback to twiddle the authentication dialog
let timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
timer.init(observer, dialogDelay, Ci.nsITimer.TYPE_ONE_SHOT);
}

View File

@ -1,21 +1,28 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
var prefsBranch = Cc["@mozilla.org/preferences-service;1"].
let prefsBranch = Cc["@mozilla.org/preferences-service;1"].
getService(Ci.nsIPrefService).
getBranch("browser.panorama.");
let originalPrefState;
function test() {
waitForExplicitFinish();
ok(!TabView.isVisible(), "Main window TabView is hidden");
ok(experienced(), "should start as experienced");
originalPrefState = experienced();
prefsBranch.setBoolPref("experienced_first_run", false);
ok(!experienced(), "set to not experienced");
newWindowWithTabView(checkFirstRun, part2);
newWindowWithTabView(checkFirstRun, function() {
// open tabview doesn't count as first use experience so setting it manually
prefsBranch.setBoolPref("experienced_first_run", true);
ok(experienced(), "we're now experienced");
newWindowWithTabView(checkNotFirstRun, endGame);
});
}
function experienced() {
@ -27,7 +34,7 @@ function checkFirstRun(win) {
let contentWindow = win.document.getElementById("tab-view").contentWindow;
// Welcome tab disabled by bug 626754. To be fixed via bug 626926.
todo_is(win.gBrowser.tabs.length, 2, "There should be two tabs");
is(win.gBrowser.tabs.length, 1, "There should be one tab");
let groupItems = contentWindow.GroupItems.groupItems;
is(groupItems.length, 1, "There should be one group");
@ -35,13 +42,9 @@ function checkFirstRun(win) {
let orphanTabCount = contentWindow.GroupItems.getOrphanedTabs().length;
// Welcome tab disabled by bug 626754. To be fixed via bug 626926.
todo_is(orphanTabCount, 1, "There should also be an orphaned tab");
ok(experienced(), "we're now experienced");
}
is(orphanTabCount, 0, "There should also be no orphaned tabs");
function part2() {
newWindowWithTabView(checkNotFirstRun, endGame);
ok(!experienced(), "we're not experienced");
}
function checkNotFirstRun(win) {
@ -60,6 +63,9 @@ function checkNotFirstRun(win) {
function endGame() {
ok(!TabView.isVisible(), "Main window TabView is still hidden");
ok(experienced(), "should finish as experienced");
prefsBranch.setBoolPref("experienced_first_run", originalPrefState);
finish();
}

View File

@ -1,6 +1,5 @@
pref("startup.homepage_override_url","http://www.mozilla.org/projects/%APP%/%VERSION%/whatsnew/");
pref("startup.homepage_welcome_url","http://www.mozilla.org/projects/%APP%/%VERSION%/firstrun/");
pref("browser.panorama.welcome_url", "http://www.mozilla.com/firefox/panorama/");
// The time interval between checks for a new version (in seconds)
// nightly=8 hours, official=24 hours
pref("app.update.interval", 28800);

View File

@ -1,6 +1,5 @@
pref("startup.homepage_override_url","http://www.mozilla.org/projects/%APP%/%VERSION%/whatsnew/");
pref("startup.homepage_welcome_url","http://www.mozilla.org/projects/%APP%/%VERSION%/firstrun/");
pref("browser.panorama.welcome_url", "http://www.mozilla.com/firefox/panorama/");
// The time interval between checks for a new version (in seconds)
// nightly=8 hours, official=24 hours
pref("app.update.interval", 28800);

View File

@ -53,8 +53,3 @@ include $(topsrcdir)/config/rules.mk
libs:: $(srcdir)/run-mozilla.sh
$(INSTALL) $< $(DIST)/bin
ifeq ($(OS_ARCH),OpenVMS)
libs:: vms/mozilla.com vms/install.com vms/getinfo.com
$(INSTALL) $? $(DIST)/bin
endif

View File

@ -1,6 +0,0 @@
! Component global symbol file, used for all true XPCOM components (those
! which have IS_COMPONENT defined in their Makefile.
!
GSMATCH=LEQUAL,1,1
case_sensitive=YES
SYMBOL_VECTOR=(NSGetModule=PROCEDURE)

View File

@ -1,36 +0,0 @@
$ verify = 'f$verify(0)
$ if p1 .eqs. "DECW" then goto decw
$!
$! This command file in not used by the Mozilla/CSWB software.
$! It is here because if you report a software problem you may be asked
$! to run it and send the output back to the support specialist.
$!
$ set verify
$ set noon
$ show process /quota
$ show display
$ write sys$output f$environment("procedure")
$ show log /ful sys$disk,sys$login,tmp,home
$ show log /ful decc*
$ dir sys$login.;
$ run sys$common:[syshlp.examples.decw.utils]xdpyinfo.exe
$ show system /noprocess
$ ucx show version
$ type sys$sysroot:[sysmgr]decw$private_server_setup.com
$ set noverify
$ @sys$update:decw$versions all
$decw:
$ c = ""
$f_loop:
$ pid = f$pid(c)
$ if pid .eqs. ""
$ then
$ write sys$output "Unable to find DECW$SERVER process"
$ exit
$ endif
$ if f$getjpi(pid,"prcnam") .nes. "DECW$SERVER_0" then goto f_loop
$loop:
$ quota = f$getjpi(pid,"pgflquota")
$ inuse = f$getjpi(pid,"pagfilcnt")
$ write sys$output f$fao("!UL remaining out of !UL at !%D",inuse,quota,0)
$ if verify then set verify

View File

@ -1,52 +0,0 @@
$! Command file to install/deinstall Mozilla image.
$! This command file must exist in the root Mozilla directory (where the main
$! images and shareables reside).
$!
$! P1 = INSTALL command to use.
$! Default is "ADD /OPEN /HEADER_RESIDENT /SHARE"
$! To remove previously installed images pass REMOVE as P1.
$!
$ saved_dir = f$environment("default")
$!
$ if p1 .eqs. "" then p1 = "add /open /head /share"
$ me = f$envir("procedure")
$ here = f$parse(me,,,"device") + f$parse(me,,,"directory")
$!
$! Main image(s).
$!
$ call do_many "''p1'" "''here'*-bin."
$!
$! All the .so files in the main directory.
$!
$ call do_many "''p1'" "''here'*.so"
$!
$! All the .so files in the components directory.
$!
$ set default 'here'
$ set default [.components]
$ me = f$envir("default")
$ here = f$parse(me,,,"device") + f$parse(me,,,"directory")
$ call do_many "''p1'" "''here'*.so"
$!
$ set default 'saved_dir'
$ exit
$!
$do_one:
$ subroutine
$ write sys$output "Doing ",p2
$ install 'p1' 'p2'
$ endsubroutine
$!
$!
$do_many:
$ subroutine
$loop:
$ f=f$search(p2)
$ if f .nes. ""
$ then
$ v=f$parse(f,,,"version")
$ f=f-v
$ call do_one "''p1'" "''f'"
$ goto loop
$ endif
$ endsubroutine

View File

@ -1,26 +0,0 @@
! Fixed section of symbol vector for LIBXPCOM (debug)
!
GSMATCH=LEQUAL,2,2
case_sensitive=YES
!
! --------------------------------------------------------------------------
! Ident 2,1 introduced for M0.9.4
! --------------------------------------------------------------------------
!
SYMBOL_VECTOR=(CXX$assgnfrmhlpr13nsCMPt3okfmbt=PROCEDURE)
SYMBOL_VECTOR=(CXX$clk16nsQeryntrfcxnk434ulf1t=PROCEDURE)
SYMBOL_VECTOR=(CXX$clk17nsGtSrvcByCDxnk20ffnk0=PROCEDURE)
SYMBOL_VECTOR=(SPARE) ! __dt__13nsCOMPtr_basexv not present in debug
!
! --------------------------------------------------------------------------
! Ident 2,2 introduced for Mozilla 1.1 (and hence CSWB post 1.0).
! --------------------------------------------------------------------------
!
SYMBOL_VECTOR=(iid__L0__GetIID__9nsIModulexv=DATA)
SYMBOL_VECTOR=(iid__L0__GetIID__10nsIFactoryxv=DATA)
SYMBOL_VECTOR=(CXX$iidL0GtID11nsRnnblxv3t05kum=DATA)
SYMBOL_VECTOR=(CXX$GtGlblSrvcMngr16nsSr1vcg2p7=PROCEDURE)
!
! --------------------------------------------------------------------------
! End of fixed section
! --------------------------------------------------------------------------

View File

@ -1,26 +0,0 @@
! Fixed section of symbol vector for LIBXPCOM (non-debug)
!
GSMATCH=LEQUAL,2,2
case_sensitive=YES
!
! --------------------------------------------------------------------------
! Ident 2,1 introduced for M0.9.4
! --------------------------------------------------------------------------
!
SYMBOL_VECTOR=(CXX$assgnfrmhlpr13nsCMPt3okfmbt=PROCEDURE)
SYMBOL_VECTOR=(CXX$clk16nsQeryntrfcxnk434ulf1t=PROCEDURE)
SYMBOL_VECTOR=(CXX$clk17nsGtSrvcByCDxnk20ffnk0=PROCEDURE)
SYMBOL_VECTOR=(__dt__13nsCOMPtr_basexv=PROCEDURE)
!
! --------------------------------------------------------------------------
! Ident 2,2 introduced for Mozilla 1.1 (and hence CSWB post 1.0).
! --------------------------------------------------------------------------
!
SYMBOL_VECTOR=(iid__L0__GetIID__9nsIModulexv=DATA)
SYMBOL_VECTOR=(iid__L0__GetIID__10nsIFactoryxv=DATA)
SYMBOL_VECTOR=(CXX$iidL0GtID11nsRnnblxv3t05kum=DATA)
SYMBOL_VECTOR=(CXX$GtGlblSrvcMngr16nsSr1vcg2p7=PROCEDURE)
!
! --------------------------------------------------------------------------
! End of fixed section
! --------------------------------------------------------------------------

View File

@ -1,172 +0,0 @@
$! Command file to run Mozilla.
$! This command file must exist in the root Mozilla directory (where the main
$! images and shareables reside).
$!
$ moz_self = f$envir("procedure")
$ moz_dir = f$parse(moz_self,,,"device") + f$parse(moz_self,,,"directory")
$!
$ moz_user = f$edit(f$getjpi("","username"),"trim")
$ moz_cwd = f$environment("default")
$ moz_image = f$trnlnm("MOZILLA_IMAGE")
$ if moz_image .eqs. ""
$ then
$ moz_image = f$search("''moz_dir'*-bin.;")
$ if moz_image .nes. ""
$ then
$ moz_image = f$parse(moz_image,,,"name")
$ else
$ moz_image = "mozilla-bin"
$ endif
$ endif
$!
$ moz_gblpages_needed = (336 * 120/100)
$ moz_gblsects_needed = (1 * 120/100)
$ moz_gblpages_actual = f$getsyi("free_gblpages")
$ moz_gblsects_actual = f$getsyi("free_gblsects")
$ moz_wait = 0
$ if moz_gblpages_actual .lt. moz_gblpages_needed
$ then
$ write sys$output -
f$fao("WARNING, estimated global pages needed=!UL, available=!UL",-
moz_gblpages_needed, moz_gblpages_actual)
$ moz_wait = 1
$ endif
$ if moz_gblsects_actual .lt. moz_gblsects_needed
$ then
$ write sys$output -
f$fao("WARNING, estimated global sections needed=!UL, available=!UL",-
moz_gblsects_needed, moz_gblsects_actual)
$ moz_wait = 1
$ endif
$ if moz_wait .and. (f$mode() .eqs. "INTERACTIVE")
$ then
$ type sys$input
The above system parameter(s) may not be sufficient to
successfully run Mozilla.
$ read/prompt="Do you wish to continue [NO]: " sys$command moz_ans
$ if .not. moz_ans then exit
$ endif
$!
$! We need the directory as a unix-style spec.
$!
$ moz_unix = "/" + f$parse(moz_self,,,"device") - ":"
$ moz_self_dir = f$parse(moz_self,,,"directory") - "[" - "]" - "<" - ">"
$ i=0
$uloop:
$ e=f$element(i,".",moz_self_dir)
$ if e .nes. "."
$ then
$ moz_unix = moz_unix + "/" + e
$ i=i+1
$ goto uloop
$ endif
$ moz_unix = f$edit(moz_unix,"lowercase")
$!
$ moz_found_one = 0
$so_loop:
$ moz_so_file = f$search("''moz_dir'*.so")
$ if moz_so_file .nes. ""
$ then
$ name = f$parse(moz_so_file,,,"name")
$ define /user 'name' 'moz_dir''name'.so
$ moz_found_one = 1
$ goto so_loop
$ endif
$ if .not. moz_found_one
$ then
$ write sys$output "Unable to locate Mozilla images. Most likely reason is"
$ write sys$output "because the protection on the directory"
$ write sys$output moz_dir
$ write sys$output "does not allow you READ access."
$ exit
$ endif
$!
$ ipc_shr = f$trnlnm("ucx$ipc_shr") - ".EXE" + ".EXE"
$ if (f$locate("MULTINET",ipc_shr) .ne. f$length(ipc_shr)) .or. -
(f$locate("TCPWARE",ipc_shr) .ne. f$length(ipc_shr))
$ then
$ define /user VMS_NULL_DL_NAME 'ipc_shr'
$ else
$ define /user VMS_NULL_DL_NAME SYS$SHARE:TCPIP$IPC_SHR.EXE
$ endif
$ define /user GETADDRINFO TCPIP$GETADDRINFO
$ define /user FREEADDRINFO TCPIP$FREEADDRINFO
$ define /user GETNAMEINFO TCPIP$GETNAMEINFO
$ define /user GETIPNODEBYNAME TCPIP$GETIPNODEBYNAME
$ define /user GETIPNODEBYADDR TCPIP$GETIPNODEBYADDR
$ define /user FREEHOSTENT TCPIP$FREEHOSTENT
$!
$! A networking problem which is still unresolved means that by default
$! the IPv6 support is disabled. If you want to turn it back on define
$! the logical MOZILLA_IPV6 (to anything), but beware that you may
$! encounter hangs.
$!
$ if f$trnlnm("MOZILLA_IPV6") .eqs. ""
$ then
$ define /user /nolog GETIPNODEBYNAME NO_SUCH_NAME
$ endif
$!
$! These logicals define how files are created/opened.
$! The old code used: "shr=get,put", "rfm=stmlf", "deq=500", "fop=dfw,tef"
$!
$! Executables
$ define /user VMS_OPEN_ARGS_1 ".EXE.SO.SFX_AXPEXE.SFX_VAXEXE", -
"ctx=stm", "rfm=fix", "rat=none", "mrs=512"
$!
$! VMS savesets
$ define /user VMS_OPEN_ARGS_2 ".BCK.SAV", -
"ctx=stm", "rfm=fix", "rat=none", "mrs=32256"
$!
$! Binary files. STM doesn't work, needs to be STMLF.
$ define /user VMS_OPEN_ARGS_3 "..DB.GIF.JAR.JPG.MAB.MFASL.MSF.WAV.XPM.XPT", -
"ctx=stm", "rfm=stmlf", "rat=none"
$!
$! Text files - covered by the catchall
$! ".BAK.COM.CSS.DAT.DTD.HTM.HTML.JS.RDF.NET.ORG.SH.SRC.TBL.TXT.XML.XUL"
$!
$ define /user VMS_OPEN_ARGS_4 " ",-
"rfm=stmlf", "rat=cr"
$!
$ if f$trnlnm("USER") .eqs. "" then define /user user "''moz_user'"
$ if f$trnlnm("LOGNAME") .eqs. "" then define /user logname "''moz_user'"
$ define /user MOZILLA_FIVE_HOME "''moz_unix'"
$ define /user VMS_USE_VMS_DEF_PROT 1
$ define /user VMS_ACCESS_FIX_WOK 1
$! define /user VMS_FILE_OPEN_MODE 3
$! define /user VMS_POLL_TIMER_MIN 10
$! define /user VMS_POLL_TIMER_DELTA 0
$! define /user VMS_POLL_TIMER_MAX 200
$! define /user NSPR_LOG_MODULES "all:5"
$! define /user NSPR_LOG_FILE dkb100:[work]log.log
$! define /user VMS_TRACE_FILENAMES 1
$!
$ define /user DECC$EFS_CASE_PRESERVE 0
$!
$! GTK key mapping mode: 0=none, 1=LK, 2=PC
$ if f$trnlnm("GTK_KEY_MAPPING_MODE") .eqs. "" then -
define /user GTK_KEY_MAPPING_MODE 1
$!
$ write sys$output "Starting ''moz_image'..."
$ mcr 'moz_dir''moz_image'. 'p1' 'p2' 'p3' 'p4' 'p5' 'p6' 'p7' 'p8'
$ set default 'moz_dir'
$ if f$search("[.chrome]*.*;-1") .nes. ""
$ then
$ set default [.chrome]
$ moz_chrome = f$environment("default")
$ purge 'moz_chrome'
$ moz_ver = f$parse(f$search("''moz_chrome'all-skins.rdf"),,,"version") - ";"
$ if moz_ver .gt. 10000 then rename 'moz_chrome'*.rdf *.*;1
$ endif
$!
$ moz_keep = f$trnlnm("MOZILLA_PURGE_KEEP")
$ if moz_keep .eqs. "" then moz_keep = "5"
$ set default sys$login
$ if f$search("[._MOZILLA.*]*.*") .nes. ""
$ then
$ purge /keep='moz_keep' [._mozilla.*...]
$ endif
$ set default 'moz_cwd'
$!
$ exit

View File

@ -434,23 +434,6 @@ ifeq ($(SOLARIS_SUNPRO_CXX),1)
GARBAGE_DIRS += SunWS_cache
endif
ifeq ($(OS_ARCH),OpenVMS)
GARBAGE += $(wildcard *.*_defines)
ifdef SHARED_LIBRARY
VMS_SYMVEC_FILE = $(SHARED_LIBRARY:$(DLL_SUFFIX)=_symvec.opt)
ifdef MOZ_DEBUG
VMS_SYMVEC_FILE_MODULE = $(topsrcdir)/build/unix/vms/$(notdir $(SHARED_LIBRARY:$(DLL_SUFFIX)=_dbg_symvec.opt))
else
VMS_SYMVEC_FILE_MODULE = $(topsrcdir)/build/unix/vms/$(notdir $(SHARED_LIBRARY:$(DLL_SUFFIX)=_symvec.opt))
endif
VMS_SYMVEC_FILE_COMP = $(topsrcdir)/build/unix/vms/component_symvec.opt
GARBAGE += $(VMS_SYMVEC_FILE)
ifdef IS_COMPONENT
DSO_LDOPTS := $(filter-out -auto_symvec,$(DSO_LDOPTS)) $(VMS_SYMVEC_FILE)
endif
endif
endif
XPIDL_GEN_DIR = _xpidlgen
ifdef MOZ_UPDATE_XTERM
@ -1180,20 +1163,6 @@ $(SHARED_LIBRARY): $(OBJS) $(LOBJS) $(DEF_FILE) $(RESFILE) $(SHARED_LIBRARY_LIBS
ifndef INCREMENTAL_LINKER
rm -f $@
endif
ifeq ($(OS_ARCH),OpenVMS)
@if test ! -f $(VMS_SYMVEC_FILE); then \
if test -f $(VMS_SYMVEC_FILE_MODULE); then \
echo Creating specific component options file $(VMS_SYMVEC_FILE); \
cp $(VMS_SYMVEC_FILE_MODULE) $(VMS_SYMVEC_FILE); \
fi; \
fi
ifdef IS_COMPONENT
@if test ! -f $(VMS_SYMVEC_FILE); then \
echo Creating generic component options file $(VMS_SYMVEC_FILE); \
cp $(VMS_SYMVEC_FILE_COMP) $(VMS_SYMVEC_FILE); \
fi
endif
endif # OpenVMS
ifdef DTRACE_LIB_DEPENDENT
ifndef XP_MACOSX
dtrace -G -C -s $(MOZILLA_DTRACE_SRC) -o $(DTRACE_PROBE_OBJ) $(shell $(EXPAND_LIBS) $(MOZILLA_PROBE_LIBS))

View File

@ -1343,9 +1343,6 @@ UNIX_SYSTEM_V)
;;
OSF1)
;;
*OpenVMS*)
HOST_OS_ARCH=OpenVMS
;;
OS_2)
HOST_OS_ARCH=OS2
;;
@ -1434,11 +1431,6 @@ OSF1)
;;
esac
;;
*OpenVMS*)
OS_ARCH=OpenVMS
OS_RELEASE=`uname -v`
OS_TEST=`uname -p`
;;
OS_2)
OS_ARCH=OS2
OS_TARGET=OS2
@ -2614,25 +2606,6 @@ ia64*-hpux*)
fi
;;
*-openvms*)
AC_DEFINE(NO_PW_GECOS)
AC_DEFINE(NO_UDSOCK)
AC_DEFINE(POLL_WITH_XCONNECTIONNUMBER)
USE_PTHREADS=1
MKSHLIB_FORCE_ALL='-all'
MKSHLIB_UNFORCE_ALL='-none'
AS='as'
AS_DASH_C_FLAG='-Wc/names=as_is'
AR_FLAGS='c $@'
DSO_LDOPTS='-shared -auto_symvec'
DSO_PIC_CFLAGS=
MOZ_DEBUG_LDFLAGS='-g'
COMPAQ_CXX=1
CC_VERSION=`$CC -V 2>&1 | awk '/ C / { print $3 }'`
CXX_VERSION=`$CXX -V 2>&1 | awk '/ C\+\+ / { print $3 }'`
;;
*-os2*)
MKSHLIB='$(CXX) $(CXXFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
MKCSHLIB='$(CC) $(CFLAGS) $(DSO_PIC_CFLAGS) $(DSO_LDOPTS) -o $@'
@ -2895,9 +2868,6 @@ case "$target" in
*-aix4.3*|*-aix5*)
NO_LD_ARCHIVE_FLAGS=
;;
*-openvms*)
NO_LD_ARCHIVE_FLAGS=
;;
*-mingw*|*-wince|*-winmo)
if test -z "$GNU_CC"; then
NO_LD_ARCHIVE_FLAGS=
@ -8245,11 +8215,7 @@ MOZ_ARG_DISABLE_BOOL(md,
fi])
if test "$_cpp_md_flag"; then
COMPILER_DEPEND=1
if test "$OS_ARCH" = "OpenVMS"; then
_DEPEND_CFLAGS='$(subst =, ,$(filter-out %/.pp,-MM=-MD=-MF=$(MDDEPDIR)/$(basename $(@F)).pp))'
else
_DEPEND_CFLAGS='$(filter-out %/.pp,-MD -MF $(MDDEPDIR)/$(basename $(@F)).pp)'
fi
_DEPEND_CFLAGS='$(filter-out %/.pp,-MD -MF $(MDDEPDIR)/$(basename $(@F)).pp)'
dnl Sun Studio on Solaris use -xM instead of -MD, see config/rules.mk
if test "$SOLARIS_SUNPRO_CC"; then
_DEPEND_CFLAGS=
@ -9297,8 +9263,6 @@ dnl ========================================================
if test "$OS_ARCH" = "Darwin"; then
AC_DEFINE(XP_UNIX)
AC_DEFINE(UNIX_ASYNC_DNS)
elif test "$OS_ARCH" = "OpenVMS"; then
AC_DEFINE(XP_UNIX)
elif test "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" -a "$OS_ARCH" != "WINCE"; then
AC_DEFINE(XP_UNIX)
AC_DEFINE(UNIX_ASYNC_DNS)
@ -9435,8 +9399,6 @@ dnl If it fails, nothing is set and config.status will run as usual.
dnl
dnl This does not change the $MAKEFILES variable.
dnl
dnl OpenVMS gets a line overflow on the long eval command, so use a temp file.
dnl
echo $MAKEFILES | ${PERL} $srcdir/build/autoconf/acoutput-fast.pl > conftest.sh
. ./conftest.sh
rm conftest.sh

View File

@ -689,7 +689,7 @@ public:
/**
* Return the window containing the document (the outer window).
*/
nsPIDOMWindow *GetWindow()
nsPIDOMWindow *GetWindow() const
{
return mWindow ? mWindow->GetOuterWindow() : GetWindowInternal();
}
@ -707,7 +707,7 @@ public:
/**
* Return the outer window ID.
*/
PRUint64 OuterWindowID()
PRUint64 OuterWindowID() const
{
nsPIDOMWindow *window = GetWindow();
return window ? window->WindowID() : 0;
@ -1531,7 +1531,7 @@ protected:
nsPropertyTable* GetExtraPropertyTable(PRUint16 aCategory);
// Never ever call this. Only call GetWindow!
virtual nsPIDOMWindow *GetWindowInternal() = 0;
virtual nsPIDOMWindow *GetWindowInternal() const = 0;
// Never ever call this. Only call GetInnerWindow!
virtual nsPIDOMWindow *GetInnerWindowInternal() = 0;

View File

@ -3238,6 +3238,18 @@ nsDocument::doCreateShell(nsPresContext* aContext,
mExternalResourceMap.ShowViewers();
if (mScriptGlobalObject) {
RescheduleAnimationFrameNotifications();
}
shell.swap(*aInstancePtrResult);
return NS_OK;
}
void
nsDocument::RescheduleAnimationFrameNotifications()
{
nsRefreshDriver* rd = mPresShell->GetPresContext()->RefreshDriver();
if (mHavePendingPaint) {
rd->ScheduleBeforePaintEvent(this);
@ -3245,10 +3257,6 @@ nsDocument::doCreateShell(nsPresContext* aContext,
if (!mAnimationFrameListeners.IsEmpty()) {
rd->ScheduleAnimationFrameListeners(this);
}
shell.swap(*aInstancePtrResult);
return NS_OK;
}
void
@ -3262,6 +3270,15 @@ void
nsDocument::DeleteShell()
{
mExternalResourceMap.HideViewers();
if (mScriptGlobalObject) {
RevokeAnimationFrameNotifications();
}
mPresShell = nsnull;
}
void
nsDocument::RevokeAnimationFrameNotifications()
{
if (mHavePendingPaint) {
mPresShell->GetPresContext()->RefreshDriver()->RevokeBeforePaintEvent(this);
}
@ -3269,7 +3286,6 @@ nsDocument::DeleteShell()
mPresShell->GetPresContext()->RefreshDriver()->
RevokeAnimationFrameListeners(this);
}
mPresShell = nsnull;
}
static void
@ -3791,6 +3807,10 @@ nsDocument::SetScriptGlobalObject(nsIScriptGlobalObject *aScriptGlobalObject)
// our layout history state now.
mLayoutHistoryState = GetLayoutHistoryState();
if (mPresShell) {
RevokeAnimationFrameNotifications();
}
// Also make sure to remove our onload blocker now if we haven't done it yet
if (mOnloadBlockCount != 0) {
nsCOMPtr<nsILoadGroup> loadGroup = GetDocumentLoadGroup();
@ -3847,6 +3867,10 @@ nsDocument::SetScriptGlobalObject(nsIScriptGlobalObject *aScriptGlobalObject)
mAllowDNSPrefetch = allowDNSPrefetch;
}
}
if (mPresShell) {
RescheduleAnimationFrameNotifications();
}
}
// Remember the pointer to our window (or lack there of), to avoid
@ -3889,7 +3913,7 @@ nsDocument::SetScriptHandlingObject(nsIScriptGlobalObject* aScriptObject)
}
nsPIDOMWindow *
nsDocument::GetWindowInternal()
nsDocument::GetWindowInternal() const
{
NS_ASSERTION(!mWindow, "This should not be called when mWindow is not null!");

View File

@ -1058,7 +1058,7 @@ protected:
const nsAString& aType,
PRBool aPersisted);
virtual nsPIDOMWindow *GetWindowInternal();
virtual nsPIDOMWindow *GetWindowInternal() const;
virtual nsPIDOMWindow *GetInnerWindowInternal();
virtual nsIScriptGlobalObject* GetScriptHandlingObjectInternal() const;
virtual PRBool InternalAllowXULXBL();
@ -1207,6 +1207,11 @@ private:
void EnableStyleSheetsForSetInternal(const nsAString& aSheetSet,
PRBool aUpdateCSSLoader);
// Revoke any pending notifications due to mozRequestAnimationFrame calls
void RevokeAnimationFrameNotifications();
// Reschedule any notifications we need to handle mozRequestAnimationFrame
void RescheduleAnimationFrameNotifications();
// These are not implemented and not supported.
nsDocument(const nsDocument& aOther);
nsDocument& operator=(const nsDocument& aOther);

View File

@ -1611,6 +1611,7 @@ GK_ATOM(columnSetFrame, "ColumnSetFrame")
GK_ATOM(comboboxControlFrame, "ComboboxControlFrame")
GK_ATOM(comboboxDisplayFrame, "ComboboxDisplayFrame")
GK_ATOM(deckFrame, "DeckFrame")
GK_ATOM(directionalFrame, "DirectionalFrame")
GK_ATOM(fieldSetFrame, "FieldSetFrame")
GK_ATOM(frameSetFrame, "FrameSetFrame")
GK_ATOM(gfxButtonControlFrame, "gfxButtonControlFrame")

View File

@ -120,6 +120,10 @@ nsInProcessTabChildGlobal::nsInProcessTabChildGlobal(nsIDocShell* aShell,
nsInProcessTabChildGlobal::~nsInProcessTabChildGlobal()
{
NS_ASSERTION(!mCx, "Couldn't release JSContext?!?");
if (mListenerManager) {
mListenerManager->Disconnect();
}
}
nsresult

View File

@ -126,19 +126,16 @@
#define XML_HTTP_REQUEST_ABORTED (1 << 7) // Internal
#define XML_HTTP_REQUEST_ASYNC (1 << 8) // Internal
#define XML_HTTP_REQUEST_PARSEBODY (1 << 9) // Internal
#define XML_HTTP_REQUEST_XSITEENABLED (1 << 10) // Internal, Is any cross-site request allowed?
// Even if this is false the
// access-control spec is supported
#define XML_HTTP_REQUEST_SYNCLOOPING (1 << 11) // Internal
#define XML_HTTP_REQUEST_MULTIPART (1 << 12) // Internal
#define XML_HTTP_REQUEST_GOT_FINAL_STOP (1 << 13) // Internal
#define XML_HTTP_REQUEST_BACKGROUND (1 << 14) // Internal
#define XML_HTTP_REQUEST_SYNCLOOPING (1 << 10) // Internal
#define XML_HTTP_REQUEST_MULTIPART (1 << 11) // Internal
#define XML_HTTP_REQUEST_GOT_FINAL_STOP (1 << 12) // Internal
#define XML_HTTP_REQUEST_BACKGROUND (1 << 13) // Internal
// This is set when we've got the headers for a multipart XMLHttpRequest,
// but haven't yet started to process the first part.
#define XML_HTTP_REQUEST_MPART_HEADERS (1 << 15) // Internal
#define XML_HTTP_REQUEST_USE_XSITE_AC (1 << 16) // Internal
#define XML_HTTP_REQUEST_NEED_AC_PREFLIGHT (1 << 17) // Internal
#define XML_HTTP_REQUEST_AC_WITH_CREDENTIALS (1 << 18) // Internal
#define XML_HTTP_REQUEST_MPART_HEADERS (1 << 14) // Internal
#define XML_HTTP_REQUEST_USE_XSITE_AC (1 << 15) // Internal
#define XML_HTTP_REQUEST_NEED_AC_PREFLIGHT (1 << 16) // Internal
#define XML_HTTP_REQUEST_AC_WITH_CREDENTIALS (1 << 17) // Internal
#define XML_HTTP_REQUEST_LOADSTATES \
(XML_HTTP_REQUEST_UNINITIALIZED | \
@ -1639,14 +1636,12 @@ nsXMLHttpRequest::GetCurrentHttpChannel()
nsresult
nsXMLHttpRequest::CheckChannelForCrossSiteRequest(nsIChannel* aChannel)
{
// First check if cross-site requests are enabled
if ((mState & XML_HTTP_REQUEST_XSITEENABLED)) {
// First check if cross-site requests are enabled...
if (IsSystemXHR()) {
return NS_OK;
}
// or if this is a same-origin request.
NS_ASSERTION(!nsContentUtils::IsSystemPrincipal(mPrincipal),
"Shouldn't get here!");
// ...or if this is a same-origin request.
if (nsContentUtils::CheckMayLoad(mPrincipal, aChannel)) {
return NS_OK;
}
@ -1797,12 +1792,6 @@ nsXMLHttpRequest::OpenRequest(const nsACString& method,
channelPolicy);
if (NS_FAILED(rv)) return rv;
// Check if we're doing a cross-origin request.
if (nsContentUtils::IsSystemPrincipal(mPrincipal)) {
// Chrome callers are always allowed to read from different origins.
mState |= XML_HTTP_REQUEST_XSITEENABLED;
}
mState &= ~(XML_HTTP_REQUEST_USE_XSITE_AC |
XML_HTTP_REQUEST_NEED_AC_PREFLIGHT);
@ -1823,17 +1812,6 @@ nsXMLHttpRequest::Open(const nsACString& method, const nsACString& url,
PRBool async, const nsAString& user,
const nsAString& password, PRUint8 optional_argc)
{
if (nsContentUtils::GetCurrentJSContext()) {
// We're (likely) called from JS
// Find out if UniversalBrowserRead privileges are enabled
if (nsContentUtils::IsCallerTrustedForRead()) {
mState |= XML_HTTP_REQUEST_XSITEENABLED;
} else {
mState &= ~XML_HTTP_REQUEST_XSITEENABLED;
}
}
if (!optional_argc) {
// No optional arguments were passed in. Default async to true.
async = PR_TRUE;
@ -1954,8 +1932,8 @@ nsXMLHttpRequest::OnStartRequest(nsIRequest *request, nsISupports *ctxt)
nsCOMPtr<nsIChannel> channel(do_QueryInterface(request));
NS_ENSURE_TRUE(channel, NS_ERROR_UNEXPECTED);
nsCOMPtr<nsIPrincipal> documentPrincipal = mPrincipal;
if (nsContentUtils::IsSystemPrincipal(documentPrincipal)) {
nsCOMPtr<nsIPrincipal> documentPrincipal;
if (IsSystemXHR()) {
// Don't give this document the system principal. We need to keep track of
// mPrincipal being system because we use it for various security checks
// that should be passing, but the document data shouldn't get a system
@ -1963,6 +1941,8 @@ nsXMLHttpRequest::OnStartRequest(nsIRequest *request, nsISupports *ctxt)
nsresult rv;
documentPrincipal = do_CreateInstance("@mozilla.org/nullprincipal;1", &rv);
NS_ENSURE_SUCCESS(rv, rv);
} else {
documentPrincipal = mPrincipal;
}
channel->SetOwner(documentPrincipal);
@ -2040,7 +2020,7 @@ nsXMLHttpRequest::OnStartRequest(nsIRequest *request, nsISupports *ctxt)
nsCOMPtr<nsIDocument> responseDoc = do_QueryInterface(mResponseXML);
responseDoc->SetPrincipal(documentPrincipal);
if (nsContentUtils::IsSystemPrincipal(mPrincipal)) {
if (IsSystemXHR()) {
responseDoc->ForceEnableXULXBL();
}
@ -2420,7 +2400,7 @@ nsXMLHttpRequest::Send(nsIVariant *aBody)
if (httpChannel) {
httpChannel->GetRequestMethod(method); // If GET, method name will be uppercase
if (!nsContentUtils::IsSystemPrincipal(mPrincipal)) {
if (!IsSystemXHR()) {
// Get the referrer for the request.
//
// If it weren't for history.push/replaceState, we could just use the
@ -2656,7 +2636,7 @@ nsXMLHttpRequest::Send(nsIVariant *aBody)
}
}
if (!(mState & XML_HTTP_REQUEST_XSITEENABLED)) {
if (!IsSystemXHR()) {
// Always create a nsCrossSiteListenerProxy here even if it's
// a same-origin request right now, since it could be redirected.
listener = new nsCrossSiteListenerProxy(listener, mPrincipal, mChannel,
@ -2853,7 +2833,7 @@ nsXMLHttpRequest::SetRequestHeader(const nsACString& header,
}
// Check for dangerous cross-site headers
PRBool safeHeader = !!(mState & XML_HTTP_REQUEST_XSITEENABLED);
bool safeHeader = IsSystemXHR();
if (!safeHeader) {
// Content-Type isn't always safe, but we'll deal with it in Send()
const char *kCrossOriginSafeHeaders[] = {
@ -2862,7 +2842,7 @@ nsXMLHttpRequest::SetRequestHeader(const nsACString& header,
};
for (i = 0; i < NS_ARRAY_LENGTH(kCrossOriginSafeHeaders); ++i) {
if (header.LowerCaseEqualsASCII(kCrossOriginSafeHeaders[i])) {
safeHeader = PR_TRUE;
safeHeader = true;
break;
}
}

View File

@ -69,6 +69,7 @@
#include "nsIPrivateDOMEvent.h"
#include "nsDOMProgressEvent.h"
#include "nsDOMEventTargetWrapperCache.h"
#include "nsContentUtils.h"
class nsILoadGroup;
class AsyncVerifyRedirectCallbackForwarder;
@ -333,6 +334,10 @@ protected:
already_AddRefed<nsIHttpChannel> GetCurrentHttpChannel();
bool IsSystemXHR() {
return !!nsContentUtils::IsSystemPrincipal(mPrincipal);
}
/**
* Check if aChannel is ok for a cross-site request by making sure no
* inappropriate headers are set, and no username/password is set.

View File

@ -22,9 +22,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=426308
const SJS_URL = "http://example.org:80/tests/content/base/test/bug426308-redirect.sjs";
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
var req = new XMLHttpRequest();
var req = SpecialPowers.createSystemXHR();
req.open("GET", SJS_URL + "?" + window.location.href, false);
req.send(null);

View File

@ -52,8 +52,7 @@ function createDoc() {
function xhrDoc(idx) {
return function() {
// Defy same-origin restrictions!
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var xhr = new XMLHttpRequest();
var xhr = SpecialPowers.createSystemXHR();
xhr.open("GET", docSources[idx], false);
xhr.send();
return xhr.responseXML;

View File

@ -43,14 +43,15 @@
#include "nsIDocShell.h"
#include "gfxPattern.h"
// {EC90F32E-7848-4819-A1E3-02E64C682A72}
#define NS_ICANVASRENDERINGCONTEXTINTERNAL_IID \
{ 0xec90f32e, 0x7848, 0x4819, { 0xa1, 0xe3, 0x2, 0xe6, 0x4c, 0x68, 0x2a, 0x72 } }
{ 0xffb42d3c, 0x8281, 0x44c8, \
{ 0xac, 0xba, 0x73, 0x15, 0x31, 0xaa, 0xe5, 0x07 } }
class nsHTMLCanvasElement;
class gfxContext;
class gfxASurface;
class nsIPropertyBag;
class nsDisplayListBuilder;
namespace mozilla {
namespace layers {
@ -108,7 +109,8 @@ public:
// Return the CanvasLayer for this context, creating
// one for the given layer manager if not available.
virtual already_AddRefed<CanvasLayer> GetCanvasLayer(CanvasLayer *aOldLayer,
virtual already_AddRefed<CanvasLayer> GetCanvasLayer(nsDisplayListBuilder* aBuilder,
CanvasLayer *aOldLayer,
LayerManager *aManager) = 0;
virtual void MarkContextClean() = 0;

View File

@ -58,6 +58,7 @@
#include "gfxUtils.h"
#include "CanvasUtils.h"
#include "nsDisplayList.h"
#include "GLContextProvider.h"
@ -247,6 +248,9 @@ WebGLContext::DestroyResourcesAndContext()
void
WebGLContext::Invalidate()
{
if (mInvalidated)
return;
if (!mCanvasElement)
return;
@ -254,9 +258,6 @@ WebGLContext::Invalidate()
nsSVGEffects::InvalidateDirectRenderingObservers(HTMLCanvasElement());
#endif
if (mInvalidated)
return;
mInvalidated = PR_TRUE;
HTMLCanvasElement()->InvalidateFrame();
}
@ -619,18 +620,27 @@ WebGLContext::GetThebesSurface(gfxASurface **surface)
static PRUint8 gWebGLLayerUserData;
class WebGLContextUserData : public LayerUserData {
public:
WebGLContextUserData(nsHTMLCanvasElement *aContent)
: mContent(aContent) {}
static void DidTransactionCallback(void* aData)
{
static_cast<WebGLContextUserData*>(aData)->mContent->MarkContextClean();
}
private:
nsRefPtr<nsHTMLCanvasElement> mContent;
};
already_AddRefed<layers::CanvasLayer>
WebGLContext::GetCanvasLayer(CanvasLayer *aOldLayer,
WebGLContext::GetCanvasLayer(nsDisplayListBuilder* aBuilder,
CanvasLayer *aOldLayer,
LayerManager *aManager)
{
if (!mResetLayer && aOldLayer &&
aOldLayer->HasUserData(&gWebGLLayerUserData)) {
NS_ADDREF(aOldLayer);
if (mInvalidated) {
aOldLayer->Updated(nsIntRect(0, 0, mWidth, mHeight));
mInvalidated = PR_FALSE;
HTMLCanvasElement()->GetPrimaryCanvasFrame()->MarkLayersActive();
}
return aOldLayer;
}
@ -639,7 +649,25 @@ WebGLContext::GetCanvasLayer(CanvasLayer *aOldLayer,
NS_WARNING("CreateCanvasLayer returned null!");
return nsnull;
}
canvasLayer->SetUserData(&gWebGLLayerUserData, nsnull);
WebGLContextUserData *userData = nsnull;
if (aBuilder->IsPaintingToWindow()) {
// Make the layer tell us whenever a transaction finishes (including
// the current transaction), so we can clear our invalidation state and
// start invalidating again. We need to do this for the layer that is
// being painted to a window (there shouldn't be more than one at a time,
// and if there is, flushing the invalidation state more often than
// necessary is harmless).
// The layer will be destroyed when we tear down the presentation
// (at the latest), at which time this userData will be destroyed,
// releasing the reference to the element.
// The userData will receive DidTransactionCallbacks, which flush the
// the invalidation state to indicate that the canvas is up to date.
userData = new WebGLContextUserData(HTMLCanvasElement());
canvasLayer->SetDidTransactionCallback(
WebGLContextUserData::DidTransactionCallback, userData);
}
canvasLayer->SetUserData(&gWebGLLayerUserData, userData);
CanvasLayer::Data data;
@ -661,9 +689,8 @@ WebGLContext::GetCanvasLayer(CanvasLayer *aOldLayer,
canvasLayer->Initialize(data);
PRUint32 flags = gl->CreationFormat().alpha == 0 ? Layer::CONTENT_OPAQUE : 0;
canvasLayer->SetContentFlags(flags);
canvasLayer->Updated(nsIntRect(0, 0, mWidth, mHeight));
canvasLayer->Updated();
mInvalidated = PR_FALSE;
mResetLayer = PR_FALSE;
return canvasLayer.forget().get();

View File

@ -368,9 +368,10 @@ public:
: mBoundCubeMapTextures[mActiveTexture];
}
already_AddRefed<CanvasLayer> GetCanvasLayer(CanvasLayer *aOldLayer,
already_AddRefed<CanvasLayer> GetCanvasLayer(nsDisplayListBuilder* aBuilder,
CanvasLayer *aOldLayer,
LayerManager *aManager);
void MarkContextClean() { }
void MarkContextClean() { mInvalidated = PR_FALSE; }
// a number that increments every time we have an event that causes
// all context resources to be lost.

View File

@ -96,6 +96,7 @@
#include "nsIDocShellTreeNode.h"
#include "nsIXPConnect.h"
#include "jsapi.h"
#include "nsDisplayList.h"
#include "nsTArray.h"
@ -407,7 +408,8 @@ public:
NS_IMETHOD GetThebesSurface(gfxASurface **surface);
NS_IMETHOD SetIsOpaque(PRBool isOpaque);
NS_IMETHOD Reset();
already_AddRefed<CanvasLayer> GetCanvasLayer(CanvasLayer *aOldLayer,
already_AddRefed<CanvasLayer> GetCanvasLayer(nsDisplayListBuilder* aBuilder,
CanvasLayer *aOldLayer,
LayerManager *aManager);
void MarkContextClean();
NS_IMETHOD SetIsIPC(PRBool isIPC);
@ -455,7 +457,6 @@ public:
friend class PathAutoSaveRestore;
protected:
/**
* The number of living nsCanvasRenderingContexts. When this goes down to
* 0, we free the premultiply and unpremultiply tables, if they exist.
@ -4099,8 +4100,22 @@ nsCanvasRenderingContext2D::SetMozImageSmoothingEnabled(PRBool val)
static PRUint8 g2DContextLayerUserData;
class CanvasRenderingContext2DUserData : public LayerUserData {
public:
CanvasRenderingContext2DUserData(nsHTMLCanvasElement *aContent)
: mContent(aContent) {}
static void DidTransactionCallback(void* aData)
{
static_cast<CanvasRenderingContext2DUserData*>(aData)->mContent->MarkContextClean();
}
private:
nsRefPtr<nsHTMLCanvasElement> mContent;
};
already_AddRefed<CanvasLayer>
nsCanvasRenderingContext2D::GetCanvasLayer(CanvasLayer *aOldLayer,
nsCanvasRenderingContext2D::GetCanvasLayer(nsDisplayListBuilder* aBuilder,
CanvasLayer *aOldLayer,
LayerManager *aManager)
{
if (!mValid)
@ -4109,14 +4124,6 @@ nsCanvasRenderingContext2D::GetCanvasLayer(CanvasLayer *aOldLayer,
if (!mResetLayer && aOldLayer &&
aOldLayer->HasUserData(&g2DContextLayerUserData)) {
NS_ADDREF(aOldLayer);
if (mIsEntireFrameInvalid || mInvalidateCount > 0) {
// XXX Need to just update the changed area here; we should keep track
// of the rectangle based on Redraw args.
aOldLayer->Updated(nsIntRect(0, 0, mWidth, mHeight));
MarkContextClean();
HTMLCanvasElement()->GetPrimaryCanvasFrame()->MarkLayersActive();
}
return aOldLayer;
}
@ -4125,7 +4132,25 @@ nsCanvasRenderingContext2D::GetCanvasLayer(CanvasLayer *aOldLayer,
NS_WARNING("CreateCanvasLayer returned null!");
return nsnull;
}
canvasLayer->SetUserData(&g2DContextLayerUserData, nsnull);
CanvasRenderingContext2DUserData *userData = nsnull;
if (aBuilder->IsPaintingToWindow()) {
// Make the layer tell us whenever a transaction finishes (including
// the current transaction), so we can clear our invalidation state and
// start invalidating again. We need to do this for the layer that is
// being painted to a window (there shouldn't be more than one at a time,
// and if there is, flushing the invalidation state more often than
// necessary is harmless).
// The layer will be destroyed when we tear down the presentation
// (at the latest), at which time this userData will be destroyed,
// releasing the reference to the element.
// The userData will receive DidTransactionCallbacks, which flush the
// the invalidation state to indicate that the canvas is up to date.
userData = new CanvasRenderingContext2DUserData(HTMLCanvasElement());
canvasLayer->SetDidTransactionCallback(
CanvasRenderingContext2DUserData::DidTransactionCallback, userData);
}
canvasLayer->SetUserData(&g2DContextLayerUserData, userData);
CanvasLayer::Data data;
@ -4135,13 +4160,11 @@ nsCanvasRenderingContext2D::GetCanvasLayer(CanvasLayer *aOldLayer,
canvasLayer->Initialize(data);
PRUint32 flags = mOpaque ? Layer::CONTENT_OPAQUE : 0;
canvasLayer->SetContentFlags(flags);
canvasLayer->Updated(nsIntRect(0, 0, mWidth, mHeight));
canvasLayer->Updated();
mResetLayer = PR_FALSE;
MarkContextClean();
return canvasLayer.forget().get();
return canvasLayer.forget();
}
void

View File

@ -291,6 +291,15 @@ nsEventListenerManager::nsEventListenerManager() :
nsEventListenerManager::~nsEventListenerManager()
{
// If your code fails this assertion, a possible reason is that
// a class did not call our Disconnect() manually. Note that
// this class can have Disconnect called in one of two ways:
// if it is part of a cycle, then in Unlink() (such a cycle
// would be with one of the listeners, not mTarget which is weak).
// If not part of a cycle, then Disconnect must be called manually,
// typically from the destructor of the owner class (mTarget).
// XXX azakai: Is there any reason to not just call Disconnect
// from right here, if not previously called?
NS_ASSERTION(!mTarget, "didn't call Disconnect");
RemoveAllListeners();

View File

@ -1131,10 +1131,12 @@ nsEventStateManager::PreHandleEvent(nsPresContext* aPresContext,
StopTrackingDragGesture();
#endif
sNormalLMouseEventInProcess = PR_FALSE;
// then fall through...
case nsMouseEvent::eRightButton:
#ifdef XP_OS2
StopTrackingDragGesture();
#endif
// then fall through...
case nsMouseEvent::eMiddleButton:
SetClickCount(aPresContext, (nsMouseEvent*)aEvent, aStatus);
break;
@ -1205,6 +1207,7 @@ nsEventStateManager::PreHandleEvent(nsPresContext* aPresContext,
HandleAccessKey(aPresContext, keyEvent, aStatus, nsnull,
eAccessKeyProcessingNormal, modifierMask);
}
// then fall through...
case NS_KEY_DOWN:
case NS_KEY_UP:
{

View File

@ -157,12 +157,12 @@ public:
* Helpers called by various users of Canvas
*/
already_AddRefed<CanvasLayer> GetCanvasLayer(CanvasLayer *aOldLayer,
already_AddRefed<CanvasLayer> GetCanvasLayer(nsDisplayListBuilder* aBuilder,
CanvasLayer *aOldLayer,
LayerManager *aManager);
// Tell the Context that all the current rendering that it's
// invalidated has been displayed to the screen, so that it should
// start requesting invalidates again as needed.
// Any invalidates requested by the context have been processed by updating
// the window. Future changes to the canvas need to trigger more invalidation.
void MarkContextClean();
virtual nsXPCClassInfo* GetClassInfo();

View File

@ -112,6 +112,7 @@ CPPSRCS = \
nsHTMLTableSectionElement.cpp \
nsHTMLTextAreaElement.cpp \
nsHTMLTitleElement.cpp \
nsHTMLUnknownElement.cpp \
nsDOMValidityState.cpp \
nsIConstraintValidation.cpp \
$(NULL)

View File

@ -648,8 +648,11 @@ nsHTMLCanvasElement::InvalidateFrame(const gfxRect* damageRect)
if (!frame)
return;
frame->MarkLayersActive();
nsRect invalRect;
nsRect contentArea = frame->GetContentRect();
if (damageRect) {
nsRect contentArea(frame->GetContentRect());
nsIntSize size = GetWidthHeight();
// damageRect and size are in CSS pixels; contentArea is in appunits
@ -661,16 +664,16 @@ nsHTMLCanvasElement::InvalidateFrame(const gfxRect* damageRect)
realRect.RoundOut();
// then make it a nsRect
nsRect invalRect(realRect.X(), realRect.Y(),
realRect.Width(), realRect.Height());
// account for border/padding
invalRect.MoveBy(contentArea.TopLeft() - frame->GetPosition());
frame->InvalidateLayer(invalRect, nsDisplayItem::TYPE_CANVAS);
invalRect = nsRect(realRect.X(), realRect.Y(),
realRect.Width(), realRect.Height());
} else {
nsRect r(frame->GetContentRect() - frame->GetPosition());
frame->InvalidateLayer(r, nsDisplayItem::TYPE_CANVAS);
invalRect = nsRect(nsPoint(0, 0), contentArea.Size());
}
invalRect.MoveBy(contentArea.TopLeft() - frame->GetPosition());
Layer* layer = frame->InvalidateLayer(invalRect, nsDisplayItem::TYPE_CANVAS);
if (layer) {
static_cast<CanvasLayer*>(layer)->Updated();
}
}
@ -699,13 +702,14 @@ nsHTMLCanvasElement::GetIsOpaque()
}
already_AddRefed<CanvasLayer>
nsHTMLCanvasElement::GetCanvasLayer(CanvasLayer *aOldLayer,
nsHTMLCanvasElement::GetCanvasLayer(nsDisplayListBuilder* aBuilder,
CanvasLayer *aOldLayer,
LayerManager *aManager)
{
if (!mCurrentContext)
return nsnull;
return mCurrentContext->GetCanvasLayer(aOldLayer, aManager);
return mCurrentContext->GetCanvasLayer(aBuilder, aOldLayer, aManager);
}
void

View File

@ -95,34 +95,3 @@ NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLSpanElement)
NS_IMPL_ELEMENT_CLONE(nsHTMLSpanElement)
// ------------------------------------------------------------------
class nsHTMLUnknownElement : public nsHTMLSpanElement
{
public:
nsHTMLUnknownElement(already_AddRefed<nsINodeInfo> aNodeInfo);
NS_IMETHOD QueryInterface(REFNSIID aIID, void** aInstancePtr);
nsresult Clone(nsINodeInfo *aNodeInfo, nsINode **aResult) const;
virtual nsXPCClassInfo* GetClassInfo();
};
DOMCI_NODE_DATA(HTMLUnknownElement, nsHTMLUnknownElement)
NS_INTERFACE_MAP_BEGIN(nsHTMLUnknownElement)
NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(HTMLUnknownElement)
NS_INTERFACE_MAP_END_INHERITING(nsHTMLSpanElement)
nsHTMLUnknownElement::nsHTMLUnknownElement(already_AddRefed<nsINodeInfo> aNodeInfo)
: nsHTMLSpanElement(aNodeInfo)
{
}
NS_IMPL_NS_NEW_HTML_ELEMENT(Unknown)
NS_IMPL_ELEMENT_CLONE(nsHTMLUnknownElement)

View File

@ -0,0 +1,95 @@
/* -*- 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 Communicator client 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):
* Ms2ger <ms2ger@gmail.com>
*
* 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 "nsGenericHTMLElement.h"
#include "nsIDOMHTMLUnknownElement.h"
class nsHTMLUnknownElement : public nsGenericHTMLElement
, public nsIDOMHTMLUnknownElement
{
public:
nsHTMLUnknownElement(already_AddRefed<nsINodeInfo> aNodeInfo);
virtual ~nsHTMLUnknownElement();
// nsISupports
NS_DECL_ISUPPORTS_INHERITED
// nsIDOMNode
NS_FORWARD_NSIDOMNODE(nsGenericHTMLElement::)
// nsIDOMElement
NS_FORWARD_NSIDOMELEMENT(nsGenericHTMLElement::)
// nsIDOMHTMLElement
NS_FORWARD_NSIDOMHTMLELEMENT(nsGenericHTMLElement::)
virtual nsresult Clone(nsINodeInfo *aNodeInfo, nsINode **aResult) const;
virtual nsXPCClassInfo* GetClassInfo();
};
NS_IMPL_NS_NEW_HTML_ELEMENT(Unknown)
nsHTMLUnknownElement::nsHTMLUnknownElement(already_AddRefed<nsINodeInfo> aNodeInfo)
: nsGenericHTMLElement(aNodeInfo)
{
}
nsHTMLUnknownElement::~nsHTMLUnknownElement()
{
}
NS_IMPL_ADDREF_INHERITED(nsHTMLUnknownElement, nsGenericElement)
NS_IMPL_RELEASE_INHERITED(nsHTMLUnknownElement, nsGenericElement)
DOMCI_NODE_DATA(HTMLUnknownElement, nsHTMLUnknownElement)
// QueryInterface implementation for nsHTMLUnknownElement
NS_INTERFACE_TABLE_HEAD(nsHTMLUnknownElement)
NS_HTML_CONTENT_INTERFACE_TABLE1(nsHTMLUnknownElement,
nsIDOMHTMLUnknownElement)
NS_HTML_CONTENT_INTERFACE_TABLE_TO_MAP_SEGUE(nsHTMLUnknownElement,
nsGenericHTMLElement)
NS_HTML_CONTENT_INTERFACE_TABLE_TAIL_CLASSINFO(HTMLUnknownElement)
NS_IMPL_ELEMENT_CLONE(nsHTMLUnknownElement)

View File

@ -226,6 +226,7 @@ _TEST_FILES = \
test_bug557087-5.html \
test_bug557087-6.html \
test_bug586763.html \
test_bug587469.html \
test_bug598643.html \
test_bug596350.html \
test_bug600155.html \

View File

@ -263,6 +263,10 @@ for each (var tag in allTags) {
"Unexpected classname for " + tagName(tag));
is(node instanceof window[classInfoString], true,
tagName(tag) + " not an instance of " + classInfos[tag]);
is(node instanceof HTMLUnknownElement, false,
tagName(tag) + " is an instance of HTMLUnknownElement");
is(node instanceof Components.interfaces.nsIDOMHTMLUnknownElement, false,
tagName(tag) + " is an instance of nsIDOMHTMLUnknownElement");
// Check that each node QIs to all the things we expect it to QI to
for each (var iface in interfaces[tag].concat(interfacesNonClassinfo[tag])) {

View File

@ -0,0 +1,39 @@
<!-- Quirks -->
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=587469
-->
<head>
<title>Test for Bug 587469</title>
<script src="/MochiKit/packed.js"></script>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<script src="/tests/SimpleTest/EventUtils.js"></script>
<link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=587469">Mozilla Bug 587469</a>
<p id="display">
<map name=a></map>
<map name=a><area shape=rect coords=25,25,75,75 href=#fail></map>
<img usemap=#a src=image.png>
</p>
<div id="content" style="display: none">
</div>
<pre id="test">
<script type="application/javascript">
/** Test for Bug 587469 **/
SimpleTest.waitForExplicitFinish();
function finish() {
is(location.hash, "", "Should not have changed the hash.");
SimpleTest.finish();
}
SimpleTest.waitForFocus(function() {
synthesizeMouse(document.getElementsByTagName("img")[0], 50, 50, {});
setTimeout(finish, 50); // Sorry!
});
</script>
</pre>
</body>
</html>

View File

@ -1165,7 +1165,6 @@ nsHTMLDocument::GetImageMap(const nsAString& aMapName)
mImageMaps = new nsContentList(this, kNameSpaceID_XHTML, nsGkAtoms::map, nsGkAtoms::map);
}
nsIDOMHTMLMapElement* firstMatch = nsnull;
nsAutoString name;
PRUint32 i, n = mImageMaps->Length(PR_TRUE);
for (i = 0; i < n; ++i) {
@ -1187,27 +1186,11 @@ nsHTMLDocument::GetImageMap(const nsAString& aMapName)
}
if (match) {
// Quirk: if the first matching map is empty, remember it, but keep
// searching for a non-empty one, only use it if none was found (bug 264624).
if (mCompatMode == eCompatibility_NavQuirks) {
nsCOMPtr<nsIDOMHTMLCollection> mapAreas;
rv = map->GetAreas(getter_AddRefs(mapAreas));
if (NS_SUCCEEDED(rv) && mapAreas) {
PRUint32 length = 0;
mapAreas->GetLength(&length);
if (length == 0) {
if (!firstMatch) {
firstMatch = map;
}
continue;
}
}
}
return map;
}
}
return firstMatch;
return NULL;
}
void

View File

@ -71,6 +71,14 @@ nsSMILKeySpline::GetSplineValue(double aX) const
return CalcBezier(GetTForX(aX), mY1, mY2);
}
void
nsSMILKeySpline::GetSplineDerivativeValues(double aX, double& aDX, double& aDY) const
{
double t = GetTForX(aX);
aDX = GetSlope(t, mX1, mX2);
aDY = GetSlope(t, mY1, mY2);
}
void
nsSMILKeySpline::CalcSampleValues()
{

View File

@ -69,6 +69,8 @@ public:
*/
double GetSplineValue(double aX) const;
void GetSplineDerivativeValues(double aX, double& aDX, double& aDY) const;
private:
void
CalcSampleValues();

View File

@ -896,6 +896,10 @@ nsXBLPrototypeBinding::LocateInstance(nsIContent* aBoundElement,
binding = binding->GetBaseBinding();
}
NS_ABORT_IF_FALSE(binding, "Bug 620181 this is unexpected");
if (!binding)
return nsnull;
nsInsertionPointList* points = nsnull;
if (anonContent == copyParent)
binding->GetInsertionPointsFor(aBoundElement, &points);

View File

@ -316,6 +316,7 @@ txXPCOMExtensionFunctionCall::GetParamType(const nsXPTParamInfo &aParam,
return eOBJECT;
}
}
// FALLTHROUGH
default:
{
// XXX Error!

View File

@ -423,7 +423,7 @@ TestNode::Constrain(InstantiationSet& aInstantiations)
rv = FilterInstantiations(aInstantiations, &cantHandleYet);
if (NS_FAILED(rv)) return rv;
if ((mParent && ! aInstantiations.Empty()) || cantHandleYet) {
if (mParent && (!aInstantiations.Empty() || cantHandleYet)) {
// if we still have instantiations, or if the instantiations
// could not be filled in yet, then ride 'em on up to the
// parent to narrow them.

View File

@ -4843,6 +4843,12 @@ nsDocShell::SetIsActive(PRBool aIsActive)
if (pshell)
pshell->SetIsActive(aIsActive);
// Tell the window about it
nsCOMPtr<nsPIDOMWindow> win = do_QueryInterface(mScriptGlobal);
if (win) {
win->SetIsBackground(!aIsActive);
}
// Recursively tell all of our children
PRInt32 n = mChildList.Count();
for (PRInt32 i = 0; i < n; ++i) {

View File

@ -314,6 +314,7 @@
#include "nsIDOMNSHTMLTextAreaElement.h"
#include "nsIDOMHTMLTitleElement.h"
#include "nsIDOMHTMLUListElement.h"
#include "nsIDOMHTMLUnknownElement.h"
#include "nsIDOMMediaError.h"
#include "nsIDOMTimeRanges.h"
#include "nsIDOMHTMLSourceElement.h"
@ -2825,8 +2826,8 @@ nsDOMClassInfo::Init()
DOM_CLASSINFO_GENERIC_HTML_MAP_ENTRIES
DOM_CLASSINFO_MAP_END
DOM_CLASSINFO_MAP_BEGIN_NO_CLASS_IF(HTMLUnknownElement, nsIDOMHTMLElement)
DOM_CLASSINFO_MAP_ENTRY(nsIDOMHTMLElement)
DOM_CLASSINFO_MAP_BEGIN(HTMLUnknownElement, nsIDOMHTMLUnknownElement)
DOM_CLASSINFO_MAP_ENTRY(nsIDOMHTMLUnknownElement)
DOM_CLASSINFO_GENERIC_HTML_MAP_ENTRIES
DOM_CLASSINFO_MAP_END

View File

@ -272,9 +272,14 @@ static PRBool gDOMWindowDumpEnabled = PR_FALSE;
// The default shortest interval/timeout we permit
#define DEFAULT_MIN_TIMEOUT_VALUE 10 // 10ms
#define DEFAULT_MIN_BACKGROUND_TIMEOUT_VALUE 1000 // 1000ms
static PRInt32 gMinTimeoutValue;
static inline PRInt32 DOMMinTimeoutValue() {
return NS_MAX(gMinTimeoutValue, 0);
static PRInt32 gMinBackgroundTimeoutValue;
inline PRInt32
nsGlobalWindow::DOMMinTimeoutValue() const {
PRBool isBackground = !mOuterWindow || mOuterWindow->IsBackground();
return
NS_MAX(isBackground ? gMinBackgroundTimeoutValue : gMinTimeoutValue, 0);
}
// The number of nested timeouts before we start clamping. HTML5 says 1, WebKit
@ -746,7 +751,8 @@ nsPIDOMWindow::nsPIDOMWindow(nsPIDOMWindow *aOuterWindow)
mIsHandlingResizeEvent(PR_FALSE), mIsInnerWindow(aOuterWindow != nsnull),
mMayHavePaintEventListener(PR_FALSE), mMayHaveTouchEventListener(PR_FALSE),
mMayHaveAudioAvailableEventListener(PR_FALSE), mIsModalContentWindow(PR_FALSE),
mIsActive(PR_FALSE), mInnerWindow(nsnull), mOuterWindow(aOuterWindow),
mIsActive(PR_FALSE), mIsBackground(PR_FALSE),
mInnerWindow(nsnull), mOuterWindow(aOuterWindow),
// Make sure no actual window ends up with mWindowID == 0
mWindowID(++gNextWindowID), mHasNotifiedGlobalCreated(PR_FALSE)
{}
@ -895,6 +901,9 @@ nsGlobalWindow::nsGlobalWindow(nsGlobalWindow *aOuterWindow)
nsContentUtils::AddIntPrefVarCache("dom.min_timeout_value",
&gMinTimeoutValue,
DEFAULT_MIN_TIMEOUT_VALUE);
nsContentUtils::AddIntPrefVarCache("dom.min_background_timeout_value",
&gMinBackgroundTimeoutValue,
DEFAULT_MIN_BACKGROUND_TIMEOUT_VALUE);
}
if (gDumpFile == nsnull) {
@ -2458,6 +2467,10 @@ nsGlobalWindow::SetDocShell(nsIDocShell* aDocShell)
}
else NS_NewWindowRoot(this, getter_AddRefs(mChromeEventHandler));
}
PRBool docShellActive;
mDocShell->GetIsActive(&docShellActive);
mIsBackground = !docShellActive;
}
}
@ -4395,8 +4408,19 @@ nsGlobalWindow::SetFullScreen(PRBool aFullScreen)
mFullScreen = aFullScreen;
nsCOMPtr<nsIWidget> widget = GetMainWidget();
if (widget)
if (widget) {
PRBool visible;
widget->IsVisible(visible);
if (visible && aFullScreen)
widget->Show(PR_FALSE);
widget->MakeFullScreen(aFullScreen);
if (visible && aFullScreen) {
widget->Show(PR_TRUE);
nsIFocusManager* fm = nsFocusManager::GetFocusManager();
if (fm)
fm->SetActiveWindow(this);
}
}
return NS_OK;
}
@ -8731,18 +8755,14 @@ nsGlobalWindow::SetTimeoutOrInterval(nsIScriptTimeoutHandler *aHandler,
}
PRUint32 nestingLevel = sNestingLevel + 1;
if (interval < DOMMinTimeoutValue()) {
if (aIsInterval || nestingLevel >= DOM_CLAMP_TIMEOUT_NESTING_LEVEL) {
// Don't allow timeouts less than DOMMinTimeoutValue() from
// now...
interval = DOMMinTimeoutValue();;
}
else if (interval < 0) {
// Clamp negative intervals to 0.
interval = 0;
}
if (aIsInterval || nestingLevel >= DOM_CLAMP_TIMEOUT_NESTING_LEVEL) {
// Don't allow timeouts less than DOMMinTimeoutValue() from
// now...
interval = NS_MAX(interval, DOMMinTimeoutValue());
}
else if (interval < 0) {
// Clamp negative intervals to 0.
interval = 0;
}
NS_ASSERTION(interval >= 0, "DOMMinTimeoutValue() lies");

View File

@ -822,6 +822,8 @@ protected:
PRBool GetIsTabModalPromptAllowed();
inline PRInt32 DOMMinTimeoutValue() const;
// When adding new member variables, be careful not to create cycles
// through JavaScript. If there is any chance that a member variable
// could own objects that are implemented in JavaScript, then those

View File

@ -102,6 +102,16 @@ public:
return mIsActive;
}
void SetIsBackground(PRBool aIsBackground)
{
mIsBackground = aIsBackground;
}
PRBool IsBackground()
{
return mIsBackground;
}
nsPIDOMEventTarget* GetChromeEventHandler() const
{
return mChromeEventHandler;
@ -608,8 +618,14 @@ protected:
PRPackedBool mIsModalContentWindow;
// Tracks activation state that's used for :-moz-window-inactive.
// Only used on outer windows.
PRPackedBool mIsActive;
// Tracks whether our docshell is active. If it is, mIsBackground
// is false. Too bad we have so many different concepts of
// "active". Only used on outer windows.
PRPackedBool mIsBackground;
// And these are the references between inner and outer windows.
nsPIDOMWindow *mInnerWindow;
nsCOMPtr<nsPIDOMWindow> mOuterWindow;

View File

@ -117,6 +117,7 @@ SDK_XPIDLSRCS = \
XPIDLSRCS = \
nsIDOMHTMLCanvasElement.idl \
nsIDOMHTMLUnknownElement.idl \
nsIDOMNSHTMLDocument.idl \
nsIDOMNSHTMLElement.idl \
nsIDOMNSHTMLFormElement.idl \

View File

@ -0,0 +1,49 @@
/* -*- Mode: IDL; 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
* Ms2ger <ms2ger@gmail.com>.
* Portions created by the Initial Developer are Copyright (C) 2010
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either 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 "nsIDOMHTMLElement.idl"
/**
* The nsIDOMHTMLUnknownElement interface is the interface to an unknown HTML
* element.
*
* @see <http://www.whatwg.org/html/#htmlunknownelement>
*/
[scriptable, uuid(13d29c53-a9a6-45b8-bb69-e5294bb6e09e)]
interface nsIDOMHTMLUnknownElement : nsIDOMHTMLElement
{
};

View File

@ -88,6 +88,8 @@
#include "mozilla/dom/ExternalHelperAppParent.h"
#include "mozilla/dom/StorageParent.h"
#include "mozilla/Services.h"
#include "mozilla/unused.h"
#include "nsAccelerometer.h"
#include "nsIMemoryReporter.h"
@ -108,6 +110,7 @@ using namespace mozilla::ipc;
using namespace mozilla::net;
using namespace mozilla::places;
using mozilla::MonitorAutoEnter;
using mozilla::unused; // heh
using base::KillProcess;
namespace mozilla {
@ -157,39 +160,38 @@ ContentParent::GetSingleton(PRBool aForceNew)
if (!gSingleton && aForceNew) {
nsRefPtr<ContentParent> parent = new ContentParent();
if (parent) {
nsCOMPtr<nsIObserverService> obs =
do_GetService("@mozilla.org/observer-service;1");
if (obs) {
if (NS_SUCCEEDED(obs->AddObserver(parent, "xpcom-shutdown",
PR_FALSE))) {
gSingleton = parent;
nsCOMPtr<nsIPrefBranch2> prefs
(do_GetService(NS_PREFSERVICE_CONTRACTID));
if (prefs) {
prefs->AddObserver("", parent, PR_FALSE);
}
}
obs->AddObserver(
parent, NS_IPC_IOSERVICE_SET_OFFLINE_TOPIC, PR_FALSE);
obs->AddObserver(parent, "child-memory-reporter-request", PR_FALSE);
obs->AddObserver(parent, "memory-pressure", PR_FALSE);
}
nsCOMPtr<nsIThreadInternal>
threadInt(do_QueryInterface(NS_GetCurrentThread()));
if (threadInt) {
threadInt->GetObserver(getter_AddRefs(parent->mOldObserver));
threadInt->SetObserver(parent);
}
if (obs) {
obs->NotifyObservers(nsnull, "ipc:content-created", nsnull);
}
}
gSingleton = parent;
parent->Init();
}
return gSingleton;
}
void
ContentParent::Init()
{
nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService();
if (obs) {
obs->AddObserver(this, "xpcom-shutdown", PR_FALSE);
obs->AddObserver(this, NS_IPC_IOSERVICE_SET_OFFLINE_TOPIC, PR_FALSE);
obs->AddObserver(this, "child-memory-reporter-request", PR_FALSE);
obs->AddObserver(this, "memory-pressure", PR_FALSE);
}
nsCOMPtr<nsIPrefBranch2> prefs(do_GetService(NS_PREFSERVICE_CONTRACTID));
if (prefs) {
prefs->AddObserver("", this, PR_FALSE);
}
nsCOMPtr<nsIThreadInternal>
threadInt(do_QueryInterface(NS_GetCurrentThread()));
if (threadInt) {
threadInt->GetObserver(getter_AddRefs(mOldObserver));
threadInt->SetObserver(this);
}
if (obs) {
obs->NotifyObservers(nsnull, "ipc:content-created", nsnull);
}
}
void
ContentParent::OnChannelConnected(int32 pid)
{
@ -237,8 +239,7 @@ ContentParent::ActorDestroy(ActorDestroyReason why)
{
nsCOMPtr<nsIThreadObserver>
kungFuDeathGrip(static_cast<nsIThreadObserver*>(this));
nsCOMPtr<nsIObserverService>
obs(do_GetService("@mozilla.org/observer-service;1"));
nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService();
if (obs) {
obs->RemoveObserver(static_cast<nsIObserver*>(this), "xpcom-shutdown");
obs->RemoveObserver(static_cast<nsIObserver*>(this), "memory-pressure");
@ -537,7 +538,7 @@ ContentParent::Observe(nsISupports* aSubject,
// listening for memory pressure event
if (!strcmp(aTopic, "memory-pressure")) {
SendFlushMemory(nsDependentString(aData));
unused << SendFlushMemory(nsDependentString(aData));
}
// listening for remotePrefs...
else if (!strcmp(aTopic, "nsPref:changed")) {
@ -1041,7 +1042,7 @@ ContentParent::RecvRemoveAccelerometerListener()
NS_IMETHODIMP
ContentParent::HandleEvent(nsIDOMGeoPosition* postion)
{
SendGeolocationUpdate(GeoPosition(postion));
unused << SendGeolocationUpdate(GeoPosition(postion));
return NS_OK;
}
@ -1088,8 +1089,7 @@ ContentParent::OnAccelerationChange(nsIAcceleration *aAcceleration)
aAcceleration->GetY(&y);
aAcceleration->GetZ(&z);
mozilla::dom::ContentParent::GetSingleton()->
SendAccelerationChanged(x, y, z);
unused << SendAccelerationChanged(x, y, z);
return NS_OK;
}

View File

@ -118,6 +118,8 @@ private:
ContentParent();
virtual ~ContentParent();
void Init();
virtual PBrowserParent* AllocPBrowser(const PRUint32& aChromeFlags);
virtual bool DeallocPBrowser(PBrowserParent* frame);

View File

@ -964,6 +964,13 @@ TabChildGlobal::TabChildGlobal(TabChild* aTabChild)
aTabChild->GetJSContext());
}
TabChildGlobal::~TabChildGlobal()
{
if (mListenerManager) {
mListenerManager->Disconnect();
}
}
NS_IMPL_CYCLE_COLLECTION_CLASS(TabChildGlobal)
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(TabChildGlobal,

View File

@ -94,6 +94,7 @@ class TabChildGlobal : public nsDOMEventTargetHelper,
{
public:
TabChildGlobal(TabChild* aTabChild);
~TabChildGlobal();
NS_DECL_ISUPPORTS_INHERITED
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(TabChildGlobal, nsDOMEventTargetHelper)
NS_FORWARD_SAFE_NSIFRAMEMESSAGEMANAGER(mMessageManager)

View File

@ -99,7 +99,3 @@ ifndef GNU_CC
DEFINES += -D_TIME_H=1
endif
endif
ifeq ($(OS_ARCH), OpenVMS)
DEFINES += -DGENERIC_MOTIF_REDEFINES
endif

View File

@ -974,9 +974,6 @@ nsFind::Find(const PRUnichar *aPatText, nsIDOMRange* aSearchRange,
// (only matters when we're matching)
PRBool inWhitespace = PR_FALSE;
// Have we extended a search past the endpoint?
PRBool continuing = PR_FALSE;
// Place to save the range start point in case we find a match:
nsCOMPtr<nsIDOMNode> matchAnchorNode;
PRInt32 matchAnchorOffset = 0;
@ -1004,7 +1001,7 @@ nsFind::Find(const PRUnichar *aPatText, nsIDOMRange* aSearchRange,
{
// Are we in the middle of a match?
// If so, try again with continuation.
if (matchAnchorNode && !continuing)
if (matchAnchorNode)
NextNode(aSearchRange, aStartPoint, aEndPoint, PR_TRUE);
// Reset the iterator, so this nsFind will be usable if
@ -1125,7 +1122,7 @@ nsFind::Find(const PRUnichar *aPatText, nsIDOMRange* aSearchRange,
// Have we gone past the endpoint yet?
// If we have, and we're not in the middle of a match, return.
if (mIterNode == endNode && !continuing &&
if (mIterNode == endNode &&
((mFindBackward && (findex < endOffset)) ||
(!mFindBackward && (findex > endOffset))))
{
@ -1278,11 +1275,6 @@ nsFind::Find(const PRUnichar *aPatText, nsIDOMRange* aSearchRange,
#ifdef DEBUG_FIND
printf("NOT: %c == %c\n", c, patc);
#endif
// If we were continuing, then this ends our search.
if (continuing) {
ResetAll();
return NS_OK;
}
// If we didn't match, go back to the beginning of patStr,
// and set findex back to the next char after

View File

@ -1176,13 +1176,20 @@ public:
virtual void Initialize(const Data& aData) = 0;
/**
* CONSTRUCTION PHASE ONLY
* Notify this CanvasLayer that the rectangle given by aRect
* has been updated, and any work that needs to be done
* to bring the contents from the Surface/GLContext to the
* Layer in preparation for compositing should be performed.
* Notify this CanvasLayer that the canvas surface contents have
* changed (or will change) before the next transaction.
*/
virtual void Updated(const nsIntRect& aRect) = 0;
void Updated() { mDirty = PR_TRUE; }
/**
* Register a callback to be called at the end of each transaction.
*/
typedef void (* DidTransactionCallback)(void* aClosureData);
void SetDidTransactionCallback(DidTransactionCallback aCallback, void* aClosureData)
{
mCallback = aCallback;
mCallbackData = aClosureData;
}
/**
* CONSTRUCTION PHASE ONLY
@ -1207,15 +1214,30 @@ public:
protected:
CanvasLayer(LayerManager* aManager, void* aImplData)
: Layer(aManager, aImplData), mFilter(gfxPattern::FILTER_GOOD) {}
: Layer(aManager, aImplData),
mCallback(nsnull), mCallbackData(nsnull), mFilter(gfxPattern::FILTER_GOOD),
mDirty(PR_FALSE) {}
virtual nsACString& PrintInfo(nsACString& aTo, const char* aPrefix);
void FireDidTransactionCallback()
{
if (mCallback) {
mCallback(mCallbackData);
}
}
/**
* 0, 0, canvaswidth, canvasheight
*/
nsIntRect mBounds;
DidTransactionCallback mCallback;
void* mCallbackData;
gfxPattern::GraphicsFilter mFilter;
/**
* Set to true in Updated(), cleared during a transaction.
*/
PRPackedBool mDirty;
};
}

View File

@ -893,7 +893,6 @@ public:
}
virtual void Initialize(const Data& aData);
virtual void Updated(const nsIntRect& aRect);
virtual void Paint(gfxContext* aContext);
virtual void PaintWithOpacity(gfxContext* aContext,
@ -904,13 +903,12 @@ protected:
{
return static_cast<BasicLayerManager*>(mManager);
}
void UpdateSurface();
nsRefPtr<gfxASurface> mSurface;
nsRefPtr<mozilla::gl::GLContext> mGLContext;
PRUint32 mCanvasFramebuffer;
nsIntRect mUpdatedRect;
PRPackedBool mGLBufferIsPremultiplied;
PRPackedBool mNeedsYFlip;
};
@ -920,8 +918,6 @@ BasicCanvasLayer::Initialize(const Data& aData)
{
NS_ASSERTION(mSurface == nsnull, "BasicCanvasLayer::Initialize called twice!");
mUpdatedRect.Empty();
if (aData.mSurface) {
mSurface = aData.mSurface;
NS_ASSERTION(aData.mGLContext == nsnull,
@ -941,12 +937,11 @@ BasicCanvasLayer::Initialize(const Data& aData)
}
void
BasicCanvasLayer::Updated(const nsIntRect& aRect)
BasicCanvasLayer::UpdateSurface()
{
NS_ASSERTION(mUpdatedRect.IsEmpty(),
"CanvasLayer::Updated called more than once in a transaction!");
mUpdatedRect.UnionRect(mUpdatedRect, aRect);
if (!mDirty)
return;
mDirty = PR_FALSE;
if (mGLContext) {
nsRefPtr<gfxImageSurface> isurf =
@ -976,9 +971,6 @@ BasicCanvasLayer::Updated(const nsIntRect& aRect)
if (currentFramebuffer != mCanvasFramebuffer)
mGLContext->fBindFramebuffer(LOCAL_GL_FRAMEBUFFER, mCanvasFramebuffer);
// For simplicity, we read the entire framebuffer for now -- in
// the future we should use mUpdatedRect, though with WebGL we don't
// have an easy way to generate one.
mGLContext->ReadPixelsIntoImageSurface(0, 0,
mBounds.width, mBounds.height,
isurf);
@ -997,15 +989,13 @@ BasicCanvasLayer::Updated(const nsIntRect& aRect)
// stick our surface into mSurface, so that the Paint() path is the same
mSurface = isurf;
}
// sanity
NS_ASSERTION(mUpdatedRect.IsEmpty() || mBounds.Contains(mUpdatedRect),
"CanvasLayer: Updated rect bigger than bounds!");
}
void
BasicCanvasLayer::Paint(gfxContext* aContext)
{
UpdateSurface();
FireDidTransactionCallback();
PaintWithOpacity(aContext, GetEffectiveOpacity());
}
@ -1037,8 +1027,6 @@ BasicCanvasLayer::PaintWithOpacity(gfxContext* aContext,
if (mNeedsYFlip) {
aContext->SetMatrix(m);
}
mUpdatedRect.Empty();
}
class BasicReadbackLayer : public ReadbackLayer,
@ -2557,9 +2545,6 @@ public:
virtual void Initialize(const Data& aData);
virtual void Updated(const nsIntRect& aRect)
{}
virtual already_AddRefed<gfxSharedImageSurface>
Swap(gfxSharedImageSurface* newFront);

View File

@ -114,8 +114,12 @@ CanvasLayerD3D10::Initialize(const Data& aData)
}
void
CanvasLayerD3D10::Updated(const nsIntRect& aRect)
CanvasLayerD3D10::UpdateSurface()
{
if (!mDirty)
return;
mDirty = PR_FALSE;
if (mIsD2DTexture) {
mSurface->Flush();
return;
@ -161,9 +165,6 @@ CanvasLayerD3D10::Updated(const nsIntRect& aRect)
if (currentFramebuffer != mCanvasFramebuffer)
mGLContext->fBindFramebuffer(LOCAL_GL_FRAMEBUFFER, mCanvasFramebuffer);
// For simplicity, we read the entire framebuffer for now -- in
// the future we should use aRect, though with WebGL we don't
// have an easy way to generate one.
nsRefPtr<gfxImageSurface> tmpSurface =
new gfxImageSurface(destination,
gfxIntSize(mBounds.width, mBounds.height),
@ -189,10 +190,10 @@ CanvasLayerD3D10::Updated(const nsIntRect& aRect)
mTexture->Unmap(0);
} else if (mSurface) {
RECT r;
r.left = aRect.x;
r.top = aRect.y;
r.right = aRect.XMost();
r.bottom = aRect.YMost();
r.left = 0;
r.top = 0;
r.right = mBounds.width;
r.bottom = mBounds.height;
D3D10_MAPPED_TEXTURE2D map;
HRESULT hr = mTexture->Map(0, D3D10_MAP_WRITE_DISCARD, 0, &map);
@ -202,17 +203,13 @@ CanvasLayerD3D10::Updated(const nsIntRect& aRect)
return;
}
PRUint8 *startBits;
PRUint32 sourceStride;
nsRefPtr<gfxImageSurface> dstSurface;
dstSurface = new gfxImageSurface((unsigned char*)map.pData,
gfxIntSize(aRect.width, aRect.height),
gfxIntSize(mBounds.width, mBounds.height),
map.RowPitch,
gfxASurface::ImageFormatARGB32);
nsRefPtr<gfxContext> ctx = new gfxContext(dstSurface);
ctx->Translate(gfxPoint(-aRect.x, -aRect.y));
ctx->SetOperator(gfxContext::OPERATOR_SOURCE);
ctx->SetSource(mSurface);
ctx->Paint();
@ -230,9 +227,11 @@ CanvasLayerD3D10::GetLayer()
void
CanvasLayerD3D10::RenderLayer()
{
if (!mTexture) {
UpdateSurface();
FireDidTransactionCallback();
if (!mTexture)
return;
}
nsIntRect visibleRect = mVisibleRegion.GetBounds();

View File

@ -64,7 +64,6 @@ public:
// CanvasLayer implementation
virtual void Initialize(const Data& aData);
virtual void Updated(const nsIntRect& aRect);
// LayerD3D10 implementation
virtual Layer* GetLayer();
@ -73,6 +72,8 @@ public:
private:
typedef mozilla::gl::GLContext GLContext;
void UpdateSurface();
nsRefPtr<gfxASurface> mSurface;
nsRefPtr<GLContext> mGLContext;
nsRefPtr<ID3D10Texture2D> mTexture;

View File

@ -79,8 +79,12 @@ CanvasLayerD3D9::Initialize(const Data& aData)
}
void
CanvasLayerD3D9::Updated(const nsIntRect& aRect)
CanvasLayerD3D9::UpdateSurface()
{
if (!mDirty)
return;
mDirty = PR_FALSE;
if (!mTexture) {
CreateTexture();
NS_WARNING("CanvasLayerD3D9::Updated called but no texture present!");
@ -117,9 +121,6 @@ CanvasLayerD3D9::Updated(const nsIntRect& aRect)
if (currentFramebuffer != mCanvasFramebuffer)
mGLContext->fBindFramebuffer(LOCAL_GL_FRAMEBUFFER, mCanvasFramebuffer);
// For simplicity, we read the entire framebuffer for now -- in
// the future we should use aRect, though with WebGL we don't
// have an easy way to generate one.
nsRefPtr<gfxImageSurface> tmpSurface =
new gfxImageSurface(destination,
gfxIntSize(mBounds.width, mBounds.height),
@ -145,10 +146,10 @@ CanvasLayerD3D9::Updated(const nsIntRect& aRect)
mTexture->UnlockRect(0);
} else if (mSurface) {
RECT r;
r.left = aRect.x;
r.top = aRect.y;
r.right = aRect.XMost();
r.bottom = aRect.YMost();
r.left = mBounds.x;
r.top = mBounds.y;
r.right = mBounds.XMost();
r.bottom = mBounds.YMost();
D3DLOCKED_RECT lockedRect;
HRESULT hr = mTexture->LockRect(0, &lockedRect, &r, 0);
@ -158,16 +159,10 @@ CanvasLayerD3D9::Updated(const nsIntRect& aRect)
return;
}
PRUint8 *startBits;
PRUint32 sourceStride;
nsRefPtr<gfxImageSurface> sourceSurface;
if (mSurface->GetType() == gfxASurface::SurfaceTypeWin32) {
sourceSurface = mSurface->GetAsImageSurface();
startBits = sourceSurface->Data() + sourceSurface->Stride() * aRect.y +
aRect.x * 4;
sourceStride = sourceSurface->Stride();
} else if (mSurface->GetType() == gfxASurface::SurfaceTypeImage) {
sourceSurface = static_cast<gfxImageSurface*>(mSurface.get());
if (sourceSurface->Format() != gfxASurface::ImageFormatARGB32 &&
@ -176,31 +171,28 @@ CanvasLayerD3D9::Updated(const nsIntRect& aRect)
mTexture->UnlockRect(0);
return;
}
startBits = sourceSurface->Data() + sourceSurface->Stride() * aRect.y +
aRect.x * 4;
sourceStride = sourceSurface->Stride();
} else {
sourceSurface = new gfxImageSurface(gfxIntSize(aRect.width, aRect.height),
sourceSurface = new gfxImageSurface(gfxIntSize(mBounds.width, mBounds.height),
gfxASurface::ImageFormatARGB32);
nsRefPtr<gfxContext> ctx = new gfxContext(sourceSurface);
ctx->Translate(gfxPoint(-aRect.x, -aRect.y));
ctx->SetOperator(gfxContext::OPERATOR_SOURCE);
ctx->SetSource(mSurface);
ctx->Paint();
startBits = sourceSurface->Data();
sourceStride = sourceSurface->Stride();
}
PRUint8 *startBits = sourceSurface->Data();
PRUint32 sourceStride = sourceSurface->Stride();
if (sourceSurface->Format() != gfxASurface::ImageFormatARGB32) {
mHasAlpha = false;
} else {
mHasAlpha = true;
}
for (int y = 0; y < aRect.height; y++) {
for (int y = 0; y < mBounds.height; y++) {
memcpy((PRUint8*)lockedRect.pBits + lockedRect.Pitch * y,
startBits + sourceStride * y,
aRect.width * 4);
mBounds.width * 4);
}
mTexture->UnlockRect(0);
@ -216,9 +208,11 @@ CanvasLayerD3D9::GetLayer()
void
CanvasLayerD3D9::RenderLayer()
{
if (!mTexture) {
Updated(mBounds);
}
UpdateSurface();
FireDidTransactionCallback();
if (!mTexture)
return;
/*
* We flip the Y axis here, note we can only do this because we are in

View File

@ -66,7 +66,6 @@ public:
// CanvasLayer implementation
virtual void Initialize(const Data& aData);
virtual void Updated(const nsIntRect& aRect);
// LayerD3D9 implementation
virtual Layer* GetLayer();
@ -79,6 +78,8 @@ public:
protected:
typedef mozilla::gl::GLContext GLContext;
void UpdateSurface();
nsRefPtr<gfxASurface> mSurface;
nsRefPtr<GLContext> mGLContext;
nsRefPtr<IDirect3DTexture9> mTexture;

View File

@ -172,7 +172,6 @@ struct OpPaintThebesBuffer {
struct OpPaintCanvas {
PLayer layer;
nsIntRect updated;
Shmem newFrontBuffer;
};

View File

@ -301,7 +301,6 @@ ShadowLayerForwarder::PaintedCanvas(ShadowableLayer* aCanvas,
gfxSharedImageSurface* aNewFrontSurface)
{
mTxn->AddPaint(OpPaintCanvas(NULL, Shadow(aCanvas),
nsIntRect(),
aNewFrontSurface->GetShmem()));
}

View File

@ -422,7 +422,7 @@ ShadowLayersParent::RecvUpdate(const InfallibleTArray<Edit>& cset,
newFront.forget();
}
canvas->Updated(op.updated());
canvas->Updated();
replyv.push_back(OpBufferSwap(shadow, NULL,
newBack->GetShmem()));

View File

@ -135,19 +135,18 @@ CanvasLayerOGL::MakeTexture()
}
void
CanvasLayerOGL::Updated(const nsIntRect& aRect)
CanvasLayerOGL::UpdateSurface()
{
if (!mDirty)
return;
mDirty = PR_FALSE;
if (mDestroyed || mDelayedUpdates) {
return;
}
NS_ASSERTION(mUpdatedRect.IsEmpty(),
"CanvasLayer::Updated called more than once during a transaction!");
mOGLManager->MakeCurrent();
mUpdatedRect.UnionRect(mUpdatedRect, aRect);
if (mCanvasGLContext &&
mCanvasGLContext->GetContextType() == gl()->GetContextType())
{
@ -157,41 +156,36 @@ CanvasLayerOGL::Updated(const nsIntRect& aRect)
MakeTexture();
}
} else {
if (!mTexture) {
mUpdatedRect = mBounds;
}
nsRefPtr<gfxASurface> updatedAreaSurface;
if (mCanvasSurface) {
updatedAreaSurface = mCanvasSurface;
} else if (mCanvasGLContext) {
nsRefPtr<gfxImageSurface> updatedAreaImageSurface =
new gfxImageSurface(gfxIntSize(mUpdatedRect.width, mUpdatedRect.height),
new gfxImageSurface(gfxIntSize(mBounds.width, mBounds.height),
gfxASurface::ImageFormatARGB32);
mCanvasGLContext->ReadPixelsIntoImageSurface(mUpdatedRect.x, mUpdatedRect.y,
mUpdatedRect.width,
mUpdatedRect.height,
mCanvasGLContext->ReadPixelsIntoImageSurface(0, 0,
mBounds.width,
mBounds.height,
updatedAreaImageSurface);
updatedAreaSurface = updatedAreaImageSurface;
}
mLayerProgram =
gl()->UploadSurfaceToTexture(updatedAreaSurface,
mUpdatedRect,
mBounds,
mTexture,
false,
mUpdatedRect.TopLeft());
nsIntPoint(0, 0));
}
// sanity
NS_ASSERTION(mBounds.Contains(mUpdatedRect),
"CanvasLayer: Updated rect bigger than bounds!");
}
void
CanvasLayerOGL::RenderLayer(int aPreviousDestination,
const nsIntPoint& aOffset)
{
UpdateSurface();
FireDidTransactionCallback();
mOGLManager->MakeCurrent();
// XXX We're going to need a different program depending on if
@ -248,8 +242,6 @@ CanvasLayerOGL::RenderLayer(int aPreviousDestination,
if (useGLContext) {
gl()->UnbindTex2DOffscreen(mCanvasGLContext);
}
mUpdatedRect.Empty();
}

View File

@ -66,7 +66,6 @@ public:
// CanvasLayer implementation
virtual void Initialize(const Data& aData);
virtual void Updated(const nsIntRect& aRect);
// LayerOGL implementation
virtual void Destroy();
@ -75,6 +74,8 @@ public:
const nsIntPoint& aOffset);
protected:
void UpdateSurface();
nsRefPtr<gfxASurface> mCanvasSurface;
nsRefPtr<GLContext> mCanvasGLContext;
gl::ShaderProgramType mLayerProgram;
@ -82,8 +83,6 @@ protected:
void MakeTexture();
GLuint mTexture;
nsIntRect mUpdatedRect;
PRPackedBool mDelayedUpdates;
PRPackedBool mGLBufferIsPremultiplied;
PRPackedBool mNeedsYFlip;

View File

@ -205,10 +205,12 @@ nsRect& nsRect::ScaleRoundOut(float aXScale, float aYScale)
return *this;
}
#ifdef DEBUG
static bool IsFloatInteger(float aFloat)
{
return fabs(aFloat - NS_round(aFloat)) < 1e-6;
}
#endif
nsRect& nsRect::ExtendForScaling(float aXMult, float aYMult)
{

View File

@ -120,6 +120,7 @@ GLXLibrary::EnsureInitialized()
{ (PRFuncPtr*) &xGetCurrentContext, { "glXGetCurrentContext", NULL } },
/* functions introduced in GLX 1.1 */
{ (PRFuncPtr*) &xQueryExtensionsString, { "glXQueryExtensionsString", NULL } },
{ (PRFuncPtr*) &xGetClientString, { "glXGetClientString", NULL } },
{ (PRFuncPtr*) &xQueryServerString, { "glXQueryServerString", NULL } },
{ NULL, { NULL } }
};
@ -171,14 +172,30 @@ GLXLibrary::EnsureInitialized()
}
Display *display = DefaultXDisplay();
PRBool ignoreBlacklist = PR_GetEnv("MOZ_GLX_IGNORE_BLACKLIST") != nsnull;
if (!ignoreBlacklist) {
// ATI's libGL (at least the one provided with 11.2 drivers) segfaults
// when querying server info if the server does not have the
// ATIFGLEXTENSION extension.
const char *clientVendor = xGetClientString(display, GLX_VENDOR);
if (clientVendor && strcmp(clientVendor, "ATI") == 0) {
printf("[GLX] The ATI proprietary libGL.so.1 is currently "
"blacklisted to avoid crashes that happen in some "
"situations. If you would like to bypass this, set the "
"MOZ_GLX_IGNORE_BLACKLIST environment variable.\n");
return PR_FALSE;
}
}
int screen = DefaultScreen(display);
const char *vendor;
const char *serverVendor;
const char *serverVersionStr;
const char *extensionsStr;
// this scope is covered by a ScopedXErrorHandler to catch X errors in GLX calls,
// see bug 632867 comment 3: Mesa versions up to 7.10 cause a BadLength error during the first GLX call
// when the server GLX version < 1.3.
// This scope is covered by a ScopedXErrorHandler to catch X errors in GLX
// calls. See bug 632867 comment 3: Mesa versions up to 7.10 cause a
// BadLength error during the first GLX call that communicates with the
// server when the server GLX version < 1.3.
{
ScopedXErrorHandler xErrorHandler;
@ -188,15 +205,14 @@ GLXLibrary::EnsureInitialized()
return PR_FALSE;
}
vendor = xQueryServerString(display, screen, GLX_VENDOR);
serverVendor = xQueryServerString(display, screen, GLX_VENDOR);
serverVersionStr = xQueryServerString(display, screen, GLX_VERSION);
PRBool IsDriverBlacklisted = !vendor || // it's been reported that a VNC X server was returning vendor=null
PRBool IsDriverBlacklisted = !serverVendor || // it's been reported that a VNC X server was returning serverVendor=null
!serverVersionStr ||
strcmp(vendor, "NVIDIA Corporation");
strcmp(serverVendor, "NVIDIA Corporation");
if (IsDriverBlacklisted &&
!PR_GetEnv("MOZ_GLX_IGNORE_BLACKLIST"))
if (IsDriverBlacklisted && !ignoreBlacklist)
{
printf("[GLX] your GL driver is currently blocked. If you would like to bypass this, "
"define the MOZ_GLX_IGNORE_BLACKLIST environment variable.\n");
@ -245,9 +261,11 @@ GLXLibrary::EnsureInitialized()
return PR_FALSE;
}
gIsATI = vendor && DoesVendorStringMatch(vendor, "ATI");
gIsChromium = (vendor && DoesVendorStringMatch(vendor, "Chromium")) ||
(serverVersionStr && DoesVendorStringMatch(serverVersionStr, "Chromium"));
gIsATI = serverVendor && DoesVendorStringMatch(serverVendor, "ATI");
gIsChromium = (serverVendor &&
DoesVendorStringMatch(serverVendor, "Chromium")) ||
(serverVersionStr &&
DoesVendorStringMatch(serverVersionStr, "Chromium"));
mInitialized = PR_TRUE;
return PR_TRUE;

View File

@ -89,6 +89,9 @@ public:
typedef const char * (GLAPIENTRY * PFNGLXQUERYEXTENSIONSSTRING) (Display *,
int);
PFNGLXQUERYEXTENSIONSSTRING xQueryExtensionsString;
typedef const char * (GLAPIENTRY * PFNGLXGETCLIENTSTRING) (Display *,
int);
PFNGLXGETCLIENTSTRING xGetClientString;
typedef const char * (GLAPIENTRY * PFNGLXQUERYSERVERSTRING) (Display *,
int,
int);

View File

@ -367,7 +367,7 @@ CreateTempXlibSurface (gfxASurface *destination, nsIntSize size,
target_visual = gfxXlibSurface::FindVisual(screen, imageFormat);
Display *dpy = DisplayOfScreen(screen);
if (target_visual) {
target_format = XRenderFindVisualFormat(dpy, visual);
target_format = XRenderFindVisualFormat(dpy, target_visual);
} else {
target_format =
gfxXlibSurface::FindRenderFormat(dpy, imageFormat);

View File

@ -47,7 +47,7 @@
Begin of Item 0000
Format 0
srcBegin = 0020
srcEnd = 007E
srcEnd = 007F
destBegin = 0020
End of Item 0000
@ -231,7 +231,7 @@ End of Item 0013
0x1210, 0x1122, 0x2122, 0x2212, 0x1221, 0x0000,
/*-------------------------------------------------------*/
/* Offset=0x000A Start of MapCell Array */
/* 0000 */ 0x0020, 0x007E, 0x0020,
/* 0000 */ 0x0020, 0x007F, 0x0020,
/* 0001 */ 0x00A0, 0x00FF, 0x0000,
/* 0002 */ 0x0131, 0x0000, 0x00F5,
/* 0003 */ 0x0152, 0x0153, 0x0060,

View File

@ -47,7 +47,7 @@
Begin of Item 0000
Format 0
srcBegin = 0020
srcEnd = 007E
srcEnd = 007F
destBegin = 0020
End of Item 0000
@ -97,7 +97,7 @@ End of Item 0001
0x0010,
/*-------------------------------------------------------*/
/* Offset=0x0005 Start of MapCell Array */
/* 0000 */ 0x0020, 0x007E, 0x0020,
/* 0000 */ 0x0020, 0x007F, 0x0020,
/* 0001 */ 0x0080, 0x00FF, 0x0000,
/*-------------------------------------------------------*/
/* Offset=0x000B Start of MappingTable */

View File

@ -46,7 +46,7 @@
Begin of Item 0000
Format 0
srcBegin = 0000
srcEnd = 007E
srcEnd = 007F
destBegin = 0000
End of Item 0000
@ -215,7 +215,7 @@ End of Item 0010
0x0000, 0x2210, 0x1211, 0x1111, 0x0002,
/*-------------------------------------------------------*/
/* Offset=0x0009 Start of MapCell Array */
/* 0000 */ 0x0000, 0x007E, 0x0000,
/* 0000 */ 0x0000, 0x007F, 0x0000,
/* 0001 */ 0x0418, 0x041F, 0x00E9,
/* 0002 */ 0x0438, 0x043F, 0x00C9,
/* 0003 */ 0x2553, 0x2561, 0x00A4,

View File

@ -46,7 +46,7 @@
Begin of Item 0000
Format 0
srcBegin = 0000
srcEnd = 007E
srcEnd = 007F
destBegin = 0000
End of Item 0000
@ -136,7 +136,7 @@ End of Item 0007
0x0000, 0x1210, 0x0000,
/*-------------------------------------------------------*/
/* Offset=0x0007 Start of MapCell Array */
/* 0000 */ 0x0000, 0x007E, 0x0000,
/* 0000 */ 0x0000, 0x007F, 0x0000,
/* 0001 */ 0x00A4, 0x00B2, 0x2553,
/* 0002 */ 0x00B4, 0x00BE, 0x2562,
/* 0003 */ 0x00C9, 0x00D0, 0x0438,

View File

@ -46,7 +46,7 @@
Begin of Item 0000
Format 0
srcBegin = 0000
srcEnd = 007E
srcEnd = 007F
destBegin = 0000
End of Item 0000
@ -209,7 +209,7 @@ End of Item 000E
0x1000, 0x1112, 0x1112, 0x0211,
/*-------------------------------------------------------*/
/* Offset=0x0008 Start of MapCell Array */
/* 0000 */ 0x0000, 0x007E, 0x0000,
/* 0000 */ 0x0000, 0x007F, 0x0000,
/* 0001 */ 0x0418, 0x041F, 0x00E9,
/* 0002 */ 0x0438, 0x043F, 0x00C9,
/* 0003 */ 0x00A0, 0x00B7, 0x0000,

View File

@ -46,7 +46,7 @@
Begin of Item 0000
Format 0
srcBegin = 0000
srcEnd = 007E
srcEnd = 007F
destBegin = 0000
End of Item 0000
@ -110,7 +110,7 @@ End of Item 0003
0x1000, 0x0000,
/*-------------------------------------------------------*/
/* Offset=0x0006 Start of MapCell Array */
/* 0000 */ 0x0000, 0x007E, 0x0000,
/* 0000 */ 0x0000, 0x007F, 0x0000,
/* 0001 */ 0x00C9, 0x00D0, 0x0438,
/* 0002 */ 0x00E9, 0x00F0, 0x0418,
/* 0003 */ 0x0080, 0x00FF, 0x0000,

View File

@ -46,7 +46,7 @@
Begin of Item 0000
Format 0
srcBegin = 0000
srcEnd = 007E
srcEnd = 007F
destBegin = 0000
End of Item 0000
@ -167,7 +167,7 @@ End of Item 0008
0x1210, 0x1121, 0x0002,
/*-------------------------------------------------------*/
/* Offset=0x0007 Start of MapCell Array */
/* 0000 */ 0x0000, 0x007E, 0x0000,
/* 0000 */ 0x0000, 0x007F, 0x0000,
/* 0001 */ 0x00A0, 0x017E, 0x0000,
/* 0002 */ 0x02C7, 0x0000, 0x00FF,
/* 0003 */ 0x2013, 0x2026, 0x00DF,

View File

@ -46,7 +46,7 @@
Begin of Item 0000
Format 0
srcBegin = 0000
srcEnd = 007E
srcEnd = 007F
destBegin = 0000
End of Item 0000
@ -96,7 +96,7 @@ End of Item 0001
0x0010,
/*-------------------------------------------------------*/
/* Offset=0x0005 Start of MapCell Array */
/* 0000 */ 0x0000, 0x007E, 0x0000,
/* 0000 */ 0x0000, 0x007F, 0x0000,
/* 0001 */ 0x0080, 0x00FF, 0x0000,
/*-------------------------------------------------------*/
/* Offset=0x000B Start of MappingTable */

View File

@ -47,7 +47,7 @@
Begin of Item 0000
Format 0
srcBegin = 0020
srcEnd = 007E
srcEnd = 007F
destBegin = 0020
End of Item 0000
@ -237,7 +237,7 @@ End of Item 0013
0x1210, 0x1211, 0x1221, 0x2122, 0x2212, 0x0000,
/*-------------------------------------------------------*/
/* Offset=0x000A Start of MapCell Array */
/* 0000 */ 0x0020, 0x007E, 0x0020,
/* 0000 */ 0x0020, 0x007F, 0x0020,
/* 0001 */ 0x00A0, 0x0111, 0x0000,
/* 0002 */ 0x0131, 0x0000, 0x00F5,
/* 0003 */ 0x0152, 0x0153, 0x0072,

View File

@ -47,7 +47,7 @@
Begin of Item 0000
Format 0
srcBegin = 0020
srcEnd = 007E
srcEnd = 007F
destBegin = 0020
End of Item 0000
@ -97,7 +97,7 @@ End of Item 0001
0x0010,
/*-------------------------------------------------------*/
/* Offset=0x0005 Start of MapCell Array */
/* 0000 */ 0x0020, 0x007E, 0x0020,
/* 0000 */ 0x0020, 0x007F, 0x0020,
/* 0001 */ 0x0080, 0x00FF, 0x0000,
/*-------------------------------------------------------*/
/* Offset=0x000B Start of MappingTable */

View File

@ -47,7 +47,7 @@
Begin of Item 0000
Format 0
srcBegin = 0020
srcEnd = 007E
srcEnd = 007F
destBegin = 0020
End of Item 0000
@ -200,7 +200,7 @@ End of Item 0010
0x1000, 0x1122, 0x2211, 0x2122, 0x0001,
/*-------------------------------------------------------*/
/* Offset=0x0009 Start of MapCell Array */
/* 0000 */ 0x0020, 0x007E, 0x0020,
/* 0000 */ 0x0020, 0x007F, 0x0020,
/* 0001 */ 0x0410, 0x042F, 0x0080,
/* 0002 */ 0x0430, 0x044E, 0x00E0,
/* 0003 */ 0x00A0, 0x00BB, 0x0000,

View File

@ -47,7 +47,7 @@
Begin of Item 0000
Format 0
srcBegin = 0020
srcEnd = 007E
srcEnd = 007F
destBegin = 0020
End of Item 0000
@ -109,7 +109,7 @@ End of Item 0004
0x1000, 0x0002,
/*-------------------------------------------------------*/
/* Offset=0x0006 Start of MapCell Array */
/* 0000 */ 0x0020, 0x007E, 0x0020,
/* 0000 */ 0x0020, 0x007F, 0x0020,
/* 0001 */ 0x0080, 0x009F, 0x0410,
/* 0002 */ 0x00E0, 0x00FE, 0x0430,
/* 0003 */ 0x00A0, 0x00DF, 0x0000,

View File

@ -47,7 +47,7 @@
Begin of Item 0000
Format 0
srcBegin = 0000
srcEnd = 007E
srcEnd = 007F
destBegin = 0000
End of Item 0000
@ -180,7 +180,7 @@ End of Item 000D
0x0000, 0x2100, 0x1111, 0x0022,
/*-------------------------------------------------------*/
/* Offset=0x0008 Start of MapCell Array */
/* 0000 */ 0x0000, 0x007E, 0x0000,
/* 0000 */ 0x0000, 0x007F, 0x0000,
/* 0001 */ 0x0905, 0x090B, 0x00A4,
/* 0002 */ 0x0915, 0x092F, 0x00B3,
/* 0003 */ 0x0930, 0x0939, 0x00CF,

View File

@ -47,7 +47,7 @@
Begin of Item 0000
Format 0
srcBegin = 0000
srcEnd = 007E
srcEnd = 007F
destBegin = 0000
End of Item 0000
@ -142,7 +142,7 @@ End of Item 0008
0x0000, 0x1100, 0x0001,
/*-------------------------------------------------------*/
/* Offset=0x0007 Start of MapCell Array */
/* 0000 */ 0x0000, 0x007E, 0x0000,
/* 0000 */ 0x0000, 0x007F, 0x0000,
/* 0001 */ 0x00A4, 0x00AA, 0x0905,
/* 0002 */ 0x00B3, 0x00CD, 0x0915,
/* 0003 */ 0x00CF, 0x00D8, 0x0930,

View File

@ -47,7 +47,7 @@
Begin of Item 0000
Format 0
srcBegin = 0020
srcEnd = 007E
srcEnd = 007F
destBegin = 0020
End of Item 0000
@ -163,7 +163,7 @@ End of Item 0009
0x2110, 0x2211, 0x0012,
/*-------------------------------------------------------*/
/* Offset=0x0007 Start of MapCell Array */
/* 0000 */ 0x0020, 0x007E, 0x0020,
/* 0000 */ 0x0020, 0x007F, 0x0020,
/* 0001 */ 0x00A0, 0x00C9, 0x0000,
/* 0002 */ 0x00D6, 0x00FC, 0x002A,
/* 0003 */ 0x0153, 0x0000, 0x00CF,

View File

@ -47,7 +47,7 @@
Begin of Item 0000
Format 0
srcBegin = 0020
srcEnd = 007E
srcEnd = 007F
destBegin = 0020
End of Item 0000
@ -97,7 +97,7 @@ End of Item 0001
0x0010,
/*-------------------------------------------------------*/
/* Offset=0x0005 Start of MapCell Array */
/* 0000 */ 0x0020, 0x007E, 0x0020,
/* 0000 */ 0x0020, 0x007F, 0x0020,
/* 0001 */ 0x0080, 0x00FF, 0x0000,
/*-------------------------------------------------------*/
/* Offset=0x000B Start of MappingTable */

View File

@ -47,7 +47,7 @@
Begin of Item 0000
Format 0
srcBegin = 0000
srcEnd = 007E
srcEnd = 007F
destBegin = 0000
End of Item 0000
@ -179,7 +179,7 @@ End of Item 000D
0x0000, 0x2100, 0x1111, 0x0022,
/*-------------------------------------------------------*/
/* Offset=0x0008 Start of MapCell Array */
/* 0000 */ 0x0000, 0x007E, 0x0000,
/* 0000 */ 0x0000, 0x007F, 0x0000,
/* 0001 */ 0x0A85, 0x0A8B, 0x00A4,
/* 0002 */ 0x0A95, 0x0AA8, 0x00B3,
/* 0003 */ 0x0AAA, 0x0AAF, 0x00C8,

Some files were not shown because too many files have changed in this diff Show More