Merge with mc. Manually merged TabChild.h and nsIFrameLoader.idl
authorDoug Turner <dougt@dougt.org>
Wed, 15 Sep 2010 15:17:54 -0700
changeset 54116 090ab98643349a18aa5adb05b7c0fc29ab4c1bf0
parent 54115 af33e0ee0168e0441c6bc4de575408e770f462fc (current diff)
parent 53978 77e11b95175faa0b37166d68311b62b8c398e13d (diff)
child 54117 6a177cc98bac9e0702c728a699d7ad6d47af7b05
push id15768
push userdougt@mozilla.com
push dateThu, 16 Sep 2010 01:40:23 +0000
treeherdermozilla-central@cdb90b48f19f [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone2.0b7pre
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge with mc. Manually merged TabChild.h and nsIFrameLoader.idl
browser/themes/gnomestripe/browser/browser.css
browser/themes/pinstripe/browser/sync-16-throbber.png
browser/themes/winstripe/browser/sync-16-throbber.png
content/base/public/nsIFrameLoader.idl
content/base/src/nsFrameLoader.cpp
dom/ipc/PBrowser.ipdl
dom/ipc/TabChild.cpp
dom/ipc/TabChild.h
dom/ipc/TabParent.cpp
dom/ipc/TabParent.h
widget/src/windows/nsWindow.cpp
--- a/browser/base/content/syncSetup.js
+++ b/browser/base/content/syncSetup.js
@@ -724,39 +724,39 @@ var gSyncSetup = {
               ")/1000000 " +
             ")/86400) AS daysOfHistory ");
 
         if (stm.step())
           daysOfHistory = stm.getInt32(0);
         document.getElementById("historyCount").value =
           PluralForm.get(daysOfHistory,
                          this._stringBundle.GetStringFromName("historyDaysCount.label"))
-                             .replace("#1", daysOfHistory);
+                             .replace("%S", daysOfHistory);
 
         // bookmarks
         let bookmarks = 0;
         stm = db.createStatement(
           "SELECT count(*) AS bookmarks " +
           "FROM moz_bookmarks b " +
           "LEFT JOIN moz_bookmarks t ON " +
           "b.parent = t.id WHERE b.type = 1 AND t.parent <> :tag");
         stm.params.tag = Weave.Svc.Bookmark.tagsFolder;
         if (stm.executeStep())
           bookmarks = stm.row.bookmarks;
         document.getElementById("bookmarkCount").value =
           PluralForm.get(bookmarks,
                          this._stringBundle.GetStringFromName("bookmarksCount.label"))
-                             .replace("#1", bookmarks);
+                             .replace("%S", bookmarks);
 
         // passwords
         let logins = Weave.Svc.Login.getAllLogins({});
         document.getElementById("passwordCount").value =
           PluralForm.get(logins.length,
                          this._stringBundle.GetStringFromName("passwordsCount.label"))
-                             .replace("#1", logins.length);
+                             .replace("%S", logins.length);
         this._case1Setup = true;
         break;
       case 2:
         if (this._case2Setup)
           break;
         let count = 0;
         function appendNode(label) {
           let box = document.getElementById("clientList");
@@ -774,17 +774,17 @@ var gSyncSetup = {
           // Only show the first several client names
           if (++count <= 5)
             appendNode(name);
         }
         if (count > 5) {
           let label =
             PluralForm.get(count - 5,
                            this._stringBundle.GetStringFromName("additionalClientCount.label"))
-                               .replace("#1", count - 5);
+                               .replace("%S", count - 5);
           appendNode(label);
         }
         this._case2Setup = true;
         break;
     }
 
     return true;
   },
--- a/browser/components/preferences/advanced.xul
+++ b/browser/components/preferences/advanced.xul
@@ -238,21 +238,21 @@
               <label id="actualCacheSize" flex="1"/>
               <button id="clearCacheButton" icon="clear"
                       label="&clearCacheNow.label;" accesskey="&clearCacheNow.accesskey;"
                       oncommand="gAdvancedPane.clearCache();"/>
             </hbox>
             <checkbox preference="browser.cache.disk.smart_size.enabled"
                       id="allowSmartSize" flex="1"
                       onsyncfrompreference="return gAdvancedPane.readSmartSizeEnabled();"
-                      label="&smartSizeCache.label;"/>
+                      label="&smartSizeCache.label;" accesskey="&smartSizeCache.accesskey;"/>
             <hbox align="center" class="indent">
               <label id="useCacheBefore" control="cacheSize"
                      accesskey="&useCacheBefore.accesskey;" value="&useCacheBefore.label;"/>
-              <textbox id="cacheSize" type="number" size="2"
+              <textbox id="cacheSize" type="number" size="4" max="1024"
                        preference="browser.cache.disk.capacity"
                        onsyncfrompreference="return gAdvancedPane.readCacheSize();"
                        onsynctopreference="return gAdvancedPane.writeCacheSize();"
                        aria-labelledby="useCacheBefore cacheSize useCacheAfter"/>
               <label id="useCacheAfter" flex="1">&useCacheAfter.label;</label>
             </hbox>
             <hbox align="center">
               <checkbox id="offlineNotify" flex="1"
--- a/browser/locales/en-US/chrome/browser/preferences/advanced.dtd
+++ b/browser/locales/en-US/chrome/browser/preferences/advanced.dtd
@@ -47,16 +47,17 @@
   &useCacheBefore.label  [ textbox for cache size in MB ]   &useCacheAfter.label;
 -->
 <!ENTITY useCacheBefore.label            "Use up to">
 <!ENTITY useCacheBefore.accesskey        "U">
 <!ENTITY useCacheAfter.label             "MB of space for the cache">
 <!ENTITY clearCacheNow.label             "Clear Now">
 <!ENTITY clearCacheNow.accesskey         "C">
 <!ENTITY smartSizeCache.label            "Let &brandShortName; manage the size of my cache">
+<!ENTITY smartSizeCache.accesskey        "L">
 
 <!ENTITY updateTab.label                 "Update">
 
 <!ENTITY autoCheck.label                 "Automatically check for updates to:">
 <!ENTITY enableAppUpdate.label           "&brandShortName;">
 <!ENTITY enableAppUpdate.accesskey       "F">
 <!ENTITY enableAddonsUpdate2.label       "Add-ons">
 <!ENTITY enableAddonsUpdate2.accesskey   "n">
old mode 100755
new mode 100644
index 5987b361d8ea075ee8e029ea37bdb464e1e45550..abff24bd5db4b3b1ab3d95ed9c66450155028c46
GIT binary patch
literal 3529
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
DK8e!{
old mode 100755
new mode 100644
index 791ce76a0c0bcff52d81c8da373ba7bf6755bff5..e5b020ee918fc281415d2f907d3d666f582f66e9
GIT binary patch
literal 5851
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
--- a/browser/themes/gnomestripe/browser/browser.css
+++ b/browser/themes/gnomestripe/browser/browser.css
@@ -677,34 +677,29 @@ toolbar[mode="full"] .toolbarbutton-1 > 
 }
 
 #fullscreen-button {
   list-style-image: url("moz-icon://stock/gtk-fullscreen?size=toolbar");
 }
 
 #zoom-out-button {
   list-style-image: url("moz-icon://stock/gtk-zoom-out?size=toolbar");
-
+}
 #zoom-in-button {
   list-style-image: url("moz-icon://stock/gtk-zoom-in?size=toolbar");
 }
 
 /* sync button */
-#sync-button {
-  list-style-image: url("chrome://browser/skin/sync-16.png");
+ #sync-button {
+  -moz-image-region: rect(0px 144px 24px 120px);
 }
 
 #sync-button[status="active"] {
