Browse Source

Merge branch 'webcontent_invalid_loadurl_patch' of https://github.com/deepak1556/atom-shell into deepak1556-webcontent_invalid_loadurl_patch

Cheng Zhao 9 years ago
parent
commit
08e5c1f6fe

+ 8 - 0
atom/browser/api/atom_api_web_contents.cc

@@ -710,6 +710,14 @@ bool WebContents::Equal(const WebContents* web_contents) const {
 }
 
 void WebContents::LoadURL(const GURL& url, const mate::Dictionary& options) {
+  if (!url.is_valid()) {
+    Emit("did-fail-load",
+         static_cast<int>(net::ERR_INVALID_URL),
+         net::ErrorToShortString(net::ERR_INVALID_URL),
+         url.possibly_invalid_spec());
+    return;
+  }
+
   content::NavigationController::LoadURLParams params(url);
 
   GURL http_referrer;

+ 12 - 2
spec/api-browser-window-spec.js

@@ -102,12 +102,22 @@ describe('browser-window module', function() {
       w.loadURL('about:blank');
     });
 
-    it('should emit did-fail-load event', function(done) {
-      w.webContents.on('did-fail-load', function() {
+    it('should emit did-fail-load event for files that do not exist', function(done) {
+      w.webContents.on('did-fail-load', function(event, code) {
+        assert.equal(code, -6);
         done();
       });
       w.loadURL('file://a.txt');
     });
+
+    it('should emit did-fail-load event for invalid URL', function(done) {
+      w.webContents.on('did-fail-load', function(event, code, desc) {
+        assert.equal(desc, 'ERR_INVALID_URL');
+        assert.equal(code, -300);
+        done();
+      });
+      w.loadURL('http://example:port');
+    });
   });
 
   describe('BrowserWindow.show()', function() {

+ 9 - 0
spec/fixtures/pages/process-exit.html

@@ -0,0 +1,9 @@
+<html>
+<body>
+<script type="text/javascript" charset="utf-8">
+process.on('exit', function() {
+  
+});
+</script>
+</body>
+</html>