Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: lib/child/typoNetError.js

Issue 29337915: Issue 3748 - Update URL Fixer dependency on buildtools to revision c92cc4e4a338 and make it E10S-co… (Closed)
Patch Set: Updated path in updateRules.py as well Created March 7, 2016, 8:23 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * This file is part of the URL Fixer,
3 * Copyright (C) 2006-2016 Eyeo GmbH
4 *
5 * URL Fixer is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 3 as
7 * published by the Free Software Foundation.
8 *
9 * URL Fixer is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with URL Fixer. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18 "use strict";
19
20 const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
21
22 let {Services} = Cu.import("resource://gre/modules/Services.jsm", {});
23
24 let onShutdown =
25 {
26 shutdownHandlers: [],
27 done: false,
28 add: function(handler)
29 {
30 if (this.shutdownHandlers.indexOf(handler) < 0)
31 this.shutdownHandlers.push(handler);
32 },
33 remove: function(handler)
34 {
35 let index = this.shutdownHandlers.indexOf(handler);
36 if (index >= 0)
37 this.shutdownHandlers.splice(index, 1);
38 }
39 };
40
41 let netErrorOverlay = null;
42
43 function receivedNetErrorOverlay(message)
44 {
45 let parser = Cc["@mozilla.org/xmlextras/domparser;1"]
46 .createInstance(Ci.nsIDOMParser);
47 netErrorOverlay = parser.parseFromString(message.data, "application/xml");
Thomas Greiner 2016/03/08 12:34:43 Note that previously we were first loading the err
Wladimir Palant 2016/03/08 14:37:48 Yes. There is a check for netErrorOverlay in the e
48 }
49
50 function shutdown(message)
51 {
52 if (message.data == Components.stack.filename && !onShutdown.done)
53 {
54 onShutdown.done = true;
55 for (let i = onShutdown.shutdownHandlers.length - 1; i >= 0; i --)
56 {
57 try
58 {
59 onShutdown.shutdownHandlers[i]();
60 }
61 catch (e)
62 {
63 Cu.reportError(e);
64 }
65 }
66 onShutdown.shutdownHandlers = null;
67 }
68 }
69
70 function onDocumentCreated(subject, topic, data)
71 {
72 if (topic != "content-document-global-created")
Thomas Greiner 2016/03/08 12:34:44 Detail: Is this check necessary given that you've
Wladimir Palant 2016/03/08 14:37:48 It's a somewhat theoretical scenario but some misg
73 return;
74 if (!(subject instanceof Ci.nsIDOMWindow))
75 return;
76
77 subject.addEventListener("DOMContentLoaded", handlePageLoad);
Thomas Greiner 2016/03/08 12:34:43 Detail: We usually explicitly specify the "useCapt
Wladimir Palant 2016/03/08 14:37:48 Well, we can stop doing that - it's optional ever
78 }
79
80 function handlePageLoad(event)
81 {
82 let document = event.target;
83 if (document.documentURI.indexOf("about:neterror?") != 0 ||
84 document.documentURI.indexOf("e=netOffline") > 0 ||
85 document.documentURI.indexOf("e=notCached") > 0)
86 {
87 return;
88 }
89
90 if (!netErrorOverlay || document.getElementById("url-fixer-section"))
91 return;
92
93 let container = document.getElementById("errorPageContainer");
94 if (!container)
95 return;
96
97 container.appendChild(netErrorOverlay.documentElement.cloneNode(true));
98
99 let textField = document.getElementById("url-fixer-intention");
100 textField.value = document.defaultView.location.href;
101
102 let retryButton = document.getElementById("url-fixer-retry");
103 retryButton.addEventListener("click", function()
104 {
105 let newURL = textField.value.replace(/^\s+/, "").replace(/\s+$/, "");
106 if (!newURL.length)
107 return;
108
109 let [prefix, newHost, suffix] = parseURL(newURL);
110 let oldHost = document.defaultView.location.hostname.toLowerCase();
111
112 sendAsyncMessage("URLFixer:UserCorrection", {oldHost, newHost});
113
114 document.defaultView.location.replace(newURL);
115 }, false);
116 }
117
118 function parseURL(url)
119 {
120 if (/^\s*((?:\w+:)?\/*(?:[^\/#]*@)?)([^\/:#]*)/.test(url))
121 return [RegExp.$1, RegExp.$2.toLowerCase(), RegExp.rightContext];
122 else
123 return [url, null, null];
124 }
125
126 addMessageListener("URLFixer:NetErrorOverlay", receivedNetErrorOverlay);
127 addMessageListener("URLFixer:Shutdown", shutdown);
128 onShutdown.add(() => {
129 removeMessageListener("URLFixer:NetErrorOverlay", receivedNetErrorOverlay);
130 removeMessageListener("URLFixer:Shutdown", shutdown);
131 });
132 sendAsyncMessage("URLFixer:GetNetErrorOverlay");
133
134 Services.obs.addObserver(onDocumentCreated, "content-document-global-created", f alse);
135 onShutdown.add(() => {
136 Services.obs.removeObserver(onDocumentCreated, "content-document-global-create d");
137 });
OLDNEW

Powered by Google App Engine
This is Rietveld