-  list-style-image: url("chrome://browser/skin/sync-16-throbber.png");
-}
-
-toolbar:not([iconsize="small"]) #sync-button > .toolbarbutton-icon {
-  margin: 1px;
-  width: 16px;
-  height: 16px;
+  list-style-image: url("chrome://browser/skin/sync-24-throbber.png");
+  -moz-image-region: rect(0px 24px 24px 0px);
 }
 
 /* 16px primary toolbar buttons */
 toolbar[iconsize="small"] .toolbarbutton-1:not([type="menu-button"]) {
   -moz-box-orient: vertical;
   min-width: 0;
   list-style-image: url("chrome://browser/skin/Toolbar-small.png");
 }
@@ -833,16 +828,24 @@ toolbar[iconsize="small"] #fullscreen-bu
 toolbar[iconsize="small"] #zoom-out-button {
   list-style-image: url("moz-icon://stock/gtk-zoom-out?size=menu");
 }
 
 toolbar[iconsize="small"] #zoom-in-button {
   list-style-image: url("moz-icon://stock/gtk-zoom-in?size=menu");
 }
 
+toolbar[iconsize="small"] #sync-button {
+  -moz-image-region: rect(0px 96px 16px 80px);
+}
+toolbar[iconsize="small"] #sync-button[status="active"] {
+  list-style-image: url("chrome://browser/skin/sync-16-throbber.png");
+  -moz-image-region: rect(0px 16px 16px 0px);
+}
+
 /* Fullscreen window controls */
 #window-controls {
   -moz-box-align: start;
   padding: 0;
   border-left: 2px solid;
   -moz-border-left-colors: ThreeDHighlight ThreeDShadow;
 }
 
--- a/browser/themes/gnomestripe/browser/jar.mn
+++ b/browser/themes/gnomestripe/browser/jar.mn
@@ -82,16 +82,17 @@ browser.jar:
   skin/classic/browser/tabview/new-tab.png            (tabview/new-tab.png)
   skin/classic/browser/tabview/search.png             (tabview/search.png)  
   skin/classic/browser/tabview/stack-expander.png     (tabview/stack-expander.png)
   skin/classic/browser/tabview/tabview.png            (tabview/tabview.png)
   skin/classic/browser/tabview/tabview.css            (tabview/tabview.css)
 #ifdef MOZ_SERVICES_SYNC
   skin/classic/browser/sync-16-throbber.png
   skin/classic/browser/sync-16.png
+  skin/classic/browser/sync-24-throbber.png
   skin/classic/browser/sync-32.png
   skin/classic/browser/sync-bg.png
   skin/classic/browser/sync-desktopIcon.png
   skin/classic/browser/sync-mobileIcon.png
   skin/classic/browser/syncSetup.css
   skin/classic/browser/syncCommon.css
   skin/classic/browser/syncQuota.css
 #endif
index 049c83f765798c9a6411af54b0c13f1e93b02597..d6f801aab3441847486fd74a9355f8f911b9417a
GIT binary patch
literal 10365
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
new file mode 100644
index 0000000000000000000000000000000000000000..5587174de0ff2dac2731367105477de704d61c35
GIT binary patch
literal 15774
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
index d0ccdb02c1a5048a0a095a71d23f87236d3a61f8..345f3c75054b09b77083b8a7b9c06e5740cf0f26
GIT binary patch
literal 6386
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
--- a/browser/themes/pinstripe/browser/browser.css
+++ b/browser/themes/pinstripe/browser/browser.css
@@ -695,31 +695,26 @@ toolbar[mode="icons"] #zoom-in-button {
 
 #zoom-out-button:-moz-locale-dir(rtl),
 #zoom-in-button:-moz-locale-dir(ltr) {
   border-top-left-radius: 0;
   border-bottom-left-radius: 0;
 }
 
 /* sync button */
-
+ 
 #sync-button {
-  list-style-image: url("chrome://browser/skin/sync-16.png");
+  -moz-image-region: rect(0, 440px, 20px, 420px);
 }
 
 #sync-button[status="active"] {
-  list-style-image: url("chrome://browser/skin/sync-16-throbber.png");
+  list-style-image: url("chrome://browser/skin/sync-throbber.png");
+  -moz-image-region: rect(0, 20px, 20px, 0px);
 }
-
-toolbar:not([iconsize="small"]) #sync-button > .toolbarbutton-icon {
-  margin: 1px;
-  width: 16px;
-  height: 16px;
-}
-
+ 
 /* ----- FULLSCREEN WINDOW CONTROLS ----- */
 
 #minimize-button,
 #close-button,
 #fullscreen-button ~ #window-controls > #restore-button {
   display: none;
 }
 
--- a/browser/themes/pinstripe/browser/jar.mn
+++ b/browser/themes/pinstripe/browser/jar.mn
@@ -120,17 +120,17 @@ browser.jar:
   skin/classic/browser/tabview/edit-light.png               (tabview/edit-light.png)
   skin/classic/browser/tabview/edit.png                     (tabview/edit.png)
   skin/classic/browser/tabview/new-tab.png                  (tabview/new-tab.png)
   skin/classic/browser/tabview/search.png                   (tabview/search.png)
   skin/classic/browser/tabview/stack-expander.png           (tabview/stack-expander.png)
   skin/classic/browser/tabview/tabview.png                  (tabview/tabview.png)
   skin/classic/browser/tabview/tabview.css                  (tabview/tabview.css)
 #ifdef MOZ_SERVICES_SYNC
-  skin/classic/browser/sync-16-throbber.png
+  skin/classic/browser/sync-throbber.png
   skin/classic/browser/sync-16.png
   skin/classic/browser/sync-32.png
   skin/classic/browser/sync-bg.png
   skin/classic/browser/sync-desktopIcon.png
   skin/classic/browser/sync-mobileIcon.png
   skin/classic/browser/syncSetup.css
   skin/classic/browser/syncCommon.css
   skin/classic/browser/syncQuota.css
deleted file mode 100644
index 049c83f765798c9a6411af54b0c13f1e93b02597..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
new file mode 100644
index 0000000000000000000000000000000000000000..cc8619f41bad61840ac04290c43a2e4eda7ee052
GIT binary patch
literal 7896
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
index bd0e484e140dfce26672525349e6795e606144c9..2aa9046bd74574a0641bf19acb4471d17408dcee
GIT binary patch
literal 10238
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
--- a/browser/themes/winstripe/browser/browser.css
+++ b/browser/themes/winstripe/browser/browser.css
@@ -907,32 +907,27 @@ toolbar:not([iconsize="small"])[mode="ic
 }
 
 #zoom-out-button:-moz-locale-dir(rtl),
 #zoom-in-button:-moz-locale-dir(ltr) {
   border-top-left-radius: 0;
   border-bottom-left-radius: 0;
 }
 
-/* sync button */
-
+ /* sync button */
+ 
 #sync-button {
-  list-style-image: url("chrome://browser/skin/sync-16.png");
+  -moz-image-region: rect(0, 324px, 18px, 306px);
 }
 
 #sync-button[status="active"] {
-  list-style-image: url("chrome://browser/skin/sync-16-throbber.png");
+  list-style-image: url("chrome://browser/skin/sync-throbber.png");
+  -moz-image-region: rect(0, 18px, 18px, 0);
 }
-
-toolbar:not([iconsize="small"]) #sync-button > .toolbarbutton-icon {
-  margin: 1px;
-  width: 16px;
-  height: 16px;
-}
-
+ 
 /* ::::: fullscreen window controls ::::: */
 
 #minimize-button,
 #restore-button,
 #close-button {
   list-style-image: url("chrome://global/skin/icons/windowControls.png");
   padding: 0;
 }
--- a/browser/themes/winstripe/browser/jar.mn
+++ b/browser/themes/winstripe/browser/jar.mn
@@ -99,17 +99,17 @@ browser.jar:
         skin/classic/browser/tabview/edit-light.png                 (tabview/edit-light.png)
         skin/classic/browser/tabview/edit.png                       (tabview/edit.png)
         skin/classic/browser/tabview/new-tab.png                    (tabview/new-tab.png)
         skin/classic/browser/tabview/search.png                     (tabview/search.png)
         skin/classic/browser/tabview/stack-expander.png             (tabview/stack-expander.png)
         skin/classic/browser/tabview/tabview.png                    (tabview/tabview.png)
         skin/classic/browser/tabview/tabview.css                    (tabview/tabview.css)
 #ifdef MOZ_SERVICES_SYNC
