Merge lp:~gue5t/midori/nojs-local-pages into lp:midori
- nojs-local-pages
- Merge into trunk
Proposed by
gue5t gue5t
Status: | Merged | ||||
---|---|---|---|---|---|
Approved by: | Paweł Forysiuk | ||||
Approved revision: | 6691 | ||||
Merged at revision: | 6886 | ||||
Proposed branch: | lp:~gue5t/midori/nojs-local-pages | ||||
Merge into: | lp:midori | ||||
Diff against target: |
393 lines (+79/-73) 5 files modified
extensions/nojs/main.c (+2/-2) extensions/nojs/nojs-preferences.c (+31/-31) extensions/nojs/nojs-view.c (+6/-3) extensions/nojs/nojs.c (+37/-34) extensions/nojs/nojs.h (+3/-3) |
||||
To merge this branch: | bzr merge lp:~gue5t/midori/nojs-local-pages | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Paweł Forysiuk | Approve | ||
Review via email:
|
Commit message
Replace NoJS "allow all pages" setting with "allow local pages"
Description of the change
Right now NoJS has a setting "Allow all sites" which is better served by simply disabling the extension temporarily. This branch replaces it with an "Allow local pages" setting.
To post a comment you must log in.
Revision history for this message
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Paweł Forysiuk (tuxator) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'extensions/nojs/main.c' |
2 | --- extensions/nojs/main.c 2013-05-22 22:59:27 +0000 |
3 | +++ extensions/nojs/main.c 2014-05-09 14:51:38 +0000 |
4 | @@ -22,7 +22,7 @@ |
5 | |
6 | noJS=nojs_new(inExtension, inApp); |
7 | nojs_set_policy_for_unknown_domain(noJS, midori_extension_get_integer(inExtension, "unknown-domain-policy")); |
8 | - nojs_set_allow_all_sites(noJS, midori_extension_get_boolean(inExtension, "allow-all-sites")); |
9 | + nojs_set_allow_local_pages(noJS, midori_extension_get_boolean(inExtension, "allow-local-pages")); |
10 | nojs_set_only_second_level_domain(noJS, midori_extension_get_boolean(inExtension, "only-second-level")); |
11 | } |
12 | |
13 | @@ -68,7 +68,7 @@ |
14 | NULL); |
15 | |
16 | midori_extension_install_integer(extension, "unknown-domain-policy", NOJS_POLICY_BLOCK); |
17 | - midori_extension_install_boolean(extension, "allow-all-sites", FALSE); |
18 | + midori_extension_install_boolean(extension, "allow-local-pages", TRUE); |
19 | midori_extension_install_boolean(extension, "only-second-level", TRUE); |
20 | |
21 | g_signal_connect(extension, "activate", G_CALLBACK(_nojs_on_activate), NULL); |
22 | |
23 | === modified file 'extensions/nojs/nojs-preferences.c' |
24 | --- extensions/nojs/nojs-preferences.c 2013-08-16 22:02:25 +0000 |
25 | +++ extensions/nojs/nojs-preferences.c 2014-05-09 14:51:38 +0000 |
26 | @@ -46,19 +46,19 @@ |
27 | GtkWidget *editingCombo; |
28 | GtkWidget *deleteButton; |
29 | GtkWidget *deleteAllButton; |
30 | - GtkWidget *allowAllSitesCheckbox; |
31 | + GtkWidget *allowLocalPagesCheckbox; |
32 | GtkWidget *blockUnknownDomainsCheckbox; |
33 | GtkWidget *checkSecondLevelOnlyCheckbox; |
34 | GtkWidget *addDomainEntry; |
35 | GtkWidget *addDomainPolicyCombo; |
36 | GtkWidget *addDomainButton; |
37 | |
38 | - gint signalAllowAllSitesToggledID; |
39 | + gint signalAllowLocalPagesToggledID; |
40 | gint signalBlockUnknownDomainsToggledID; |
41 | gint signalCheckSecondLevelOnlyToggledID; |
42 | |
43 | gint signalManagerChangedDatabaseID; |
44 | - gint signalManagerChangedAllowAllSitesID; |
45 | + gint signalManagerChangedAllowLocalPagesID; |
46 | gint signalManagerChangedUnknownDomainPolicyID; |
47 | gint signalManagerChangedCheckSecondLevelID; |
48 | }; |
49 | @@ -324,23 +324,23 @@ |
50 | return; |
51 | } |
52 | |
53 | -/* Allow-all-sites changed in check-box or manager */ |
54 | -static void _nojs_preferences_on_allow_all_sites_changed(NoJSPreferences *self, |
55 | +/* Allow-local-pages changed in check-box or manager */ |
56 | +static void _nojs_preferences_on_allow_local_pages_changed(NoJSPreferences *self, |
57 | gpointer *inUserData) |
58 | { |
59 | NoJSPreferencesPrivate *priv=self->priv; |
60 | gboolean state; |
61 | |
62 | /* Get toggle state of widget (but block signal for manager) and set in manager */ |
63 | - g_signal_handler_block(priv->manager, priv->signalManagerChangedAllowAllSitesID); |
64 | - |
65 | - state=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->allowAllSitesCheckbox)); |
66 | - nojs_set_allow_all_sites(priv->manager, state); |
67 | - |
68 | - g_signal_handler_unblock(priv->manager, priv->signalManagerChangedAllowAllSitesID); |
69 | + g_signal_handler_block(priv->manager, priv->signalManagerChangedAllowLocalPagesID); |
70 | + |
71 | + state=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->allowLocalPagesCheckbox)); |
72 | + nojs_set_allow_local_pages(priv->manager, state); |
73 | + |
74 | + g_signal_handler_unblock(priv->manager, priv->signalManagerChangedAllowLocalPagesID); |
75 | } |
76 | |
77 | -static void _nojs_preferences_on_manager_allow_all_sites_changed(NoJSPreferences *self, |
78 | +static void _nojs_preferences_on_manager_allow_local_pages_changed(NoJSPreferences *self, |
79 | GParamSpec *inSpec, |
80 | gpointer inUserData) |
81 | { |
82 | @@ -349,14 +349,14 @@ |
83 | gboolean state; |
84 | |
85 | /* Get new value from manager */ |
86 | - state=nojs_get_allow_all_sites(manager); |
87 | + state=nojs_get_allow_local_pages(manager); |
88 | |
89 | /* Set toggle in widget (but block signal for toggle) */ |
90 | - g_signal_handler_block(priv->allowAllSitesCheckbox, priv->signalAllowAllSitesToggledID); |
91 | - |
92 | - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->allowAllSitesCheckbox), state); |
93 | - |
94 | - g_signal_handler_unblock(priv->allowAllSitesCheckbox, priv->signalAllowAllSitesToggledID); |
95 | + g_signal_handler_block(priv->allowLocalPagesCheckbox, priv->signalAllowLocalPagesToggledID); |
96 | + |
97 | + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->allowLocalPagesCheckbox), state); |
98 | + |
99 | + g_signal_handler_unblock(priv->allowLocalPagesCheckbox, priv->signalAllowLocalPagesToggledID); |
100 | } |
101 | |
102 | /* Block-unknown-domains changed in check-box or manager */ |
103 | @@ -675,8 +675,8 @@ |
104 | if(priv->signalManagerChangedDatabaseID) g_signal_handler_disconnect(priv->manager, priv->signalManagerChangedDatabaseID); |
105 | priv->signalManagerChangedDatabaseID=0; |
106 | |
107 | - if(priv->signalManagerChangedAllowAllSitesID) g_signal_handler_disconnect(priv->manager, priv->signalManagerChangedAllowAllSitesID); |
108 | - priv->signalManagerChangedAllowAllSitesID=0; |
109 | + if(priv->signalManagerChangedAllowLocalPagesID) g_signal_handler_disconnect(priv->manager, priv->signalManagerChangedAllowLocalPagesID); |
110 | + priv->signalManagerChangedAllowLocalPagesID=0; |
111 | |
112 | if(priv->signalManagerChangedUnknownDomainPolicyID) g_signal_handler_disconnect(priv->manager, priv->signalManagerChangedUnknownDomainPolicyID); |
113 | priv->signalManagerChangedUnknownDomainPolicyID=0; |
114 | @@ -712,8 +712,8 @@ |
115 | if(priv->signalManagerChangedDatabaseID) g_signal_handler_disconnect(priv->manager, priv->signalManagerChangedDatabaseID); |
116 | priv->signalManagerChangedDatabaseID=0; |
117 | |
118 | - if(priv->signalManagerChangedAllowAllSitesID) g_signal_handler_disconnect(priv->manager, priv->signalManagerChangedAllowAllSitesID); |
119 | - priv->signalManagerChangedAllowAllSitesID=0; |
120 | + if(priv->signalManagerChangedAllowLocalPagesID) g_signal_handler_disconnect(priv->manager, priv->signalManagerChangedAllowLocalPagesID); |
121 | + priv->signalManagerChangedAllowLocalPagesID=0; |
122 | |
123 | if(priv->signalManagerChangedUnknownDomainPolicyID) g_signal_handler_disconnect(priv->manager, priv->signalManagerChangedUnknownDomainPolicyID); |
124 | priv->signalManagerChangedUnknownDomainPolicyID=0; |
125 | @@ -740,12 +740,12 @@ |
126 | self); |
127 | _nojs_preferences_on_manager_database_changed(self, NULL, priv->manager); |
128 | |
129 | - priv->signalManagerChangedAllowAllSitesID= |
130 | + priv->signalManagerChangedAllowLocalPagesID= |
131 | g_signal_connect_swapped(priv->manager, |
132 | - "notify::allow-all-sites", |
133 | - G_CALLBACK(_nojs_preferences_on_manager_allow_all_sites_changed), |
134 | + "notify::allow-local-pages", |
135 | + G_CALLBACK(_nojs_preferences_on_manager_allow_local_pages_changed), |
136 | self); |
137 | - _nojs_preferences_on_manager_allow_all_sites_changed(self, NULL, priv->manager); |
138 | + _nojs_preferences_on_manager_allow_local_pages_changed(self, NULL, priv->manager); |
139 | |
140 | priv->signalManagerChangedUnknownDomainPolicyID= |
141 | g_signal_connect_swapped(priv->manager, |
142 | @@ -983,13 +983,13 @@ |
143 | |
144 | gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 5); |
145 | |
146 | - /* Add "allow-all-sites" checkbox */ |
147 | - priv->allowAllSitesCheckbox=gtk_check_button_new_with_mnemonic(_("A_llow scripts at all sites")); |
148 | - priv->signalAllowAllSitesToggledID=g_signal_connect_swapped(priv->allowAllSitesCheckbox, |
149 | + /* Add "allow-local-pages" checkbox */ |
150 | + priv->allowLocalPagesCheckbox=gtk_check_button_new_with_mnemonic(_("A_llow scripts on local pages")); |
151 | + priv->signalAllowLocalPagesToggledID=g_signal_connect_swapped(priv->allowLocalPagesCheckbox, |
152 | "toggled", |
153 | - G_CALLBACK(_nojs_preferences_on_allow_all_sites_changed), |
154 | + G_CALLBACK(_nojs_preferences_on_allow_local_pages_changed), |
155 | self); |
156 | - gtk_box_pack_start(GTK_BOX(vbox), priv->allowAllSitesCheckbox, FALSE, TRUE, 5); |
157 | + gtk_box_pack_start(GTK_BOX(vbox), priv->allowLocalPagesCheckbox, FALSE, TRUE, 5); |
158 | |
159 | /* Add "block-unknown-domains" checkbox */ |
160 | priv->blockUnknownDomainsCheckbox=gtk_check_button_new_with_mnemonic(_("Bloc_k scripts at unknown domains by default")); |
161 | |
162 | === modified file 'extensions/nojs/nojs-view.c' |
163 | --- extensions/nojs/nojs-view.c 2013-07-29 18:03:02 +0000 |
164 | +++ extensions/nojs/nojs-view.c 2014-05-09 14:51:38 +0000 |
165 | @@ -354,7 +354,7 @@ |
166 | gboolean newScriptsEnabled; |
167 | |
168 | domain=nojs_get_domain(priv->manager, uri); |
169 | - policy=nojs_get_policy(priv->manager, domain); |
170 | + policy=nojs_get_policy(priv->manager, uri); |
171 | if(policy==NOJS_POLICY_UNDETERMINED) |
172 | { |
173 | policy=nojs_get_policy_for_unknown_domain(priv->manager); |
174 | @@ -371,8 +371,11 @@ |
175 | // TODO: Set uri also to ensure this uri is going to be reloaded |
176 | } |
177 | |
178 | - _nojs_view_add_site_to_menu(self, domain, policy); |
179 | - if(domain) g_free(domain); |
180 | + if(domain) |
181 | + { |
182 | + _nojs_view_add_site_to_menu(self, domain, policy); |
183 | + g_free(domain); |
184 | + } |
185 | } |
186 | |
187 | /* Free allocated resources */ |
188 | |
189 | === modified file 'extensions/nojs/nojs.c' |
190 | --- extensions/nojs/nojs.c 2013-09-16 23:18:48 +0000 |
191 | +++ extensions/nojs/nojs.c 2014-05-09 14:51:38 +0000 |
192 | @@ -29,7 +29,7 @@ |
193 | |
194 | PROP_DATABASE, |
195 | PROP_DATABASE_FILENAME, |
196 | - PROP_ALLOW_ALL_SITES, |
197 | + PROP_ALLOW_LOCAL_PAGES, |
198 | PROP_ONLY_SECOND_LEVEL, |
199 | PROP_UNKNOWN_DOMAIN_POLICY, |
200 | |
201 | @@ -60,7 +60,7 @@ |
202 | MidoriApp *application; |
203 | sqlite3 *database; |
204 | gchar *databaseFilename; |
205 | - gboolean allowAllSites; |
206 | + gboolean allowLocalPages; |
207 | gboolean checkOnlySecondLevel; |
208 | NoJSPolicy unknownDomainPolicy; |
209 | |
210 | @@ -285,7 +285,6 @@ |
211 | const gchar *contentType; |
212 | SoupURI *uri; |
213 | gchar *uriText; |
214 | - gchar *domain; |
215 | NoJSPolicy policy; |
216 | gboolean isJS; |
217 | const gchar **iter; |
218 | @@ -315,11 +314,8 @@ |
219 | * get policy for domain of URI and emit signal |
220 | */ |
221 | uri=soup_message_get_uri(message); |
222 | - |
223 | - domain=nojs_get_domain(self, uri); |
224 | - g_return_if_fail(domain); |
225 | - |
226 | - policy=nojs_get_policy(self, domain); |
227 | + policy=nojs_get_policy(self, uri); |
228 | + |
229 | if(policy==NOJS_POLICY_UNDETERMINED) |
230 | { |
231 | g_warning("Got invalid policy. Using default policy for unknown domains."); |
232 | @@ -331,7 +327,6 @@ |
233 | g_signal_emit(self, NoJSSignals[URI_LOAD_POLICY_STATUS], 0, uriText, policy==NOJS_POLICY_UNDETERMINED ? NOJS_POLICY_BLOCK : policy); |
234 | |
235 | g_free(uriText); |
236 | - g_free(domain); |
237 | |
238 | /* Return here if policy is any type of accept */ |
239 | if(policy!=NOJS_POLICY_UNDETERMINED && policy!=NOJS_POLICY_BLOCK) return; |
240 | @@ -636,9 +631,9 @@ |
241 | _nojs_on_application_changed(self); |
242 | break; |
243 | |
244 | - case PROP_ALLOW_ALL_SITES: |
245 | - self->priv->allowAllSites=g_value_get_boolean(inValue); |
246 | - g_object_notify_by_pspec(G_OBJECT(self), NoJSProperties[PROP_ALLOW_ALL_SITES]); |
247 | + case PROP_ALLOW_LOCAL_PAGES: |
248 | + self->priv->allowLocalPages=g_value_get_boolean(inValue); |
249 | + g_object_notify_by_pspec(G_OBJECT(self), NoJSProperties[PROP_ALLOW_LOCAL_PAGES]); |
250 | break; |
251 | |
252 | case PROP_ONLY_SECOND_LEVEL: |
253 | @@ -682,8 +677,8 @@ |
254 | g_value_set_string(outValue, self->priv->databaseFilename); |
255 | break; |
256 | |
257 | - case PROP_ALLOW_ALL_SITES: |
258 | - g_value_set_boolean(outValue, self->priv->allowAllSites); |
259 | + case PROP_ALLOW_LOCAL_PAGES: |
260 | + g_value_set_boolean(outValue, self->priv->allowLocalPages); |
261 | break; |
262 | |
263 | case PROP_ONLY_SECOND_LEVEL: |
264 | @@ -743,24 +738,24 @@ |
265 | NULL, |
266 | G_PARAM_READABLE); |
267 | |
268 | - NoJSProperties[PROP_ALLOW_ALL_SITES]= |
269 | - g_param_spec_boolean("allow-all-sites", |
270 | - _("Allow all sites"), |
271 | - _("If true this extension will not check policy for each site but allow them."), |
272 | - FALSE, |
273 | + NoJSProperties[PROP_ALLOW_LOCAL_PAGES]= |
274 | + g_param_spec_boolean("allow-local-pages", |
275 | + _("Allow local pages"), |
276 | + _("Allow scripts to run on local (file://) pages"), |
277 | + TRUE, |
278 | G_PARAM_READWRITE | G_PARAM_CONSTRUCT); |
279 | |
280 | NoJSProperties[PROP_ONLY_SECOND_LEVEL]= |
281 | g_param_spec_boolean("only-second-level", |
282 | _("Only second level"), |
283 | - _("If true this extension will reduce each domain to its second-level (www.example.org will reduced to example.org)"), |
284 | + _("Reduce each domain to its second-level (e.g. www.example.org to example.org) for comparison"), |
285 | TRUE, |
286 | G_PARAM_READWRITE | G_PARAM_CONSTRUCT); |
287 | |
288 | NoJSProperties[PROP_UNKNOWN_DOMAIN_POLICY]= |
289 | g_param_spec_enum("unknown-domain-policy", |
290 | _("Unknown domain policy"), |
291 | - _("Policy to use for unknown domains."), |
292 | + _("Policy to use for unknown domains"), |
293 | NOJS_TYPE_POLICY, |
294 | NOJS_POLICY_BLOCK, |
295 | G_PARAM_READWRITE | G_PARAM_CONSTRUCT); |
296 | @@ -843,7 +838,7 @@ |
297 | /* Set up default values */ |
298 | priv->database=NULL; |
299 | priv->databaseFilename=NULL; |
300 | - priv->allowAllSites=FALSE; |
301 | + priv->allowLocalPages=TRUE; |
302 | priv->checkOnlySecondLevel=TRUE; |
303 | priv->unknownDomainPolicy=NOJS_POLICY_BLOCK; |
304 | |
305 | @@ -888,22 +883,30 @@ |
306 | } |
307 | |
308 | /* Get/set policy for javascript from site */ |
309 | -gint nojs_get_policy(NoJS *self, const gchar *inDomain) |
310 | +gint nojs_get_policy(NoJS *self, SoupURI *inURI) |
311 | { |
312 | g_return_val_if_fail(IS_NOJS(self), NOJS_POLICY_UNDETERMINED); |
313 | - g_return_val_if_fail(inDomain, NOJS_POLICY_UNDETERMINED); |
314 | + g_return_val_if_fail(inURI, NOJS_POLICY_UNDETERMINED); |
315 | |
316 | NoJSPrivate *priv=self->priv; |
317 | sqlite3_stmt *statement=NULL; |
318 | gint error; |
319 | gint policy=NOJS_POLICY_UNDETERMINED; |
320 | + gchar *inDomain; |
321 | |
322 | - /* Check to allow all sites */ |
323 | - if(priv->allowAllSites) return(NOJS_POLICY_ACCEPT); |
324 | + /* Check to allow local pages */ |
325 | + if(soup_uri_get_scheme(inURI) == SOUP_URI_SCHEME_FILE) |
326 | + { |
327 | + if(priv->allowLocalPages) return(NOJS_POLICY_ACCEPT); |
328 | + else return(priv->unknownDomainPolicy); |
329 | + } |
330 | |
331 | /* Check for open database */ |
332 | g_return_val_if_fail(priv->database, policy); |
333 | |
334 | + /* Get domain from URI */ |
335 | + inDomain=nojs_get_domain(self, inURI); |
336 | + |
337 | /* Lookup policy for site in database */ |
338 | error=sqlite3_prepare_v2(priv->database, |
339 | "SELECT site, value FROM policies WHERE site LIKE ? LIMIT 1;", |
340 | @@ -975,23 +978,23 @@ |
341 | } |
342 | } |
343 | |
344 | -/* Get/set flag to allow javascript at all sites */ |
345 | -gboolean nojs_get_allow_all_sites(NoJS *self) |
346 | +/* Get/set flag to allow javascript on local pages */ |
347 | +gboolean nojs_get_allow_local_pages(NoJS *self) |
348 | { |
349 | g_return_val_if_fail(IS_NOJS(self), TRUE); |
350 | |
351 | - return(self->priv->allowAllSites); |
352 | + return(self->priv->allowLocalPages); |
353 | } |
354 | |
355 | -void nojs_set_allow_all_sites(NoJS *self, gboolean inAllow) |
356 | +void nojs_set_allow_local_pages(NoJS *self, gboolean inAllow) |
357 | { |
358 | g_return_if_fail(IS_NOJS(self)); |
359 | |
360 | - if(self->priv->allowAllSites!=inAllow) |
361 | + if(self->priv->allowLocalPages!=inAllow) |
362 | { |
363 | - self->priv->allowAllSites=inAllow; |
364 | - midori_extension_set_boolean(self->priv->extension, "allow-all-sites", inAllow); |
365 | - g_object_notify_by_pspec(G_OBJECT(self), NoJSProperties[PROP_ALLOW_ALL_SITES]); |
366 | + self->priv->allowLocalPages=inAllow; |
367 | + midori_extension_set_boolean(self->priv->extension, "allow-local-pages", inAllow); |
368 | + g_object_notify_by_pspec(G_OBJECT(self), NoJSProperties[PROP_ALLOW_LOCAL_PAGES]); |
369 | } |
370 | } |
371 | |
372 | |
373 | === modified file 'extensions/nojs/nojs.h' |
374 | --- extensions/nojs/nojs.h 2013-07-05 10:29:59 +0000 |
375 | +++ extensions/nojs/nojs.h 2014-05-09 14:51:38 +0000 |
376 | @@ -66,14 +66,14 @@ |
377 | |
378 | gchar* nojs_get_domain(NoJS *self, SoupURI *inURI); |
379 | |
380 | -gint nojs_get_policy(NoJS *self, const gchar *inDomain); |
381 | +gint nojs_get_policy(NoJS *self, SoupURI *inURI); |
382 | void nojs_set_policy(NoJS *self, const gchar *inDomain, NoJSPolicy inPolicy); |
383 | |
384 | NoJSPolicy nojs_get_policy_for_unknown_domain(NoJS *self); |
385 | void nojs_set_policy_for_unknown_domain(NoJS *self, NoJSPolicy inPolicy); |
386 | |
387 | -gboolean nojs_get_allow_all_sites(NoJS *self); |
388 | -void nojs_set_allow_all_sites(NoJS *self, gboolean inAllow); |
389 | +gboolean nojs_get_allow_local_pages(NoJS *self); |
390 | +void nojs_set_allow_local_pages(NoJS *self, gboolean inAllow); |
391 | |
392 | gboolean nojs_get_only_second_level_domain(NoJS *self); |
393 | void nojs_set_only_second_level_domain(NoJS *self, gboolean inOnlySecondLevel); |