diff --git a/js/ccnxProtocol/components/ccnxProtocolService.js b/js/ccnxProtocol/components/ccnxProtocolService.js
index 4690b17..b466067 100644
--- a/js/ccnxProtocol/components/ccnxProtocolService.js
+++ b/js/ccnxProtocol/components/ccnxProtocolService.js
@@ -40,6 +40,7 @@
     		var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
     		var mostRecentWindow = wm.getMostRecentWindow("navigator:browser");
     
+            var contentChannel;
 			var requestContent = function(contentListener) {
                 // Set nameString to the URI without the protocol.
                 var nameString = trimmedSpec;
@@ -76,12 +77,12 @@
 					contentListener.onReceivedContent(content, 
                         contentTypeEtc.contentType, contentTypeEtc.contentCharset);
                     
-                    // Assume that onReceivedContent sends all the content immediately and updatse
-                    //   the gURLBar if the content is for the main window.
-                    var urlBar = mostRecentWindow.gURLBar;
-                    if (urlBar && urlBar.value.trim() == trimmedSpec) {
-                        // Assume the URI is for the window.  Update the URL bar.
+                    // Load flags bit 19 "LOAD_INITIAL_DOCUMENT_URI" means the channel is
+                    //   for the main window with the URL bar.
+                    if (contentChannel.loadFlags & (1<<19)) {
+                        // Update the URL bar.
                         // Show the name without the ending sequence (unless the original URI had it).
+                        var urlBar = mostRecentWindow.gURLBar;
                         if (!uriEndsWithSequence && endsWithSequence(contentObject.name)) {
                             var nameWithoutSequence = new Name
                                 (contentObject.name.components.slice
@@ -98,7 +99,8 @@
 				ndn.expressInterest(name, new ContentClosure());
 			};
 
-			return new ContentChannel(aURI, requestContent);
+			contentChannel = new ContentChannel(aURI, requestContent);
+            return contentChannel;
 		} catch (ex) {
 			dump("CcnxProtocol.newChannel exception: " + ex + "\n");
 		}