-        skin/classic/browser/sync-16-throbber.png
+        skin/classic/browser/sync-throbber.png
         skin/classic/browser/sync-16.png
         skin/classic/browser/sync-32.png
         skin/classic/browser/sync-bg.png
         skin/classic/browser/sync-desktopIcon.png
         skin/classic/browser/sync-mobileIcon.png
         skin/classic/browser/syncSetup.css
         skin/classic/browser/syncCommon.css
         skin/classic/browser/syncQuota.css
@@ -215,17 +215,17 @@ browser.jar:
         skin/classic/aero/browser/tabview/edit-light.png             (tabview/edit-light.png)
         skin/classic/aero/browser/tabview/edit.png                   (tabview/edit.png)
         skin/classic/aero/browser/tabview/new-tab.png                (tabview/new-tab.png)
         skin/classic/aero/browser/tabview/search.png                 (tabview/search.png)
         skin/classic/aero/browser/tabview/stack-expander.png         (tabview/stack-expander.png)
         skin/classic/aero/browser/tabview/tabview.png                (tabview/tabview.png)
         skin/classic/aero/browser/tabview/tabview.css                (tabview/tabview.css)
 #ifdef MOZ_SERVICES_SYNC
-        skin/classic/aero/browser/sync-16-throbber.png
+        skin/classic/aero/browser/sync-throbber.png
         skin/classic/aero/browser/sync-16.png
         skin/classic/aero/browser/sync-32.png
         skin/classic/aero/browser/sync-bg.png
         skin/classic/aero/browser/sync-desktopIcon.png
         skin/classic/aero/browser/sync-mobileIcon.png
         skin/classic/aero/browser/syncSetup.css
         skin/classic/aero/browser/syncCommon.css
         skin/classic/aero/browser/syncQuota.css
deleted file mode 100644
index 049c83f765798c9a6411af54b0c13f1e93b02597..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
new file mode 100644
index 0000000000000000000000000000000000000000..d25490b4faa7d215db750a20d2f4b17b1954f1b8
GIT binary patch
literal 10362
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
Fe*mthyX*h}
--- a/content/base/public/nsIFrameLoader.idl
+++ b/content/base/public/nsIFrameLoader.idl
@@ -36,29 +36,35 @@
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 #include "nsISupports.idl"
 
 interface nsIDocShell;
 interface nsIURI;
+interface nsIWebProgress;
 interface nsIFrame;
 interface nsIChromeFrameMessageManager;
 interface nsIVariant;
 
