diff --git a/accessible/src/base/NotificationController.cpp b/accessible/src/base/NotificationController.cpp index 3da90f36078..38c56881dc2 100644 --- a/accessible/src/base/NotificationController.cpp +++ b/accessible/src/base/NotificationController.cpp @@ -54,8 +54,10 @@ NotificationController::NotificationController(nsDocAccessible* aDocument, nsIPresShell* aPresShell) : mObservingState(eNotObservingRefresh), mDocument(aDocument), - mPresShell(aPresShell) + mPresShell(aPresShell), mTreeConstructedState(eTreeConstructionPending) { + // Schedule initial accessible tree construction. + ScheduleProcessing(); } NotificationController::~NotificationController() @@ -129,6 +131,10 @@ NotificationController::ScheduleContentInsertion(nsAccessible* aContainer, nsIContent* aStartChildNode, nsIContent* aEndChildNode) { + // Ignore content insertions until we constructed accessible tree. + if (mTreeConstructedState == eTreeConstructionPending) + return; + nsRefPtr insertion = new ContentInsertion(mDocument, aContainer, aStartChildNode, aEndChildNode); @@ -177,6 +183,15 @@ NotificationController::WillRefresh(mozilla::TimeStamp aTime) // insertions or generic notifications. mObservingState = eRefreshProcessingForUpdate; + // Initial accessible tree construction. + if (mTreeConstructedState == eTreeConstructionPending) { + mTreeConstructedState = eTreeConstructed; + mDocument->CacheChildrenInSubtree(mDocument); + + NS_ASSERTION(mContentInsertions.Length() == 0, + "Pending content insertions while initial accessible tree isn't created!"); + } + // Process content inserted notifications to update the tree. Process other // notifications like DOM events and then flush event queue. If any new // notifications are queued during this processing then they will be processed diff --git a/accessible/src/base/NotificationController.h b/accessible/src/base/NotificationController.h index 360607d4ec8..c203e69f343 100644 --- a/accessible/src/base/NotificationController.h +++ b/accessible/src/base/NotificationController.h @@ -256,6 +256,17 @@ private: */ nsIPresShell* mPresShell; + /** + * Indicate whether initial construction of the document's accessible tree + * performed or pending. When the document accessible is created then + * we construct its initial accessible tree. + */ + enum eTreeConstructedState { + eTreeConstructed, + eTreeConstructionPending + }; + eTreeConstructedState mTreeConstructedState; + /** * Storage for content inserted notification information. */ diff --git a/browser/app/blocklist.xml b/browser/app/blocklist.xml index 5c9e083754b..69485de3ea6 100644 --- a/browser/app/blocklist.xml +++ b/browser/app/blocklist.xml @@ -56,6 +56,9 @@ + + + @@ -64,8 +67,11 @@ + + + - + diff --git a/browser/base/content/browser-appmenu.inc b/browser/base/content/browser-appmenu.inc index 44c60e7f582..95d0bfdc367 100644 --- a/browser/base/content/browser-appmenu.inc +++ b/browser/base/content/browser-appmenu.inc @@ -39,17 +39,20 @@ # ***** END LICENSE BLOCK ***** -#else - onpopupshowing="updateEditUIVisibility();"> + gSyncUI.updateUI(); #endif + return; + } + if (event.target.parentNode.parentNode.parentNode.parentNode == this) + this._currentPopup = event.target;"> + command="cmd_newNavigatorTab"> + command="cmd_print"> + command="Browser:ShowAllBookmarks"> + command="Browser:ShowAllHistory"> .menu-text, -.split-menuitem-menu > .menu-accel-container { +.splitmenu-menuitem[iconic="true"] { + -moz-binding: url("chrome://global/content/bindings/menu.xml#menuitem-iconic"); +} + +.splitmenu-menu > .menu-text, +:-moz-any(.splitmenu-menu, .splitmenu-menuitem) > .menu-accel-container { display: none; } @@ -279,7 +284,7 @@ panel[noactions] > richlistbox > richlistitem[type~="action"] > .ac-url-box > .a visibility: visible; } -#urlbar:not([actiontype]) > #urlbar-display { +#urlbar:not([actiontype]) > #urlbar-display-box { display: none; } diff --git a/browser/base/content/browser.xul b/browser/base/content/browser.xul index 1c27a05443b..dee77ac37a5 100644 --- a/browser/base/content/browser.xul +++ b/browser/base/content/browser.xul @@ -571,7 +571,9 @@ -