[gnome-shell] portalHelper: Don't change the main window title
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] portalHelper: Don't change the main window title
- Date: Tue, 24 Jan 2017 12:36:40 +0000 (UTC)
commit 49607e1313951ad1eb35615cf76ea043c4bee0d5
Author: Bastien Nocera <hadess hadess net>
Date: Mon Jan 23 08:32:30 2017 +0100
portalHelper: Don't change the main window title
The title of the window should not be in control of a potentially
hostile hotspot provider, so only set the subtitle to be that of the
page, the main title will stay the same.
The subtitle will also be set to a URI, so that the hotspot cannot be
used to control the title shown in our UI.
Helps https://bugzilla.gnome.org/show_bug.cgi?id=749197
js/portalHelper/main.js | 26 ++++++++++++++------------
1 files changed, 14 insertions(+), 12 deletions(-)
---
diff --git a/js/portalHelper/main.js b/js/portalHelper/main.js
index c7d0433..94e7a8d 100644
--- a/js/portalHelper/main.js
+++ b/js/portalHelper/main.js
@@ -51,7 +51,13 @@ const PortalWindow = new Lang.Class({
_init: function(application, url, timestamp, doneCallback) {
this.parent({ application: application });
+
this.connect('delete-event', Lang.bind(this, this.destroyWindow));
+ /* TRANSLATORS: this is the title of the wifi captive portal login window */
+ this._headerBar = new Gtk.HeaderBar({ title: _("Hotspot Login"),
+ show_close_button: true });
+ this.set_titlebar(this._headerBar);
+ this._headerBar.show();
if (!url) {
url = CONNECTIVITY_CHECK_URI;
@@ -76,8 +82,8 @@ const PortalWindow = new Lang.Class({
this._webView = WebKit.WebView.new_with_context(webContext);
this._webView.connect('decide-policy', Lang.bind(this, this._onDecidePolicy));
this._webView.load_uri(url);
- this._webView.connect('notify::title', Lang.bind(this, this._syncTitle));
- this._syncTitle();
+ this._webView.connect('notify::uri', Lang.bind(this, this._syncUri));
+ this._syncUri();
this.add(this._webView);
this._webView.show();
@@ -93,16 +99,12 @@ const PortalWindow = new Lang.Class({
FileUtils.recursivelyDeleteDir(this._cacheDir, true);
},
- _syncTitle: function() {
- let title = this._webView.title;
-
- if (title) {
- this.title = title;
- } else {
- /* TRANSLATORS: this is the title of the wifi captive portal login
- * window, until we know the title of the actual login page */
- this.title = _("Web Authentication Redirect");
- }
+ _syncUri: function() {
+ let uri = this._webView.uri;
+ if (uri)
+ this._headerBar.set_subtitle(GLib.uri_unescape_string(uri, null, false));
+ else
+ this._headerBar.set_subtitle(null);
},
refresh: function() {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]