-[scriptable, uuid(afb86369-d183-4bc4-9fce-26cd314a4ac0)]
+[scriptable, uuid(65d2c9e2-852c-48cf-a95d-9b82f1273c15)]
 interface nsIFrameLoader : nsISupports
 {
   /**
    * Get the docshell from the frame loader.
    */
   readonly attribute nsIDocShell docShell;
 
   /**
+   * Get the nsIWebProgress from the frame loader, allowing listener registration.
+   */
+  readonly attribute nsIWebProgress webProgress;
+
+  /**
    * Start loading the frame. This method figures out what to load
    * from the owner content in the frame loader.
    */
   void loadFrame();
 
   /**
    * Loads the specified URI in this frame. Behaves identically to loadFrame,
    * except that this method allows specifying the URI to load.
--- a/content/base/src/nsFrameLoader.cpp
+++ b/content/base/src/nsFrameLoader.cpp
@@ -407,16 +407,44 @@ nsFrameLoader::GetDocShell(nsIDocShell *
   }
 
   *aDocShell = mDocShell;
   NS_IF_ADDREF(*aDocShell);
 
   return NS_OK;
 }
 
+NS_IMETHODIMP
+nsFrameLoader::GetWebProgress(nsIWebProgress **aWebProgress)
+{
+  nsresult rv;
+  *aWebProgress = nsnull;
+#ifdef MOZ_IPC
+  if (mRemoteFrame) {
+    if (!mRemoteBrowser) {
+      TryNewProcess();
+    }
+    if (!mRemoteBrowser) {
+      return NS_ERROR_UNEXPECTED;
+    }
+    *aWebProgress = mRemoteBrowser;
+    NS_ADDREF(*aWebProgress);
+    return NS_OK;
+  }
+#endif
+
+  nsCOMPtr<nsIDocShell> shell;
+  rv = GetDocShell(getter_AddRefs(shell));
+  if (NS_SUCCEEDED(rv)) {
+    nsCOMPtr<nsIWebProgress> progress(do_QueryInterface(shell));
+    progress.swap(*aWebProgress);
+  }
+  return rv;
+}
+
 void
 nsFrameLoader::Finalize()
 {
   nsCOMPtr<nsIBaseWindow> base_win(do_QueryInterface(mDocShell));
   if (base_win) {
     base_win->Destroy();
   }
   mDocShell = nsnull;
--- a/content/base/test/chrome/Makefile.in
+++ b/content/base/test/chrome/Makefile.in
@@ -40,24 +40,27 @@ srcdir    = @srcdir@
 VPATH     = @srcdir@
 relativesrcdir  = content/base/test/chrome
 
 include $(DEPTH)/config/autoconf.mk
 include $(topsrcdir)/config/rules.mk
 
 _TEST_FILES = \
     bug421622-referer.sjs \
+    bug514705.html \
     $(NULL)
 
 _CHROME_FILES = \
     test_bug206691.xul \
     test_bug421622.xul \
     test_bug429785.xul \
     test_bug430050.xul \
     test_bug467123.xul \
+    test_bug514705.xul \
+    bug514705_helper.xul \
     test_title.xul \
     title_window.xul \
     test_bug549682.xul \
     file_bug549682.xul \
     $(NULL)
 
 libs:: $(_TEST_FILES)
 	$(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/_tests/testing/mochitest/tests/$(relativesrcdir)
new file mode 100644
--- /dev/null
+++ b/content/base/test/chrome/bug514705.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<html>
+<head>
+  <title>bug514705.html</title>
+</head>
+
+<body>
+bug514705.html
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/content/base/test/chrome/bug514705_helper.xul
@@ -0,0 +1,90 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
+<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
+
+<window title="Bug514705 helper"
+        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+        onload="RunTest();">
+
+  <script type="application/javascript">
+  <![CDATA[
+    var Ci = Components.interfaces;
+    var imports = [ "SimpleTest", "is", "isnot", "ok" ];
+    for each (var import in imports) {
+      window[import] = window.opener.wrappedJSObject[import];
+    }
+    var locationChanged = false;
+    var progressChanged = false;
+    var refreshAttempted = false;
+
+    var listener = {
+      onLocationChange: function(webProgress, request, location) {
+        locationChanged = true;
+      },
+      onProgressChange: function(webProgress, request, curSelfProgress, 
+                                 maxSelfProgress, curTotalProgress,
+                                 maxTotalProgress) {
+      },
+      onSecurityChange: function(webProgress, request, state) { 
+      },
+      onStateChange: function(webProgress, request, stateFlags, status) { 
+ 
+        if ((stateFlags & Ci.nsIWebProgressListener.STATE_STOP) &&
+            (stateFlags & Ci.nsIWebProgressListener.STATE_IS_WINDOW)) {
+          var test = SimpleTest;
+          ok (locationChanged, "onLocationChanged was called.");
+          ok (progressChanged, "onProgressChanged64 was called.");
+          ok (refreshAttempted, "onRefreshAttempted was called.");
+          ok (true, "onStateChange was called.");
+          window.close();
+          test.finish();
+        }
+      },
+      onStatusChange: function(webProgress, request, status, message) { 
+      },
+      onProgressChange64 : function(webProgress, request, curSelfProgress,
+                                    maxSelfProgress, curTotalProgress,
+                                    maxTotalProgress) {
+        
+        progressChanged = true;
+      },
+      onRefreshAttempted : function(webProgress, uri, millis, sameURI)
+      {
+        refreshAttempted = true;
+        return true;
+      },
+      QueryInterface: function(iid) {
+        if (iid.equals(Components.interfaces.nsIWebProgressListener) ||
+            iid.equals(Components.interfaces.nsIWebProgressListener2) ||
+            iid.equals(Components.interfaces.nsISupportsWeakReference)) {
+          return this;
+        }
+        throw Components.results.NS_NOINTERFACE;
+      }
+    }
+    function EndTest() {
+      var test = SimpleTest;
+      window.close();
+      test.finish();
+    }
+    function RunTest()
+    {
+      var browser = document.getElementById('page');
+      var flags = Ci.nsIWebProgress.NOTIFY_ALL;
+
+      browser.webProgress.addProgressListener(listener, flags);
+            
+      var script = "refreshURI = docShell.QueryInterface(Components.interfaces.nsIRefreshURI);"
+        + "var ioServ = Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces.nsIIOService);"
+        + "var uri = ioServ.newURI('http://localhost:8888/tests/content/base/test/chrome/bug514705.html', null, null);"
+        + "refreshURI.refreshURI(uri, 100, false, false);";
+      messageManager.loadFrameScript("data:," + script, true);
+     }
+
+  ]]>
+  </script>
+
+
+  <browser type="content" flex="1" id="page" remote="true"/>
+
+</window>
new file mode 100644
--- /dev/null
+++ b/content/base/test/chrome/test_bug514705.xul
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
+<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
+
+<window title="Bug 514705"
+        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+        onload="RunTest();">
+  <script type="application/javascript" 
+          src="chrome://mochikit/content/MochiKit/packed.js"/>
+  <script type="application/javascript"
+          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
+  <!-- test results are displayed in the html:body -->
+  <body xmlns="http://www.w3.org/1999/xhtml">
+  <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=421622"
+     target="_blank">Mozilla Bug 421622</a>
+  </body>
+
+  <script type="application/javascript">
+  <![CDATA[
+    //SimpleTest.waitForExplicitFinish();
+    todo(false, "Enable this test");
+    
+    function RunTest()
+    {
+      //window.open("bug514705_helper.xul", "bug514705",
+      //            "chrome,width=100,height=100");
+    }
+  ]]>
+  </script>
+</window>
--- a/dom/ipc/PBrowser.ipdl
+++ b/dom/ipc/PBrowser.ipdl
@@ -82,16 +82,37 @@ parent:
     /**
      * When child sends this message, parent should move focus to
      * the next or previous focusable element.
      */
     MoveFocus(bool forward);
 
     Event(RemoteDOMEvent aEvent);
 
+    NotifyStateChange(PRUint32 stateFlags, nsresult status);
+
+    NotifyProgressChange(PRInt64 curSelfProgress,
+                         PRInt64 maxSelfProgress,
+                         PRInt64 curTotalProgress,
+                         PRInt64 maxTotalProgress);
+
+    NotifyLocationChange(nsCString uri);
+
+    NotifyStatusChange(nsresult status,
+                       nsString message);
+
+    NotifySecurityChange(PRUint32 aState,
+                         PRBool aUseSSLStatusObject,
+                         nsString aTooltip,
+                         nsCString aSecInfoAsString);
+
+    sync RefreshAttempted(nsCString uri, PRInt32 millis,
+                          bool sameURI) returns (bool retval);
+
+
     rpc CreateWindow() returns (PBrowser window);
 
     sync SyncMessage(nsString aMessage, nsString aJSON)
       returns (nsString[] retval);
 
     QueryContentResult(nsQueryContentEvent event);
 
     PContentPermissionRequest(nsCString aType, URI uri);
--- a/dom/ipc/TabChild.cpp
+++ b/dom/ipc/TabChild.cpp
@@ -129,35 +129,42 @@ TabChild::Init()
 {
   nsCOMPtr<nsIWebBrowser> webBrowser = do_CreateInstance(NS_WEBBROWSER_CONTRACTID);
   if (!webBrowser) {
     NS_ERROR("Couldn't create a nsWebBrowser?");
     return NS_ERROR_FAILURE;
   }
 
   webBrowser->SetContainerWindow(this);
+  nsCOMPtr<nsIWeakReference> weak =
+    do_GetWeakReference(static_cast<nsSupportsWeakReference*>(this));
+  webBrowser->AddWebBrowserListener(weak, NS_GET_IID(nsIWebProgressListener));
+
   mWebNav = do_QueryInterface(webBrowser);
   NS_ASSERTION(mWebNav, "nsWebBrowser doesn't implement nsIWebNavigation?");
 
   nsCOMPtr<nsIDocShellTreeItem> docShellItem(do_QueryInterface(mWebNav));
   docShellItem->SetItemType(nsIDocShellTreeItem::typeContentWrapper);
   return NS_OK;
 }
 
 NS_INTERFACE_MAP_BEGIN(TabChild)
+  NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIWebProgressListener2)
   NS_INTERFACE_MAP_ENTRY(nsIWebBrowserChrome)
   NS_INTERFACE_MAP_ENTRY(nsIWebBrowserChrome2)
   NS_INTERFACE_MAP_ENTRY(nsIEmbeddingSiteWindow)
   NS_INTERFACE_MAP_ENTRY(nsIEmbeddingSiteWindow2)
   NS_INTERFACE_MAP_ENTRY(nsIWebBrowserChromeFocus)
   NS_INTERFACE_MAP_ENTRY(nsIInterfaceRequestor)
   NS_INTERFACE_MAP_ENTRY(nsIWindowProvider)
+  NS_INTERFACE_MAP_ENTRY(nsIWebProgressListener)
+  NS_INTERFACE_MAP_ENTRY(nsIWebProgressListener2)
+  NS_INTERFACE_MAP_ENTRY(nsSupportsWeakReference)
   NS_INTERFACE_MAP_ENTRY(nsITabChild)
   NS_INTERFACE_MAP_ENTRY(nsIDialogCreator)
