Merge lp:~gue5t/midori/nojs-local-pages into lp:midori

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
Reviewer Review Type Date Requested Status
Paweł Forysiuk Approve
Review via email: mp+219002@code.launchpad.net

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
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);

Subscribers

People subscribed via source and target branches

to all changes: