diff -Nru software-center-5.2.6/debian/changelog software-center-5.2.7/debian/changelog --- software-center-5.2.6/debian/changelog 2012-08-27 10:03:48.000000000 +0000 +++ software-center-5.2.7/debian/changelog 2012-09-26 07:39:45.000000000 +0000 @@ -1,3 +1,24 @@ +software-center (5.2.7) precise-proposed; urgency=low + + * lp:~mvo/software-center/oem-descriptor-in-user-agent-5.2: + - include the oem-channel descriptor in the custom user agent + string (LP: #1042749) + * lp:~mvo/software-center/auto-fill-email-for-login: + - allow auto-fill of the email in login.ubuntu.com if + we have it (LP: #1042279) + * lp:~mvo/software-center/fix-memleak-5.2: + - fix two memory leaks when the cache is re-opened after + a package has been installed/removed (LP: #1003466) + * lp:~mvo/software-center/region-whitelist-5.2: + - fix missing region whitelist support that is used by + the software-center-agent (LP: #1006570) + * lp:~mvo/software-center/downloader-fix-race839462-again-5.2: + - fix a race condition in the SimpleFileDownloader when the file + is downloaded but the signal did not get delivered yet by the + gtk event loop (LP: #1055441) + + -- Michael Vogt Wed, 26 Sep 2012 09:39:43 +0200 + software-center (5.2.6) precise-proposed; urgency=low * lp:~mvo/software-center/fix-lp870847-5.2: diff -Nru software-center-5.2.6/softwarecenter/backend/ubuntusso.py software-center-5.2.7/softwarecenter/backend/ubuntusso.py --- software-center-5.2.6/softwarecenter/backend/ubuntusso.py 2012-06-27 14:44:59.000000000 +0000 +++ software-center-5.2.7/softwarecenter/backend/ubuntusso.py 2012-09-12 08:14:45.000000000 +0000 @@ -30,6 +30,7 @@ # mostly for testing from fake_review_settings import FakeReviewSettings, network_delay from spawn_helper import SpawnHelper +from softwarecenter.config import get_config LOG = logging.getLogger(__name__) @@ -52,6 +53,10 @@ GObject.GObject.__init__(self) def _on_whoami_data(self, spawner, piston_whoami): + # once we have data, make sure to save it + config = get_config() + config.set("general", "email", piston_whoami["preferred_email"]) + # emit self.emit("whoami", piston_whoami) def whoami(self): diff -Nru software-center-5.2.6/softwarecenter/config.py software-center-5.2.7/softwarecenter/config.py --- software-center-5.2.6/softwarecenter/config.py 2012-06-27 14:44:59.000000000 +0000 +++ software-center-5.2.7/softwarecenter/config.py 2012-09-12 08:14:45.000000000 +0000 @@ -67,7 +67,6 @@ self.configfile, e) pass - _software_center_config = None diff -Nru software-center-5.2.6/softwarecenter/db/update.py software-center-5.2.7/softwarecenter/db/update.py --- software-center-5.2.6/softwarecenter/db/update.py 2012-06-27 14:44:59.000000000 +0000 +++ software-center-5.2.7/softwarecenter/db/update.py 2012-09-12 08:32:26.000000000 +0000 @@ -67,8 +67,16 @@ from softwarecenter.db.pkginfo import get_pkg_info -from softwarecenter.distro import get_current_arch, get_foreign_architectures -from softwarecenter.region import get_region_cached, REGION_BLACKLIST_TAG +from softwarecenter.distro import ( + get_current_arch, + get_foreign_architectures, + ) +from softwarecenter.region import ( + get_region_cached, + REGION_BLACKLIST_TAG, + REGION_WHITELIST_TAG, + ) + # weights for the different fields WEIGHT_DESKTOP_NAME = 10 @@ -919,17 +927,27 @@ # (deb)tags (in addition to the pkgname debtags if parser.has_option_desktop("X-AppInstall-Tags"): # register tags - tags = parser.get_desktop("X-AppInstall-Tags") - if tags: - for tag in tags.split(","): - doc.add_term("XT" + tag.strip()) - # ENFORCE region blacklist by not registering the app at all - region = get_region_cached() - if region: - countrycode = region["countrycode"].lower() - if "%s%s" % (REGION_BLACKLIST_TAG, countrycode) in tags: - LOG.info("skipping region restricted app: '%s'" % name) - return + tags_string = parser.get_desktop("X-AppInstall-Tags") + if tags_string: + tags = [tag.strip().lower() for tag in tags_string.split(",")] + for tag in tags: + doc.add_term("XT" + tag) + region = get_region_cached() + if region: + # ENFORCE region blacklist/whitelist by not registering + # the app at all + countrycode = region["countrycode"].lower() + if "%s%s" % (REGION_BLACKLIST_TAG, countrycode) in tags: + LOG.info("skipping region restricted app: '%s'" + " (blacklisted) " % name) + return + # whitelist + for tag in tags: + if (tag.startswith(REGION_WHITELIST_TAG) and not + "%s%s" % (REGION_WHITELIST_TAG, countrycode) in tag): + LOG.info("skipping region restricted app: '%s'" + " (not whitelisted)" % name) + return # popcon # FIXME: popularity not only based on popcon but also diff -Nru software-center-5.2.6/softwarecenter/enums.py software-center-5.2.7/softwarecenter/enums.py --- software-center-5.2.6/softwarecenter/enums.py 2012-07-18 15:18:43.000000000 +0000 +++ software-center-5.2.7/softwarecenter/enums.py 2012-09-12 08:14:45.000000000 +0000 @@ -262,7 +262,7 @@ PURCHASE_TRANSACTION_ID = "FakePurchaseTransactionID" from .version import VERSION, DISTRO, RELEASE, CODENAME -USER_AGENT = "Software Center/%s (N;) %s/%s (%s)" % ( +WEBKIT_USER_AGENT_SUFFIX = "SoftwareCenter/%s %s/%s (%s)" % ( VERSION, DISTRO, RELEASE, CODENAME) # global backend switch, prefer aptdaemon, if that can not be found, use PK diff -Nru software-center-5.2.6/softwarecenter/paths.py software-center-5.2.7/softwarecenter/paths.py --- software-center-5.2.6/softwarecenter/paths.py 2012-06-27 14:44:59.000000000 +0000 +++ software-center-5.2.7/softwarecenter/paths.py 2012-09-12 08:14:45.000000000 +0000 @@ -70,6 +70,9 @@ APT_XAPIAN_INDEX_UPDATE_STAMP_PATH = (APT_XAPIAN_INDEX_BASE_PATH + "/update-timestamp") +# OEM +OEM_CHANNEL_DESCRIPTOR = "/var/lib/ubuntu-dist-channel" + # ratings&review # relative to datadir diff -Nru software-center-5.2.6/softwarecenter/region.py software-center-5.2.7/softwarecenter/region.py --- software-center-5.2.6/softwarecenter/region.py 2012-07-19 07:10:40.000000000 +0000 +++ software-center-5.2.7/softwarecenter/region.py 2012-09-12 08:32:26.000000000 +0000 @@ -38,6 +38,8 @@ # blacklist this region REGION_BLACKLIST_TAG = "blacklist-iso3166::" +# or whitelist it +REGION_WHITELIST_TAG = "whitelist-iso3166::" def get_region_name(countrycode): diff -Nru software-center-5.2.6/softwarecenter/ui/gtk3/models/appstore2.py software-center-5.2.7/softwarecenter/ui/gtk3/models/appstore2.py --- software-center-5.2.6/softwarecenter/ui/gtk3/models/appstore2.py 2012-06-27 14:44:59.000000000 +0000 +++ software-center-5.2.7/softwarecenter/ui/gtk3/models/appstore2.py 2012-09-26 08:18:18.000000000 +0000 @@ -168,7 +168,8 @@ if doc.available is None: pkgname = self.get_pkgname(doc) doc.available = ( - (pkgname in self.cache and self.cache[pkgname].candidate) + (pkgname in self.cache and + self.cache[pkgname].candidate is not None) or self.is_purchasable(doc)) return doc.available diff -Nru software-center-5.2.6/softwarecenter/ui/gtk3/views/purchaseview.py software-center-5.2.7/softwarecenter/ui/gtk3/views/purchaseview.py --- software-center-5.2.6/softwarecenter/ui/gtk3/views/purchaseview.py 2012-07-26 08:50:33.000000000 +0000 +++ software-center-5.2.7/softwarecenter/ui/gtk3/views/purchaseview.py 2012-09-12 08:14:45.000000000 +0000 @@ -112,6 +112,11 @@ def init_view(self): if self.wk is None: self.wk = ScrolledWebkitWindow() + # automatically fill in the email in the login page + email = "" + if self.config.has_option("general", "email"): + email = self.config.get("general", "email") + self.wk.webkit.set_auto_insert_email(email) #self.wk.webkit.connect("new-window-policy-decision-requested", # self._on_new_window) self.wk.webkit.connect("create-web-view", self._on_create_web_view) diff -Nru software-center-5.2.6/softwarecenter/ui/gtk3/views/webkit.py software-center-5.2.7/softwarecenter/ui/gtk3/views/webkit.py --- software-center-5.2.6/softwarecenter/ui/gtk3/views/webkit.py 2012-06-28 08:34:57.000000000 +0000 +++ software-center-5.2.7/softwarecenter/ui/gtk3/views/webkit.py 2012-09-12 08:14:45.000000000 +0000 @@ -26,6 +26,8 @@ from softwarecenter.i18n import get_language from softwarecenter.paths import SOFTWARE_CENTER_CACHE_DIR +from softwarecenter.enums import WEBKIT_USER_AGENT_SUFFIX +from softwarecenter.utils import get_oem_channel_descriptor from gi.repository import Soup from gi.repository import WebKit @@ -45,13 +47,44 @@ global_webkit_init() -class LocaleAwareWebView(webkit.WebView): +class SoftwareCenterWebView(webkit.WebView): + """ A customized version of the regular webview + + It will: + - send Accept-Language headers from the users language + - disable plugings + - send a custom user-agent string + - auto-fill in id_email in login.ubuntu.com + """ + + # javascript to auto fill email login on login.ubuntu.com + AUTO_FILL_SERVER = "https://login.ubuntu.com" + AUTO_FILL_EMAIL_JS = """ +document.getElementById("id_email").value="%s"; +document.getElementById("id_password").focus(); +""" def __init__(self): # actual webkit init webkit.WebView.__init__(self) self.connect("resource-request-starting", self._on_resource_request_starting) + self.connect("notify::load-status", + self._on_load_status_changed) + settings = self.get_settings() + settings.set_property("enable-plugins", False) + settings.set_property("user-agent", self._get_user_agent_string()) + self._auto_fill_email = "" + + def set_auto_insert_email(self, email): + self._auto_fill_email = email + + def _get_user_agent_string(self): + settings = self.get_settings() + user_agent_string = settings.get_property("user-agent") + user_agent_string += " %s " % WEBKIT_USER_AGENT_SUFFIX + user_agent_string += get_oem_channel_descriptor() + return user_agent_string def _on_resource_request_starting(self, view, frame, res, req, resp): lang = get_language() @@ -64,15 +97,27 @@ # print name, value #headers.foreach(_show_header, None) + def _maybe_auto_fill_in_username(self): + uri = self.get_uri() + if self._auto_fill_email and uri.startswith(self.AUTO_FILL_SERVER): + self.execute_script( + self.AUTO_FILL_EMAIL_JS % self._auto_fill_email) + # ensure that we have the keyboard focus + self.grab_focus() + + def _on_load_status_changed(self, view, pspec): + prop = pspec.name + status = view.get_property(prop) + if status == webkit.LoadStatus.FINISHED: + self._maybe_auto_fill_in_username() + class ScrolledWebkitWindow(Gtk.VBox): def __init__(self, include_progress_ui=False): super(ScrolledWebkitWindow, self).__init__() # get webkit - self.webkit = LocaleAwareWebView() - settings = self.webkit.get_settings() - settings.set_property("enable-plugins", False) + self.webkit = SoftwareCenterWebView() # add progress UI if needed if include_progress_ui: self._add_progress_ui() diff -Nru software-center-5.2.6/softwarecenter/ui/gtk3/widgets/buttons.py software-center-5.2.7/softwarecenter/ui/gtk3/widgets/buttons.py --- software-center-5.2.6/softwarecenter/ui/gtk3/widgets/buttons.py 2012-06-27 14:44:59.000000000 +0000 +++ software-center-5.2.7/softwarecenter/ui/gtk3/widgets/buttons.py 2012-09-12 08:14:45.000000000 +0000 @@ -178,6 +178,7 @@ label = helper.get_appname(doc) icon = helper.get_icon_at_size(doc, icon_size, icon_size) stats = helper.get_review_stats(doc) + self.helper = helper helper.update_availability(doc) helper.connect("needs-refresh", self._on_needs_refresh, doc, icon_size) self.is_installed = helper.is_installed(doc) @@ -268,16 +269,23 @@ for t in [label, categories, stats_a11y, price] if t]) self.get_accessible().set_name(a11y_name) - backend = get_install_backend() - backend.connect("transaction-finished", - self.on_transaction_finished, - helper, doc) + self.backend = get_install_backend() + self.backend.connect("transaction-finished", + self.on_transaction_finished, + helper, doc) self.connect("enter-notify-event", self.on_enter) self.connect("leave-notify-event", self.on_leave) self.connect("button-press-event", self.on_press) self.connect("button-release-event", self.on_release) + def destroy(self): + # the disconnect the suff connected to "self" is taken care + # of by this super() + super(FeaturedTile, self).destroy() + self.backend.disconnect_by_func(self.on_transaction_finished) + self.helper.disconnect_by_func(self._on_needs_refresh) + def _on_needs_refresh(self, helper, pkgname, doc, icon_size): icon = helper.get_icon_at_size(doc, icon_size, icon_size) _update_icon(self.image, icon, icon_size) diff -Nru software-center-5.2.6/softwarecenter/ui/gtk3/widgets/containers.py software-center-5.2.7/softwarecenter/ui/gtk3/widgets/containers.py --- software-center-5.2.6/softwarecenter/ui/gtk3/widgets/containers.py 2012-06-27 14:44:59.000000000 +0000 +++ software-center-5.2.7/softwarecenter/ui/gtk3/widgets/containers.py 2012-09-26 08:18:39.000000000 +0000 @@ -175,10 +175,16 @@ self.column_spacing = value self._layout_children(self.get_allocation()) - def remove_all(self): + def remove_all(self, destroy=True): self._cell_size = None for child in self: self.remove(child) + # meh, this should not really be necessary, but e.g. the + # TileButtons have pretty high refcounts even after remove (~10) + if destroy: + #print child.__grefcount__ + child.destroy() + del child # first tier of caching, cache component assets from which frames are diff -Nru software-center-5.2.6/softwarecenter/utils.py software-center-5.2.7/softwarecenter/utils.py --- software-center-5.2.6/softwarecenter/utils.py 2012-07-18 15:18:43.000000000 +0000 +++ software-center-5.2.7/softwarecenter/utils.py 2012-09-26 07:39:27.000000000 +0000 @@ -38,7 +38,10 @@ from urlparse import urlsplit from enums import Icons, APP_INSTALL_PATH_DELIMITER -from paths import SOFTWARE_CENTER_CACHE_DIR +from paths import ( + SOFTWARE_CENTER_CACHE_DIR, + OEM_CHANNEL_DESCRIPTOR, + ) from config import get_config @@ -741,6 +744,15 @@ raise +def get_oem_channel_descriptor(path=OEM_CHANNEL_DESCRIPTOR): + """Return the ubuntu distribution channel descriptor or a empty string """ + if not os.path.exists(path): + return "" + with open(path) as f: + for line in filter(lambda l: not l.startswith("#"), f): + return line.strip() + + class SimpleFileDownloader(GObject.GObject): LOG = logging.getLogger("softwarecenter.simplefiledownloader") @@ -825,11 +837,28 @@ f.query_info_async(Gio.FILE_ATTRIBUTE_STANDARD_SIZE, 0, 0, self._cancellable, self._check_url_reachable_and_then_download_cb, - None) + url) - def _check_url_reachable_and_then_download_cb(self, f, result, - user_data=None): + def _ensure_correct_url(self, want_url): + """This function will ensure that the url we requested to download + earlier matches that is now downloaded. + """ + # this function is needed as there is a rance condition when the + # operation is finished but the signal is not delivered yet (its + # still in the gtk event loop). in this case there is nothing to + # self._cancel but self.url/self.dest_file_path will still point to + # the wrong file + if self.url != want_url: + self.LOG.warn("url changed from '%s' to '%s'" % ( + want_url, self.url)) + return False + return True + + def _check_url_reachable_and_then_download_cb(self, f, result, want_url): self.LOG.debug("_check_url_reachable_and_then_download_cb: %s" % f) + if not self._ensure_correct_url(want_url): + return + # normal operation try: info = f.query_info_finish(result) etag = info.get_etag() @@ -839,15 +868,17 @@ etag)) # url is reachable, now download the file f.load_contents_async( - self._cancellable, self._file_download_complete_cb, None) + self._cancellable, self._file_download_complete_cb, want_url) except GObject.GError as e: self.LOG.debug("file *not* reachable %s" % self.url) self.emit('file-url-reachable', False) self.emit('error', GObject.GError, e) del f - def _file_download_complete_cb(self, f, result, path=None): + def _file_download_complete_cb(self, f, result, want_url): self.LOG.debug("file download completed %s" % self.dest_file_path) + if not self._ensure_correct_url(want_url): + return # The result from the download is actually a tuple with three # elements (content, size, etag?) # The first element is the actual content so let's grab that diff -Nru software-center-5.2.6/softwarecenter/version.py software-center-5.2.7/softwarecenter/version.py --- software-center-5.2.6/softwarecenter/version.py 2012-08-27 10:12:46.000000000 +0000 +++ software-center-5.2.7/softwarecenter/version.py 2012-09-26 08:28:25.000000000 +0000 @@ -1,5 +1,5 @@ -VERSION='5.2.6' +VERSION='5.2.7' CODENAME='precise-proposed' DISTRO='Ubuntu' RELEASE='12.04' diff -Nru software-center-5.2.6/test/coverage_summary software-center-5.2.7/test/coverage_summary --- software-center-5.2.6/test/coverage_summary 2012-08-27 10:12:36.000000000 +0000 +++ software-center-5.2.7/test/coverage_summary 2012-09-26 08:28:16.000000000 +0000 @@ -1,132 +1,132 @@ Name Stmts Miss Cover ---------------------------------------------------------------------------------------------------------------------------------------------- -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/__init__ 0 0 100% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/__init__ 2 0 100% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/channel 183 15 92% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/channel_impl/__init__ 0 0 100% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/channel_impl/aptchannels 144 45 69% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/fake_review_settings 76 33 57% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/installbackend 36 14 61% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/installbackend_impl/__init__ 0 0 100% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/installbackend_impl/aptd 503 322 36% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/launchpad 184 112 39% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/login 9 2 78% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/login_sso 97 33 66% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/oneconfhandler/__init__ 17 5 71% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/oneconfhandler/core 97 12 88% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/piston/__init__ 0 0 100% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/piston/rnrclient 44 29 34% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/piston/rnrclient_fake 147 80 46% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/piston/rnrclient_pristine 80 26 68% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/recagent 138 47 66% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/reviews/__init__ 361 129 64% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/reviews/rnr 205 98 52% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/scagent 82 23 72% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/spawn_helper 90 14 84% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/transactionswatcher 50 19 62% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/ubuntusso 75 38 49% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/unitylauncher 32 11 66% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/weblive 168 97 42% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/backend/weblive_pristine 147 84 43% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/cmdfinder 31 0 100% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/config 39 16 59% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/db/__init__ 11 6 45% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/db/appfilter 72 11 85% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/db/application 520 111 79% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/db/categories 310 36 88% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/db/database 369 92 75% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/db/debfile 134 35 74% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/db/enquire 146 5 97% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/db/history 36 13 64% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/db/history_impl/__init__ 0 0 100% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/db/history_impl/apthistory 132 33 75% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/db/pkginfo 107 36 66% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/db/pkginfo_impl/__init__ 0 0 100% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/db/pkginfo_impl/aptcache 524 155 70% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/db/update 657 63 90% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/db/utils 23 0 100% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/distro/Debian 86 61 29% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/distro/Ubuntu 126 50 60% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/distro/__init__ 90 43 52% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/enums 127 8 94% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/expunge 44 31 30% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/gwibber_helper 64 20 69% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/hw 40 0 100% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/i18n 47 4 91% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/log 57 1 98% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/netstatus 88 18 80% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/paths 46 8 83% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/plugin 62 4 94% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/region 79 5 94% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/testutils 154 6 96% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/__init__ 0 0 100% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/SimpleGtkbuilderApp 19 5 74% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/__init__ 0 0 100% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/app 753 336 55% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/aptd_gtk3 44 36 18% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/dialogs/__init__ 80 28 65% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/dialogs/deauthorize_dialog 79 67 15% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/dialogs/dependency_dialogs 79 19 76% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/dialogs/dialog_tos 50 5 90% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/drawing 66 32 52% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/em 33 0 100% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/gmenusearch 82 35 57% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/models/__init__ 0 0 100% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/models/appstore2 287 27 91% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/models/pendingstore 117 69 41% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/panes/__init__ 0 0 100% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/panes/availablepane 443 131 70% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/panes/basepane 15 5 67% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/panes/globalpane 58 4 93% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/panes/historypane 252 22 91% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/panes/installedpane 461 147 68% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/panes/pendingpane 95 28 71% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/panes/softwarepane 274 54 80% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/panes/viewswitcher 168 65 61% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/review_gui_helper 795 303 62% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/session/__init__ 0 0 100% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/session/appmanager 91 12 87% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/session/navhistory 165 17 90% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/session/viewmanager 131 26 80% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/utils 65 8 88% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/views/__init__ 0 0 100% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/views/appdetailsview 1271 179 86% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/views/appview 194 32 84% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/views/catview_gtk 460 64 86% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/views/pkgnamesview 64 8 88% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/views/purchaseview 203 81 60% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/views/webkit 74 29 61% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/__init__ 0 0 100% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/actionbar 214 78 64% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/apptreeview 464 226 51% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/backforward 101 20 80% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/buttons 411 66 84% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/cellrenderers 309 51 83% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/containers 378 24 94% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/description 791 424 46% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/exhibits 374 53 86% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/imagedialog 35 3 91% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/labels 61 11 82% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/menubutton 64 45 30% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/oneconfviews 98 44 55% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/recommendations 221 76 66% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/reviews 583 108 81% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/searchaid 179 61 66% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/searchentry 90 25 72% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/separators 26 0 100% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/spinner 71 2 97% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/stars 362 44 88% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/symbolic_icons 149 10 93% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/thumbnail 340 59 83% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/videoplayer 113 55 51% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/viewport 24 15 38% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/gtk3/widgets/weblivedialog 68 58 15% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/qml/__init__ 0 0 100% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/qml/categoriesmodel 53 21 60% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/qml/pkglist 134 66 51% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/ui/qml/reviewslist 46 3 93% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/utils 471 121 74% -/scratch/egon/devel/software-center/build-area/software-center-5.2.6/softwarecenter/version 4 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/__init__ 0 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/__init__ 2 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/channel 183 18 90% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/channel_impl/__init__ 0 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/channel_impl/aptchannels 144 51 65% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/fake_review_settings 76 33 57% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/installbackend 36 14 61% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/installbackend_impl/__init__ 0 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/installbackend_impl/aptd 503 322 36% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/launchpad 184 112 39% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/login 9 2 78% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/login_sso 97 33 66% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/oneconfhandler/__init__ 17 5 71% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/oneconfhandler/core 97 14 86% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/piston/__init__ 0 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/piston/rnrclient 44 29 34% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/piston/rnrclient_fake 147 80 46% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/piston/rnrclient_pristine 80 26 68% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/recagent 138 47 66% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/reviews/__init__ 361 142 61% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/reviews/rnr 205 98 52% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/scagent 82 23 72% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/spawn_helper 90 14 84% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/transactionswatcher 50 19 62% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/ubuntusso 78 38 51% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/unitylauncher 32 11 66% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/weblive 168 97 42% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/backend/weblive_pristine 147 84 43% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/cmdfinder 31 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/config 39 16 59% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/db/__init__ 11 6 45% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/db/appfilter 72 11 85% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/db/application 520 111 79% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/db/categories 310 36 88% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/db/database 369 92 75% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/db/debfile 134 35 74% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/db/enquire 146 5 97% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/db/history 36 13 64% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/db/history_impl/__init__ 0 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/db/history_impl/apthistory 132 33 75% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/db/pkginfo 107 36 66% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/db/pkginfo_impl/__init__ 0 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/db/pkginfo_impl/aptcache 524 153 71% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/db/update 662 63 90% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/db/utils 23 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/distro/Debian 86 61 29% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/distro/Ubuntu 126 50 60% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/distro/__init__ 90 43 52% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/enums 127 8 94% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/expunge 44 31 30% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/gwibber_helper 64 20 69% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/hw 40 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/i18n 47 4 91% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/log 57 1 98% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/netstatus 88 18 80% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/paths 47 8 83% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/plugin 62 4 94% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/region 80 5 94% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/testutils 154 6 96% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/__init__ 0 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/SimpleGtkbuilderApp 19 5 74% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/__init__ 0 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/app 753 336 55% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/aptd_gtk3 44 36 18% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/dialogs/__init__ 80 28 65% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/dialogs/deauthorize_dialog 79 67 15% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/dialogs/dependency_dialogs 79 19 76% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/dialogs/dialog_tos 50 5 90% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/drawing 66 32 52% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/em 33 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/gmenusearch 82 35 57% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/models/__init__ 0 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/models/appstore2 287 39 86% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/models/pendingstore 117 69 41% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/panes/__init__ 0 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/panes/availablepane 443 131 70% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/panes/basepane 15 5 67% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/panes/globalpane 58 4 93% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/panes/historypane 252 22 91% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/panes/installedpane 461 147 68% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/panes/pendingpane 95 28 71% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/panes/softwarepane 274 54 80% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/panes/viewswitcher 168 65 61% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/review_gui_helper 795 303 62% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/session/__init__ 0 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/session/appmanager 91 12 87% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/session/navhistory 165 17 90% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/session/viewmanager 131 26 80% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/utils 65 8 88% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/views/__init__ 0 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/views/appdetailsview 1271 180 86% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/views/appview 194 32 84% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/views/catview_gtk 460 64 86% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/views/pkgnamesview 64 8 88% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/views/purchaseview 207 81 61% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/views/webkit 99 29 71% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/__init__ 0 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/actionbar 214 78 64% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/apptreeview 464 226 51% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/backforward 101 20 80% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/buttons 416 66 84% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/cellrenderers 309 51 83% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/containers 381 24 94% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/description 791 424 46% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/exhibits 374 52 86% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/imagedialog 35 3 91% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/labels 61 11 82% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/menubutton 64 45 30% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/oneconfviews 98 44 55% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/recommendations 221 76 66% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/reviews 583 108 81% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/searchaid 179 61 66% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/searchentry 90 25 72% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/separators 26 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/spinner 71 2 97% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/stars 362 44 88% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/symbolic_icons 149 10 93% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/thumbnail 340 59 83% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/videoplayer 113 55 51% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/viewport 24 15 38% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/gtk3/widgets/weblivedialog 68 58 15% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/qml/__init__ 0 0 100% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/qml/categoriesmodel 53 21 60% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/qml/pkglist 134 66 51% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/ui/qml/reviewslist 46 3 93% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/utils 486 121 75% +/scratch/egon/devel/software-center/build-area/software-center-5.2.7/softwarecenter/version 4 0 100% __init__ 0 0 100% data/plugins/mock_plugin 4 0 100% gtk3/test_app 198 0 100% @@ -143,7 +143,7 @@ gtk3/test_installedpane 40 0 100% gtk3/test_navhistory 135 0 100% gtk3/test_panes 42 0 100% -gtk3/test_purchase 79 0 100% +gtk3/test_purchase 74 0 100% gtk3/test_recommendations_widgets 24 0 100% gtk3/test_reviews 129 2 98% gtk3/test_search 48 0 100% @@ -151,6 +151,7 @@ gtk3/test_unity_launcher_integration 105 0 100% gtk3/test_viewmanager 32 0 100% gtk3/test_views 40 0 100% +gtk3/test_webkit 38 0 100% gtk3/test_widgets 187 1 99% qml/test_ui_qml_helpers 78 0 100% test_addons 30 4 87% @@ -159,7 +160,7 @@ test_categories 64 0 100% test_channels 25 0 100% test_cmdfiner 20 0 100% -test_database 426 1 99% +test_database 453 1 99% test_debfileapplication 67 1 99% test_description_norm 39 0 100% test_distro 20 0 100% @@ -191,9 +192,9 @@ test_startup 39 24 38% test_testutils 37 0 100% test_ubuntu_sso_api 19 0 100% -test_utils 174 14 92% +test_utils 177 14 92% test_where_is_it 63 12 81% test_xapian 71 1 99% test_xapian_query 53 1 98% ---------------------------------------------------------------------------------------------------------------------------------------------- -TOTAL 24712 6020 76% +TOTAL 24837 6054 76% diff -Nru software-center-5.2.6/test/data/ubuntu_dist_channel software-center-5.2.7/test/data/ubuntu_dist_channel --- software-center-5.2.6/test/data/ubuntu_dist_channel 1970-01-01 00:00:00.000000000 +0000 +++ software-center-5.2.7/test/data/ubuntu_dist_channel 2012-09-12 08:14:45.000000000 +0000 @@ -0,0 +1,3 @@ +# This is a distribution channel descriptor +# For more information see http://wiki.ubuntu.com/DistributionChannelDescriptor +canonical-oem-watauga-precise-amd64-20120517-2 diff -Nru software-center-5.2.6/test/gtk3/test_purchase.py software-center-5.2.7/test/gtk3/test_purchase.py --- software-center-5.2.6/test/gtk3/test_purchase.py 2012-06-28 08:34:57.000000000 +0000 +++ software-center-5.2.7/test/gtk3/test_purchase.py 2012-09-12 08:14:45.000000000 +0000 @@ -5,8 +5,6 @@ from mock import Mock, patch -from gi.repository import Soup, WebKit - from testutils import setup_test_env setup_test_env() @@ -17,14 +15,6 @@ class TestPurchase(unittest.TestCase): - def test_have_cookie_jar(self): - # ensure we have a cookie jar available - session = WebKit.get_default_session() - cookie_jars = [feature - for feature in session.get_features(Soup.SessionFeature) - if isinstance(feature, Soup.CookieJar)] - self.assertEqual(len(cookie_jars), 1) - def test_purchase_view_log_cleaner(self): import softwarecenter.ui.gtk3.views.purchaseview from softwarecenter.ui.gtk3.views.purchaseview import get_test_window_purchaseview diff -Nru software-center-5.2.6/test/gtk3/test_webkit.py software-center-5.2.7/test/gtk3/test_webkit.py --- software-center-5.2.6/test/gtk3/test_webkit.py 1970-01-01 00:00:00.000000000 +0000 +++ software-center-5.2.7/test/gtk3/test_webkit.py 2012-09-12 08:14:45.000000000 +0000 @@ -0,0 +1,61 @@ +import unittest + +from gi.repository import ( + GObject, + Soup, + WebKit, + ) + +from mock import patch + +from testutils import setup_test_env +setup_test_env() + +from softwarecenter.enums import WEBKIT_USER_AGENT_SUFFIX +from softwarecenter.ui.gtk3.views.webkit import SoftwareCenterWebView + + +class TestWebkit(unittest.TestCase): + + def test_have_cookie_jar(self): + # ensure we have a cookie jar available + session = WebKit.get_default_session() + cookie_jars = [feature + for feature in session.get_features(Soup.SessionFeature) + if isinstance(feature, Soup.CookieJar)] + self.assertEqual(len(cookie_jars), 1) + + def test_user_agent_string(self): + webview = SoftwareCenterWebView() + settings = webview.get_settings() + self.assertTrue( + WEBKIT_USER_AGENT_SUFFIX in settings.get_property("user-agent")) + + @patch("softwarecenter.ui.gtk3.views.webkit.get_oem_channel_descriptor") + def test_user_agent_oem_channel_descriptor(self, mock_oem_channel): + canary = "she-loves-you-yeah-yeah-yeah" + mock_oem_channel.return_value = canary + webview = SoftwareCenterWebView() + settings = webview.get_settings() + self.assertTrue( + canary in settings.get_property("user-agent")) + + def test_auto_fill_in_email(self): + def _load_status_changed(view, status): + if view.get_property("load-status") == WebKit.LoadStatus.FINISHED: + loop.quit() + loop = GObject.MainLoop(GObject.main_context_default()) + webview = SoftwareCenterWebView() + email = "foo@bar" + webview.set_auto_insert_email(email) + with patch.object(webview, "execute_script") as mock_execute_js: + webview.connect("notify::load-status", _load_status_changed) + webview.load_uri("https://login.ubuntu.com") + loop.run() + mock_execute_js.assert_called() + mock_execute_js.assert_called_with( + SoftwareCenterWebView.AUTO_FILL_EMAIL_JS % email) + + +if __name__ == "__main__": + unittest.main() diff -Nru software-center-5.2.6/test/test_database.py software-center-5.2.7/test/test_database.py --- software-center-5.2.6/test/test_database.py 2012-06-27 14:44:59.000000000 +0000 +++ software-center-5.2.7/test/test_database.py 2012-09-12 08:32:26.000000000 +0000 @@ -540,6 +540,7 @@ @patch("softwarecenter.db.update.get_region_cached") def test_region_blacklist(self, get_region_cached_mock): + """Test that the region blacklist ignores blacklisted locations""" from softwarecenter.region import REGION_BLACKLIST_TAG get_region_cached_mock.return_value = { "countrycode" : "es", } @@ -551,6 +552,51 @@ parser = SCAApplicationParser(item) doc = make_doc_from_parser(parser, self.db._aptcache) self.assertEqual(doc, None) + + @patch("softwarecenter.db.update.get_region_cached") + def test_region_blacklist_blacklists(self, get_region_cached_mock): + """Test that the region blacklist adds non-blacklisted locations""" + from softwarecenter.region import REGION_BLACKLIST_TAG + get_region_cached_mock.return_value = { "countrycode" : "de", + } + app_dict = make_software_center_agent_app_dict() + app_dict["debtags"] = ["%s%s" % (REGION_BLACKLIST_TAG, "ES"), + ] + # see _get_app_details_from_app_dict + item = PistonResponseObject.from_dict(app_dict) + parser = SCAApplicationParser(item) + doc = make_doc_from_parser(parser, self.db._aptcache) + self.assertNotEqual(doc, None) + + @patch("softwarecenter.db.update.get_region_cached") + def test_region_whitelist_whitelists(self, get_region_cached_mock): + """Test that the whitelist adds whitelisted locations""" + from softwarecenter.region import REGION_WHITELIST_TAG + get_region_cached_mock.return_value = { "countrycode" : "es", + } + app_dict = make_software_center_agent_app_dict() + app_dict["debtags"] = ["%s%s" % (REGION_WHITELIST_TAG, "ES"), + ] + # see _get_app_details_from_app_dict + item = PistonResponseObject.from_dict(app_dict) + parser = SCAApplicationParser(item) + doc = make_doc_from_parser(parser, self.db._aptcache) + self.assertNotEqual(doc, None) + + @patch("softwarecenter.db.update.get_region_cached") + def test_region_whitelist_blacklists(self, get_region_cached_mock): + """Test that the whitelist ignores non-whitelist locations""" + from softwarecenter.region import REGION_WHITELIST_TAG + get_region_cached_mock.return_value = { "countrycode" : "de", + } + app_dict = make_software_center_agent_app_dict() + app_dict["debtags"] = ["%s%s" % (REGION_WHITELIST_TAG, "ES"), + ] + # see _get_app_details_from_app_dict + item = PistonResponseObject.from_dict(app_dict) + parser = SCAApplicationParser(item) + doc = make_doc_from_parser(parser, self.db._aptcache) + self.assertEqual(doc, None) class AppDetailsPkgStateTestCase(unittest.TestCase): diff -Nru software-center-5.2.6/test/test_utils.py software-center-5.2.7/test/test_utils.py --- software-center-5.2.6/test/test_utils.py 2012-07-18 15:18:43.000000000 +0000 +++ software-center-5.2.7/test/test_utils.py 2012-09-12 08:14:45.000000000 +0000 @@ -15,10 +15,12 @@ from testutils import setup_test_env setup_test_env() + from softwarecenter.utils import (decode_xml_char_reference, release_filename_in_lists_from_deb_line, get_http_proxy_string_from_libproxy, get_file_path_from_iconname, + get_oem_channel_descriptor, ) from softwarecenter.testutils import (do_events, get_test_gtk3_icon_cache, @@ -284,6 +286,10 @@ # ensure that the second one was not called self.assertEqual(len(glob.glob(os.path.join(tmpdir, "marker.*"))), 1) + def test_oem_channel_extractor(self): + s = get_oem_channel_descriptor("./data/ubuntu_dist_channel") + self.assertEqual(s, "canonical-oem-watauga-precise-amd64-20120517-2") + if __name__ == "__main__":