-  NS_INTERFACE_MAP_ENTRY(nsSupportsWeakReference)
 NS_INTERFACE_MAP_END
 
 NS_IMPL_ADDREF(TabChild)
 NS_IMPL_RELEASE(TabChild)
 
 NS_IMETHODIMP
 TabChild::SetStatus(PRUint32 aStatusType, const PRUnichar* aStatus)
 {
@@ -432,30 +439,169 @@ TabChild::ActorDestroy(ActorDestroyReaso
   static_cast<nsFrameMessageManager*>
     (mTabChildGlobal->mMessageManager.get())->Disconnect();
   mTabChildGlobal->mMessageManager = nsnull;
 }
 
 TabChild::~TabChild()
 {
     nsCOMPtr<nsIWebBrowser> webBrowser = do_QueryInterface(mWebNav);
+    nsCOMPtr<nsIWeakReference> weak =
+      do_GetWeakReference(static_cast<nsSupportsWeakReference*>(this));
+    webBrowser->RemoveWebBrowserListener(weak, NS_GET_IID(nsIWebProgressListener));
+
     if (webBrowser) {
       webBrowser->SetContainerWindow(nsnull);
     }
     if (mCx) {
       DestroyCx();
     }
     
     nsIEventListenerManager* elm = mTabChildGlobal->GetListenerManager(PR_FALSE);
     if (elm) {
       elm->Disconnect();
     }
     mTabChildGlobal->mTabChild = nsnull;
 }
 
+NS_IMETHODIMP
+TabChild::OnStateChange(nsIWebProgress *aWebProgress,
+                        nsIRequest *aRequest,
+                        PRUint32 aStateFlags,
+                        nsresult aStatus)
+{
+  SendNotifyStateChange(aStateFlags, aStatus);
+  return NS_OK;
+}
+
+// Only one of OnProgressChange / OnProgressChange64 will be called.
+// According to interface, it should be OnProgressChange64, but looks
+// like docLoader only sends the former.
+NS_IMETHODIMP
+TabChild::OnProgressChange(nsIWebProgress *aWebProgress,
+                           nsIRequest *aRequest,
+                           PRInt32 aCurSelfProgress,
+                           PRInt32 aMaxSelfProgress,
+                           PRInt32 aCurTotalProgress,
+                           PRInt32 aMaxTotalProgress)
+{
+  SendNotifyProgressChange(aCurSelfProgress, aMaxSelfProgress,
+                           aCurTotalProgress, aMaxTotalProgress);
+  return NS_OK;
+}
+
+NS_IMETHODIMP
+TabChild::OnStatusChange(nsIWebProgress *aWebProgress,
+                         nsIRequest *aRequest,
+                         nsresult aStatus,
+                         const PRUnichar* aMessage)
+{
+  nsDependentString message(aMessage);
+  SendNotifyStatusChange(aStatus, message);
+  return NS_OK;
+}
+
+NS_IMETHODIMP
+TabChild::OnSecurityChange(nsIWebProgress *aWebProgress,
+                           nsIRequest *aRequest,
+                           PRUint32 aState)
+{
+  nsCString secInfoAsString;
+  if (aState & nsIWebProgressListener::STATE_IS_SECURE) {
+    nsCOMPtr<nsIChannel> channel = do_QueryInterface(aRequest);
+    if (channel) {
+      nsCOMPtr<nsISupports> secInfoSupports;
+      channel->GetSecurityInfo(getter_AddRefs(secInfoSupports));
+
+      nsCOMPtr<nsISerializable> secInfoSerializable =
+          do_QueryInterface(secInfoSupports);
+      NS_SerializeToString(secInfoSerializable, secInfoAsString);
+    }
+  }
+
+  PRBool useSSLStatusObject = PR_FALSE;
+  nsAutoString securityTooltip;
+  nsCOMPtr<nsIDocShell> docShell = do_QueryInterface(aWebProgress);
+  if (docShell) {
+    nsCOMPtr<nsISecureBrowserUI> secureUI;
+    docShell->GetSecurityUI(getter_AddRefs(secureUI));
+    if (secureUI) {
+      secureUI->GetTooltipText(securityTooltip);
+      nsCOMPtr<nsISupports> supports;
+      nsCOMPtr<nsISSLStatusProvider> provider = do_QueryInterface(secureUI);
+      nsresult rv = provider->GetSSLStatus(getter_AddRefs(supports));
+      if (NS_SUCCEEDED(rv) && supports) {
+        /*
+         * useSSLStatusObject: Security UI internally holds 4 states: secure, mixed,
+         * broken, no security.  In cases of secure, mixed and broken it holds reference
+         * to a valid SSL status object.  But, in case of the 'broken' state it doesn't
+         * return the SSL status object (returns null), in contrary to the 'mixed' state
+         * for which it returns.
+         * 
+         * However, mixed and broken states are both reported to the upper level
+         * as nsIWebProgressListener::STATE_IS_BROKEN, i.e. states are merged,
+         * so we cannot determine, if to return the status object or not.
+         *
+         * TabParent is extracting the SSL status object from the security info
+         * serialization (string). SSL status object is always present there
+         * even security UI implementation doesn't present it.  This argument 
+         * tells the parent if the SSL status object is being presented by 
+         * the security UI here, on the child process, and so if it has to be
+         * presented also on the parent process.
+         */
+        useSSLStatusObject = PR_TRUE;
+      }
+    }
+  }
+
+  SendNotifySecurityChange(aState, useSSLStatusObject, securityTooltip,
+                           secInfoAsString);
+  return NS_OK;
+}
+
+NS_IMETHODIMP
+TabChild::OnLocationChange(nsIWebProgress *aWebProgress,
+                           nsIRequest *aRequest,
+                           nsIURI *aLocation)
+{
+  NS_ENSURE_ARG_POINTER(aLocation);
+  nsCString uri;
+  aLocation->GetSpec(uri);
+  SendNotifyLocationChange(uri);
+  return NS_OK;
+}
+
+NS_IMETHODIMP
+TabChild::OnProgressChange64(nsIWebProgress *aWebProgress,
+                             nsIRequest *aRequest,
+                             PRInt64 aCurSelfProgress,
+                             PRInt64 aMaxSelfProgress,
+                             PRInt64 aCurTotalProgress,
+                             PRInt64 aMaxTotalProgress)
+{
+  SendNotifyProgressChange(aCurSelfProgress, aMaxSelfProgress,
+                           aCurTotalProgress, aMaxTotalProgress);
+  return NS_OK;
+}
+
+NS_IMETHODIMP
+TabChild::OnRefreshAttempted(nsIWebProgress *aWebProgress,
+                             nsIURI *aURI, PRInt32 aMillis,
+                             PRBool aSameURL, PRBool *aRefreshAllowed)
+{
+  NS_ENSURE_ARG_POINTER(aURI);
+  nsCString uri;
+  aURI->GetSpec(uri);
+  bool sameURL = aSameURL;
+  bool refreshAllowed;
+  SendRefreshAttempted(uri, aMillis, sameURL, &refreshAllowed);
+  *aRefreshAllowed = refreshAllowed;
+  return NS_OK;
+}
+
 bool
 TabChild::RecvLoadURL(const nsCString& uri)
 {
     printf("loading %s, %d\n", uri.get(), NS_IsMainThread());
 
     nsresult rv = mWebNav->LoadURI(NS_ConvertUTF8toUTF16(uri).get(),
                                    nsIWebNavigation::LOAD_FLAGS_NONE,
                                    NULL, NULL, NULL);
--- a/dom/ipc/TabChild.h
+++ b/dom/ipc/TabChild.h
@@ -44,16 +44,18 @@
 #endif
 #include "nsIWebNavigation.h"
 #include "nsCOMPtr.h"
 #include "nsAutoPtr.h"
 #include "nsIWebBrowserChrome2.h"
 #include "nsIEmbeddingSiteWindow2.h"
 #include "nsIWebBrowserChromeFocus.h"
 #include "nsIWidget.h"
+#include "nsIWebProgressListener.h"
+#include "nsIWebProgressListener2.h"
 #include "nsIDOMEventListener.h"
 #include "nsIDOMEventTarget.h"
 #include "nsIInterfaceRequestor.h"
 #include "nsIWindowProvider.h"
 #include "nsIXPCScriptable.h"
 #include "nsIClassInfo.h"
 #include "jsapi.h"
 #include "nsIXPConnect.h"
@@ -143,16 +145,17 @@ public:
   NS_DECL_ISUPPORTS
   NS_DECL_NSIDOMEVENTLISTENER
 protected:
   TabChild* mTabChild;
 };
 
 class TabChild : public PBrowserChild,
                  public nsFrameScriptExecutor,
+                 public nsIWebProgressListener2,
                  public nsIWebBrowserChrome2,
                  public nsIEmbeddingSiteWindow2,
                  public nsIWebBrowserChromeFocus,
                  public nsIInterfaceRequestor,
                  public nsIWindowProvider,
                  public nsSupportsWeakReference,
                  public nsIDialogCreator,
                  public nsITabChild
@@ -160,16 +163,18 @@ class TabChild : public PBrowserChild,
     typedef mozilla::layout::RenderFrameChild RenderFrameChild;
 
 public:
     TabChild(PRUint32 aChromeFlags);
     virtual ~TabChild();
     nsresult Init();
 
     NS_DECL_ISUPPORTS
+    NS_DECL_NSIWEBPROGRESSLISTENER
+    NS_DECL_NSIWEBPROGRESSLISTENER2
     NS_DECL_NSIWEBBROWSERCHROME
     NS_DECL_NSIWEBBROWSERCHROME2
     NS_DECL_NSIEMBEDDINGSITEWINDOW
     NS_DECL_NSIEMBEDDINGSITEWINDOW2
     NS_DECL_NSIWEBBROWSERCHROMEFOCUS
     NS_DECL_NSIINTERFACEREQUESTOR
     NS_DECL_NSIWINDOWPROVIDER
     NS_DECL_NSIDIALOGCREATOR
--- a/dom/ipc/TabParent.cpp
+++ b/dom/ipc/TabParent.cpp
@@ -54,16 +54,17 @@
 #include "nsIDOMEventTarget.h"
 #include "nsIWindowWatcher.h"
 #include "nsIDOMWindow.h"
 #include "nsIIdentityInfo.h"
 #include "nsPIDOMWindow.h"
 #include "TabChild.h"
 #include "nsIDOMEvent.h"
 #include "nsIPrivateDOMEvent.h"
+#include "nsIWebProgressListener2.h"
 #include "nsFrameLoader.h"
 #include "nsNetUtil.h"
 #include "jsarray.h"
 #include "nsContentUtils.h"
 #include "nsContentPermissionHelper.h"
 #include "nsIDOMNSHTMLFrameElement.h"
 #include "nsIDialogCreator.h"
 #include "nsThreadUtils.h"
@@ -83,20 +84,20 @@ using namespace mozilla::layout;
 
 // The flags passed by the webProgress notifications are 16 bits shifted
 // from the ones registered by webProgressListeners.
 #define NOTIFY_FLAG_SHIFT 16
 
 namespace mozilla {
 namespace dom {
 
-NS_IMPL_ISUPPORTS4(TabParent, nsITabParent, nsIAuthPromptProvider, nsISSLStatusProvider, nsISecureBrowserUI)
+NS_IMPL_ISUPPORTS5(TabParent, nsITabParent, nsIWebProgress, nsIAuthPromptProvider, nsISSLStatusProvider, nsISecureBrowserUI)
 
 TabParent::TabParent()
-  : mSecurityState(0)
+  : mSecurityState(nsIWebProgressListener::STATE_IS_INSECURE)
 {
 }
 
 TabParent::~TabParent()
 {
 }
 
 void
@@ -132,16 +133,279 @@ TabParent::RecvEvent(const RemoteDOMEven
   NS_ENSURE_TRUE(target, true);
 
   PRBool dummy;
   target->DispatchEvent(event, &dummy);
   return true;
 }
 
 bool
+TabParent::RecvNotifyProgressChange(const PRInt64& aProgress,
+                                    const PRInt64& aProgressMax,
+                                    const PRInt64& aTotalProgress,
+                                    const PRInt64& aMaxTotalProgress)
+{
+  /*
+   * First notify any listeners of the new progress info...
+   *
+   * Operate the elements from back to front so that if items get
+   * get removed from the list it won't affect our iteration
+   */
+  nsCOMPtr<nsIWebProgressListener> listener;
+  PRUint32 count = mListenerInfoList.Length();
+
+  while (count-- > 0) {
+    TabParentListenerInfo *info = &mListenerInfoList[count];
+    if (!(info->mNotifyMask & nsIWebProgress::NOTIFY_PROGRESS)) {
+      continue;
+    }
+
+    listener = do_QueryReferent(info->mWeakListener);
+    if (!listener) {
+      // the listener went away. gracefully pull it out of the list.
+      mListenerInfoList.RemoveElementAt(count);
+      continue;
+    }
+
+    nsCOMPtr<nsIWebProgressListener2> listener2 =
+      do_QueryReferent(info->mWeakListener);
+    if (listener2) {
+      listener2->OnProgressChange64(this, nsnull, aProgress, aProgressMax,
+                                    aTotalProgress, aMaxTotalProgress);
+    } else {
+      listener->OnProgressChange(this, nsnull, PRInt32(aProgress),
+                                 PRInt32(aProgressMax),
+                                 PRInt32(aTotalProgress), 
+                                 PRInt32(aMaxTotalProgress));
+    }
+  }
+
+  return true;
+}
+
+bool
+TabParent::RecvNotifyStateChange(const PRUint32& aStateFlags,
+                                 const nsresult& aStatus)
+{
+  /*                                                                           
+   * First notify any listeners of the new state info...
+   *
+   * Operate the elements from back to front so that if items get
+   * get removed from the list it won't affect our iteration
+   */
+  nsCOMPtr<nsIWebProgressListener> listener;
+  PRUint32 count = mListenerInfoList.Length();
+  
+  while (count-- > 0) {
+    TabParentListenerInfo *info = &mListenerInfoList[count];
+
+    // The flags used in listener registration are shifted over
+    // 16 bits from the ones sent in the notification, so we shift
+    // to see if the listener is interested in this change.
+    // Note that the flags are not changed in the notification we
+    // send along. Flags are defined in  nsIWebProgressListener and 
+    // nsIWebProgress.
+    // See nsDocLoader for another example of this.
+    if (!(info->mNotifyMask & (aStateFlags >> NOTIFY_FLAG_SHIFT))) {
+        continue;
+    }
+    
+    listener = do_QueryReferent(info->mWeakListener);
+    if (!listener) {
+      // the listener went away. gracefully pull it out of the list.
+      mListenerInfoList.RemoveElementAt(count);
+      continue;
+    }
+    
+    listener->OnStateChange(this, nsnull, aStateFlags, aStatus); 
+  }   
+
+  return true;
+ }
+
+bool
+TabParent::RecvNotifyLocationChange(const nsCString& aUri)
+{
+  nsCOMPtr<nsIURI> uri;
+  nsresult rv = NS_NewURI(getter_AddRefs(uri), aUri);
+  if (NS_FAILED(rv)) {
+    return false;
+  }
+
+  /*                                                                           
+   * First notify any listeners of the new state info...
+   *
+   * Operate the elements from back to front so that if items get
+   * get removed from the list it won't affect our iteration
+   */
+  nsCOMPtr<nsIWebProgressListener> listener;
+  PRUint32 count = mListenerInfoList.Length();
+
+  while (count-- > 0) {
+    TabParentListenerInfo *info = &mListenerInfoList[count];
+    if (!(info->mNotifyMask & nsIWebProgress::NOTIFY_LOCATION)) {
+      continue;
+    }
+    
+    listener = do_QueryReferent(info->mWeakListener);
+    if (!listener) {
+      // the listener went away. gracefully pull it out of the list.
+      mListenerInfoList.RemoveElementAt(count);
+      continue;
+    }
+    
+    listener->OnLocationChange(this, nsnull, uri);
+  }
+
+  return true;
+}
+
+bool
+TabParent::RecvNotifyStatusChange(const nsresult& status,
+                                  const nsString& message)
+{
+  /*                                                                           
+   * First notify any listeners of the new state info...
+   *
+   * Operate the elements from back to front so that if items get
+   * get removed from the list it won't affect our iteration
+   */
+  nsCOMPtr<nsIWebProgressListener> listener;
+  PRUint32 count = mListenerInfoList.Length();
+
+  while (count-- > 0) {
+    TabParentListenerInfo *info = &mListenerInfoList[count];
+    if (!(info->mNotifyMask & nsIWebProgress::NOTIFY_STATUS)) {
+      continue;
+    }
+
+    listener = do_QueryReferent(info->mWeakListener);
+    if (!listener) {
+      // the listener went away. gracefully pull it out of the list.
+      mListenerInfoList.RemoveElementAt(count);
+      continue;
+    }
+
+    listener->OnStatusChange(this, nsnull, status, message.BeginReading());
+  }
+
+  return true;
+}
+
+bool
+TabParent::RecvNotifySecurityChange(const PRUint32& aState,
+                                    const PRBool& aUseSSLStatusObject,
+                                    const nsString& aTooltip,
+                                    const nsCString& aSecInfoAsString)
+{
+  /*                                                                           
+   * First notify any listeners of the new state info...
+   *
+   * Operate the elements from back to front so that if items get
+   * get removed from the list it won't affect our iteration
+   */
+
+  mSecurityState = aState;
+  mSecurityTooltipText = aTooltip;
+
+  if (!aSecInfoAsString.IsEmpty()) {
+    nsCOMPtr<nsISupports> secInfoSupports;
+    nsresult rv = NS_DeserializeObject(aSecInfoAsString, getter_AddRefs(secInfoSupports));
+
+    if (NS_SUCCEEDED(rv)) {
+      nsCOMPtr<nsIIdentityInfo> idInfo = do_QueryInterface(secInfoSupports);
+      if (idInfo) {
+        PRBool isEV;
+        if (NS_SUCCEEDED(idInfo->GetIsExtendedValidation(&isEV)) && isEV)
+          mSecurityState |= nsIWebProgressListener::STATE_IDENTITY_EV_TOPLEVEL;
+      }
+    }
+
+    mSecurityStatusObject = nsnull;
+    if (aUseSSLStatusObject)
+    {
+      nsCOMPtr<nsISSLStatusProvider> sslStatusProvider =
+        do_QueryInterface(secInfoSupports);
+      if (sslStatusProvider)
+        sslStatusProvider->GetSSLStatus(getter_AddRefs(mSecurityStatusObject));
+    }
+  }
+
+  nsCOMPtr<nsIWebProgressListener> listener;
+  PRUint32 count = mListenerInfoList.Length();
+
+  while (count-- > 0) {
+    TabParentListenerInfo *info = &mListenerInfoList[count];
+    if (!(info->mNotifyMask & nsIWebProgress::NOTIFY_SECURITY)) {
+      continue;
+    }
+
+    listener = do_QueryReferent(info->mWeakListener);
+    if (!listener) {
+      // the listener went away. gracefully pull it out of the list.
+      mListenerInfoList.RemoveElementAt(count);
+      continue;
+    }
+
+    listener->OnSecurityChange(this, nsnull, mSecurityState);
+  }
+
+  return true;
+}
+
+bool
+TabParent::RecvRefreshAttempted(const nsCString& aURI, const PRInt32& aMillis, 
+                                const bool& aSameURI, bool* refreshAllowed)
+{
+  nsCOMPtr<nsIURI> uri;
+  nsresult rv = NS_NewURI(getter_AddRefs(uri), aURI);
+  if (NS_FAILED(rv)) {
+    return false;
+  }
+  /*                                                                           
+   * First notify any listeners of the new state info...
+   *
+   * Operate the elements from back to front so that if items get
+   * get removed from the list it won't affect our iteration
+   */
+
+  nsCOMPtr<nsIWebProgressListener> listener;
+  PRUint32 count = mListenerInfoList.Length();
+
+  *refreshAllowed = true;
+  while (count-- > 0) {
+    TabParentListenerInfo *info = &mListenerInfoList[count];
+    if (!(info->mNotifyMask & nsIWebProgress::NOTIFY_REFRESH)) {
+      continue;
+    }
+
+    listener = do_QueryReferent(info->mWeakListener);
+    if (!listener) {
+      // the listener went away. gracefully pull it out of the list.
+      mListenerInfoList.RemoveElementAt(count);
+      continue;
+    }
+
+    nsCOMPtr<nsIWebProgressListener2> listener2 =
+      do_QueryReferent(info->mWeakListener);
+    if (!listener2) {
+      continue;
+    }
+
+    // some listeners don't seem to set this at all...
+    PRBool allowed = true;
+    listener2->OnRefreshAttempted(this, uri, 
+                                  aMillis, aSameURI, &allowed);
+    *refreshAllowed = allowed && *refreshAllowed;
+  }
+
+  return true;
+}
+
+bool
 TabParent::AnswerCreateWindow(PBrowserParent** retval)
 {
     if (!mBrowserDOMWindow) {
         return false;
     }
 
     // Get a new rendering area from the browserDOMWin.  We don't want
     // to be starting any loads here, so get it with a null URI.
@@ -196,17 +460,16 @@ TabParent::Init(nsIDOMWindow *window)
 {
   return NS_OK;
 }
 
 NS_IMETHODIMP
 TabParent::GetState(PRUint32 *aState)
 {
   NS_ENSURE_ARG(aState);
-  NS_WARNING("SecurityState not valid here");
   *aState = mSecurityState;
   return NS_OK;
 }
 
 NS_IMETHODIMP
 TabParent::GetTooltipText(nsAString & aTooltipText)
 {
   aTooltipText = mSecurityTooltipText;
@@ -367,16 +630,81 @@ TabParent::ReceiveMessage(const nsString
                             aSync,
                             aJSON,
                             objectsArray,
                             aJSONRetVal);
   }
   return true;
 }
 
+// nsIWebProgress
+nsresult
+TabParent::AddProgressListener(nsIWebProgressListener* aListener,
+                               PRUint32 aNotifyMask)
+{
+  if (GetListenerInfo(aListener)) {
+    // The listener is already registered!
+    return NS_ERROR_FAILURE;
+  }
+
+  nsWeakPtr listener = do_GetWeakReference(aListener);
+  if (!listener) {
+    return NS_ERROR_INVALID_ARG;
+  }
+
+  TabParentListenerInfo info(listener, aNotifyMask);
+
+  if (!mListenerInfoList.AppendElement(info))
+    return NS_ERROR_FAILURE;
+
+  return NS_OK;
+}
+
+NS_IMETHODIMP
+TabParent::RemoveProgressListener(nsIWebProgressListener *aListener)
+{
+  nsAutoPtr<TabParentListenerInfo> info(GetListenerInfo(aListener));
+  
+  return info && mListenerInfoList.RemoveElement(*info) ?
+    NS_OK : NS_ERROR_FAILURE;
+}
+
+TabParentListenerInfo * 
+TabParent::GetListenerInfo(nsIWebProgressListener *aListener)
+{
+  PRUint32 i, count;
+  TabParentListenerInfo *info;
+
+  nsCOMPtr<nsISupports> listener1 = do_QueryInterface(aListener);
+  count = mListenerInfoList.Length();
+  for (i = 0; i < count; ++i) {
+    info = &mListenerInfoList[i];
+
+    if (info) {
+      nsCOMPtr<nsISupports> listener2 = do_QueryReferent(info->mWeakListener);
+      if (listener1 == listener2) {
+        return info;
+      }
+    }
+  }
+  return nsnull;
+}
+
+NS_IMETHODIMP
+TabParent::GetDOMWindow(nsIDOMWindow **aResult)
+{
+  return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+NS_IMETHODIMP
+TabParent::GetIsLoadingDocument(PRBool *aIsLoadingDocument)
+{
+  return NS_ERROR_NOT_IMPLEMENTED;
+}
+
 // nsIAuthPromptProvider
 
 // This method is largely copied from nsDocShell::GetAuthPrompt
 NS_IMETHODIMP
 TabParent::GetAuthPrompt(PRUint32 aPromptReason, const nsIID& iid,
                           void** aResult)
 {
   // we're either allowing auth, or it's a proxy request
--- a/dom/ipc/TabParent.h
+++ b/dom/ipc/TabParent.h
@@ -43,53 +43,96 @@
 #include "mozilla/dom/PContentDialogParent.h"
 #include "mozilla/ipc/GeckoChildProcessHost.h"
 #include "mozilla/dom/PExternalHelperApp.h"
 
 #include "jsapi.h"
 #include "nsCOMPtr.h"
 #include "nsITabParent.h"
 #include "nsIBrowserDOMWindow.h"
+#include "nsIWebProgress.h"
+#include "nsIWebProgressListener.h"
 #include "nsWeakReference.h"
 #include "nsIDialogParamBlock.h"
 #include "nsIAuthPromptProvider.h"
 #include "nsISSLStatusProvider.h"
 #include "nsISecureBrowserUI.h"
 
 class nsFrameLoader;
 class nsIURI;
 class nsIDOMElement;
 struct gfxMatrix;
 
 struct JSContext;
 struct JSObject;
 
 namespace mozilla {
 namespace dom {
+struct TabParentListenerInfo 
+{
+  TabParentListenerInfo(nsIWeakReference *aListener, unsigned long aNotifyMask)
+    : mWeakListener(aListener), mNotifyMask(aNotifyMask)
+  {
+  }
+
+  TabParentListenerInfo(const TabParentListenerInfo& obj)
+    : mWeakListener(obj.mWeakListener), mNotifyMask(obj.mNotifyMask) 
+  {
+  }
+
+  nsWeakPtr mWeakListener;
+
+  PRUint32 mNotifyMask;
+};
+
+inline    
+bool operator==(const TabParentListenerInfo& lhs, const TabParentListenerInfo& rhs)
+{
+  return &lhs == &rhs;
+}
 
 class ContentDialogParent : public PContentDialogParent {};
 
 class TabParent : public PBrowserParent 
                 , public nsITabParent 
+                , public nsIWebProgress
                 , public nsIAuthPromptProvider
                 , public nsISecureBrowserUI
                 , public nsISSLStatusProvider
 {
 public:
     TabParent();
     virtual ~TabParent();
     nsIDOMElement* GetOwnerElement() { return mFrameElement; }
     void SetOwnerElement(nsIDOMElement* aElement) { mFrameElement = aElement; }
     nsIBrowserDOMWindow *GetBrowserDOMWindow() { return mBrowserDOMWindow; }
     void SetBrowserDOMWindow(nsIBrowserDOMWindow* aBrowserDOMWindow) {
         mBrowserDOMWindow = aBrowserDOMWindow;
     }
  
     virtual bool RecvMoveFocus(const bool& aForward);
     virtual bool RecvEvent(const RemoteDOMEvent& aEvent);
+    virtual bool RecvNotifyProgressChange(const PRInt64& aProgress,
+                                          const PRInt64& aProgressMax,
+                                          const PRInt64& aTotalProgress,
+                                          const PRInt64& aMaxTotalProgress);
+    virtual bool RecvNotifyStateChange(const PRUint32& aStateFlags,
+                                       const nsresult& aStatus);
+    virtual bool RecvNotifyLocationChange(const nsCString& aUri);
+    virtual bool RecvNotifyStatusChange(const nsresult& status,
+                                        const nsString& message);
+    virtual bool RecvNotifySecurityChange(const PRUint32& aState,
+                                          const PRBool& aUseSSLStatusObject,
+                                          const nsString& aTooltip,
+                                          const nsCString& aSecInfoAsString);
+
+    virtual bool RecvRefreshAttempted(const nsCString& aURI,
+                                      const PRInt32& aMillis,
+                                      const bool& aSameURI,
+                                      bool* aAllowRefresh);
 
     virtual bool AnswerCreateWindow(PBrowserParent** retval);
     virtual bool RecvSyncMessage(const nsString& aMessage,
                                  const nsString& aJSON,
                                  nsTArray<nsString>* aJSONRetVal);
     virtual bool RecvAsyncMessage(const nsString& aMessage,
                                   const nsString& aJSON);
     virtual bool RecvQueryContentResult(const nsQueryContentEvent& event);
@@ -162,32 +205,37 @@ public:
 
 
     virtual PContentPermissionRequestParent* AllocPContentPermissionRequest(const nsCString& aType, const IPC::URI& uri);
     virtual bool DeallocPContentPermissionRequest(PContentPermissionRequestParent* actor);
 
     JSBool GetGlobalJSObject(JSContext* cx, JSObject** globalp);
 
     NS_DECL_ISUPPORTS
+    NS_DECL_NSIWEBPROGRESS
     NS_DECL_NSIAUTHPROMPTPROVIDER
     NS_DECL_NSISECUREBROWSERUI
     NS_DECL_NSISSLSTATUSPROVIDER
 
     void HandleDelayedDialogs();
 protected:
     bool ReceiveMessage(const nsString& aMessage,
                         PRBool aSync,
                         const nsString& aJSON,
                         nsTArray<nsString>* aJSONRetVal = nsnull);
 
+    TabParentListenerInfo* GetListenerInfo(nsIWebProgressListener *aListener);
+
     void ActorDestroy(ActorDestroyReason why);
 
     nsIDOMElement* mFrameElement;
     nsCOMPtr<nsIBrowserDOMWindow> mBrowserDOMWindow;
 
+    nsTArray<TabParentListenerInfo> mListenerInfoList;
+
     struct DelayedDialogData
     {
       DelayedDialogData(PContentDialogParent* aDialog, PRUint32 aType,
                         const nsCString& aName,
                         const nsCString& aFeatures,
                         nsIDialogParamBlock* aParams)
       : mDialog(aDialog), mType(aType), mName(aName), mFeatures(aFeatures),
         mParams(aParams) {}
--- a/toolkit/content/widgets/browser.xml
+++ b/toolkit/content/widgets/browser.xml
@@ -313,17 +313,17 @@
           }
           return this._fastFind;
         ]]>
         </getter>
       </property>
       
       <property name="webProgress"
                 readonly="true"
-                onget="return this.docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIWebProgress);"/>
+                onget="return this.QueryInterface(Components.interfaces.nsIFrameLoaderOwner).frameLoader.webProgress;"/>
 
       <field name="_contentWindow">null</field>
 
       <property name="contentWindow"
                 readonly="true"
                 onget="return this._contentWindow || (this._contentWindow = this.docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIDOMWindow));"/>
 
       <property name="sessionHistory"
--- a/widget/src/windows/nsWindow.cpp
+++ b/widget/src/windows/nsWindow.cpp
@@ -7601,49 +7601,24 @@ nsWindow::GetRootAccessible()
 
   nsWindow::sIsAccessibilityOn = TRUE;
 
   if (mInDtor || mOnDestroyCalled || mWindowType == eWindowType_invisible) {
     return nsnull;
   }
 
   NS_LOG_WMGETOBJECT_THISWND
-
-  if (mContentType != eContentTypeInherit) {
-    // We're on a MozillaContentWindowClass or MozillaUIWindowClass window.
-    // Search for the correct visible child window to get an accessible 
-    // document from. Make sure to use an active child window. If this window
-    // doesn't have child windows then return an accessible for it.
-    HWND accessibleWnd = ::GetTopWindow(mWnd);
-    NS_LOG_WMGETOBJECT_WND("Top Window", accessibleWnd);
-    if (!accessibleWnd) {
-      NS_LOG_WMGETOBJECT_WND("This Window", mWnd);
-      return DispatchAccessibleEvent(NS_GETACCESSIBLE);
-    }
-
-    nsWindow* accessibleWindow = nsnull;
-    while (accessibleWnd) {
-      // Loop through windows and find the first one with accessibility info
-      accessibleWindow = GetNSWindowPtr(accessibleWnd);
-      if (accessibleWindow) {
-        nsAccessible *rootAccessible =
-          accessibleWindow->DispatchAccessibleEvent(NS_GETACCESSIBLE);
-        if (rootAccessible) {
-          // Success, one of the child windows was active.
-          return rootAccessible;
-        }
-      }
-      accessibleWnd = ::GetNextWindow(accessibleWnd, GW_HWNDNEXT);
-      NS_LOG_WMGETOBJECT_WND("Next Window", accessibleWnd);
-    }
-    return nsnull;
-  }
-
   NS_LOG_WMGETOBJECT_WND("This Window", mWnd);
-  return DispatchAccessibleEvent(NS_GETACCESSIBLE);
+
+  nsAccessible* docAcc = DispatchAccessibleEvent(NS_GETACCESSIBLE);
+
+  nsCOMPtr<nsIAccessibleDocument> rootDocAcc;
+  docAcc->GetRootDocument(getter_AddRefs(rootDocAcc));
+  nsRefPtr<nsAccessible> rootAcc(do_QueryObject(rootDocAcc));
+  return rootAcc;
 }
 
 STDMETHODIMP_(LRESULT)
 nsWindow::LresultFromObject(REFIID riid, WPARAM wParam, LPUNKNOWN pAcc)
 {
   // open the dll dynamically
   if (!sAccLib)
     sAccLib =::LoadLibraryW(L"OLEACC.DLL");