Merge lp:~mvo/software-center/auto-fill-email-5.2 into lp:software-center/5.2

Proposed by Michael Vogt
Status: Merged
Merged at revision: 3076
Proposed branch: lp:~mvo/software-center/auto-fill-email-5.2
Merge into: lp:software-center/5.2
Diff against target: 146 lines (+59/-3)
5 files modified
softwarecenter/backend/ubuntusso.py (+5/-0)
softwarecenter/config.py (+0/-1)
softwarecenter/ui/gtk3/views/purchaseview.py (+5/-0)
softwarecenter/ui/gtk3/views/webkit.py (+28/-0)
test/gtk3/test_webkit.py (+21/-2)
To merge this branch: bzr merge lp:~mvo/software-center/auto-fill-email-5.2
Reviewer Review Type Date Requested Status
Gary Lasker (community) Approve
Review via email: mp+122856@code.launchpad.net

Description of the change

Backport of the auto-fill-email branch from quantal for 5.2

To post a comment you must log in.
Revision history for this message
Gary Lasker (gary-lasker) wrote :

Michael, awesome that you backported this. I think it's a really nice usability improvement and folks will appreciate it!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'softwarecenter/backend/ubuntusso.py'
--- softwarecenter/backend/ubuntusso.py 2012-04-24 14:16:06 +0000
+++ softwarecenter/backend/ubuntusso.py 2012-09-05 12:15:24 +0000
@@ -30,6 +30,7 @@
30# mostly for testing30# mostly for testing
31from fake_review_settings import FakeReviewSettings, network_delay31from fake_review_settings import FakeReviewSettings, network_delay
32from spawn_helper import SpawnHelper32from spawn_helper import SpawnHelper
33from softwarecenter.config import get_config
3334
34LOG = logging.getLogger(__name__)35LOG = logging.getLogger(__name__)
3536
@@ -52,6 +53,10 @@
52 GObject.GObject.__init__(self)53 GObject.GObject.__init__(self)
5354
54 def _on_whoami_data(self, spawner, piston_whoami):55 def _on_whoami_data(self, spawner, piston_whoami):
56 # once we have data, make sure to save it
57 config = get_config()
58 config.set("general", "email", piston_whoami["preferred_email"])
59 # emit
55 self.emit("whoami", piston_whoami)60 self.emit("whoami", piston_whoami)
5661
57 def whoami(self):62 def whoami(self):
5863
=== modified file 'softwarecenter/config.py'
--- softwarecenter/config.py 2012-05-15 07:51:29 +0000
+++ softwarecenter/config.py 2012-09-05 12:15:24 +0000
@@ -67,7 +67,6 @@
67 self.configfile, e)67 self.configfile, e)
68 pass68 pass
6969
70
71_software_center_config = None70_software_center_config = None
7271
7372
7473
=== modified file 'softwarecenter/ui/gtk3/views/purchaseview.py'
--- softwarecenter/ui/gtk3/views/purchaseview.py 2012-04-02 18:23:20 +0000
+++ softwarecenter/ui/gtk3/views/purchaseview.py 2012-09-05 12:15:24 +0000
@@ -112,6 +112,11 @@
112 def init_view(self):112 def init_view(self):
113 if self.wk is None:113 if self.wk is None:
114 self.wk = ScrolledWebkitWindow()114 self.wk = ScrolledWebkitWindow()
115 # automatically fill in the email in the login page
116 email = ""
117 if self.config.has_option("general", "email"):
118 email = self.config.get("general", "email")
119 self.wk.webkit.set_auto_insert_email(email)
115 #self.wk.webkit.connect("new-window-policy-decision-requested",120 #self.wk.webkit.connect("new-window-policy-decision-requested",
116 # self._on_new_window)121 # self._on_new_window)
117 self.wk.webkit.connect("create-web-view", self._on_create_web_view)122 self.wk.webkit.connect("create-web-view", self._on_create_web_view)
118123
=== modified file 'softwarecenter/ui/gtk3/views/webkit.py'
--- softwarecenter/ui/gtk3/views/webkit.py 2012-08-28 14:26:41 +0000
+++ softwarecenter/ui/gtk3/views/webkit.py 2012-09-05 12:15:24 +0000
@@ -54,16 +54,30 @@
54 - send Accept-Language headers from the users language54 - send Accept-Language headers from the users language
55 - disable plugings55 - disable plugings
56 - send a custom user-agent string56 - send a custom user-agent string
57 - auto-fill in id_email in login.ubuntu.com
57 """58 """
5859
60 # javascript to auto fill email login on login.ubuntu.com
61 AUTO_FILL_SERVER = "https://login.ubuntu.com"
62 AUTO_FILL_EMAIL_JS = """
63document.getElementById("id_email").value="%s";
64document.getElementById("id_password").focus();
65"""
66
59 def __init__(self):67 def __init__(self):
60 # actual webkit init68 # actual webkit init
61 webkit.WebView.__init__(self)69 webkit.WebView.__init__(self)
62 self.connect("resource-request-starting",70 self.connect("resource-request-starting",
63 self._on_resource_request_starting)71 self._on_resource_request_starting)
72 self.connect("notify::load-status",
73 self._on_load_status_changed)
64 settings = self.get_settings()74 settings = self.get_settings()
65 settings.set_property("enable-plugins", False)75 settings.set_property("enable-plugins", False)
66 settings.set_property("user-agent", self._get_user_agent_string())76 settings.set_property("user-agent", self._get_user_agent_string())
77 self._auto_fill_email = ""
78
79 def set_auto_insert_email(self, email):
80 self._auto_fill_email = email
6781
68 def _get_user_agent_string(self):82 def _get_user_agent_string(self):
69 settings = self.get_settings()83 settings = self.get_settings()
@@ -83,6 +97,20 @@
83 # print name, value97 # print name, value
84 #headers.foreach(_show_header, None)98 #headers.foreach(_show_header, None)
8599
100 def _maybe_auto_fill_in_username(self):
101 uri = self.get_uri()
102 if self._auto_fill_email and uri.startswith(self.AUTO_FILL_SERVER):
103 self.execute_script(
104 self.AUTO_FILL_EMAIL_JS % self._auto_fill_email)
105 # ensure that we have the keyboard focus
106 self.grab_focus()
107
108 def _on_load_status_changed(self, view, pspec):
109 prop = pspec.name
110 status = view.get_property(prop)
111 if status == webkit.LoadStatus.FINISHED:
112 self._maybe_auto_fill_in_username()
113
86114
87class ScrolledWebkitWindow(Gtk.VBox):115class ScrolledWebkitWindow(Gtk.VBox):
88116
89117
=== modified file 'test/gtk3/test_webkit.py'
--- test/gtk3/test_webkit.py 2012-08-28 14:26:41 +0000
+++ test/gtk3/test_webkit.py 2012-09-05 12:15:24 +0000
@@ -1,6 +1,10 @@
1import unittest1import unittest
22
3from gi.repository import Soup, WebKit3from gi.repository import (
4 GObject,
5 Soup,
6 WebKit,
7 )
48
5from mock import patch9from mock import patch
610
@@ -36,7 +40,22 @@
36 self.assertTrue(40 self.assertTrue(
37 canary in settings.get_property("user-agent"))41 canary in settings.get_property("user-agent"))
38 42
39 43 def test_auto_fill_in_email(self):
44 def _load_status_changed(view, status):
45 if view.get_property("load-status") == WebKit.LoadStatus.FINISHED:
46 loop.quit()
47 loop = GObject.MainLoop(GObject.main_context_default())
48 webview = SoftwareCenterWebView()
49 email = "foo@bar"
50 webview.set_auto_insert_email(email)
51 with patch.object(webview, "execute_script") as mock_execute_js:
52 webview.connect("notify::load-status", _load_status_changed)
53 webview.load_uri("https://login.ubuntu.com")
54 loop.run()
55 mock_execute_js.assert_called()
56 mock_execute_js.assert_called_with(
57 SoftwareCenterWebView.AUTO_FILL_EMAIL_JS % email)
58
4059
41if __name__ == "__main__":60if __name__ == "__main__":
42 unittest.main()61 unittest.main()

Subscribers

People subscribed via source and target branches