From a8b17436c94ec188857c4a06efa6ade64a0ef20b Mon Sep 17 00:00:00 2001 From: Lucian Branescu Mihaila Date: Thu, 17 Jun 2010 20:54:30 +0000 Subject: Browse stards and loads pages with pywebkitgtk. Several features are disabled for now, although it mostly has feature-parity with Surf. --- diff --git a/browser.py b/browser.py index ece81d1..891d06c 100644 --- a/browser.py +++ b/browser.py @@ -23,12 +23,7 @@ from gettext import gettext as _ import gobject import gtk -import hulahop -import xpcom -from xpcom.nsError import * -from xpcom import components -from xpcom.components import interfaces -from hulahop.webview import WebView +import webkit from sugar.datastore import datastore from sugar import profile @@ -36,66 +31,15 @@ from sugar import env from sugar.activity import activity from sugar.graphics import style -import sessionstore from palettes import ContentInvoker -from sessionhistory import HistoryListener -from progresslistener import ProgressListener +#from sessionhistory import HistoryListener +#from progresslistener import ProgressListener _ZOOM_AMOUNT = 0.1 - -class GetSourceListener(object): - _com_interfaces_ = interfaces.nsIWebProgressListener - - def __init__(self, file_path, async_cb, async_err_cb): - self._file_path = file_path - self._async_cb = async_cb - self._async_err_cb = async_err_cb - - def onStateChange(self, webProgress, request, stateFlags, status): - if stateFlags & interfaces.nsIWebProgressListener.STATE_IS_REQUEST and \ - stateFlags & interfaces.nsIWebProgressListener.STATE_STOP: - self._async_cb(self._file_path) - - def onProgressChange(self, progress, request, curSelfProgress, - maxSelfProgress, curTotalProgress, maxTotalProgress): - pass - - def onLocationChange(self, progress, request, location): - pass - - def onStatusChange(self, progress, request, status, message): - pass - - def onSecurityChange(self, progress, request, state): - pass - - -class CommandListener(object): - - _com_interfaces_ = interfaces.nsIDOMEventListener - - def __init__(self, window): - self._window = window - - def handleEvent(self, event): - if not event.isTrusted: - return - - uri = event.originalTarget.ownerDocument.documentURI - if not uri.startswith('about:neterror?e=nssBadCert'): - return - - cls = components.classes['@sugarlabs.org/add-cert-exception;1'] - cert_exception = cls.createInstance(interfaces.hulahopAddCertException) - cert_exception.showDialog(self._window) - - class TabbedView(gtk.Notebook): __gtype_name__ = 'TabbedView' - _com_interfaces_ = interfaces.nsIWindowCreator - AGENT_SHEET = os.path.join(activity.get_bundle_path(), 'agent-stylesheet.css') USER_SHEET = os.path.join(env.get_profile_path(), 'gecko', @@ -106,67 +50,28 @@ class TabbedView(gtk.Notebook): self.props.show_border = False self.props.scrollable = True - - io_service_class = components.classes[ \ - "@mozilla.org/network/io-service;1"] - io_service = io_service_class.getService(interfaces.nsIIOService) - - # Use xpcom to turn off "offline mode" detection, which disables - # access to localhost for no good reason. (Trac #6250.) - io_service2 = io_service_class.getService(interfaces.nsIIOService2) - io_service2.manageOfflineStatus = False - - cls = components.classes['@mozilla.org/content/style-sheet-service;1'] - style_sheet_service = cls.getService(interfaces.nsIStyleSheetService) - - if os.path.exists(TabbedView.AGENT_SHEET): - agent_sheet_uri = io_service.newURI('file:///' + - TabbedView.AGENT_SHEET, - None, None) - style_sheet_service.loadAndRegisterSheet(agent_sheet_uri, - interfaces.nsIStyleSheetService.AGENT_SHEET) - - if os.path.exists(TabbedView.USER_SHEET): - user_sheet_uri = io_service.newURI('file:///' + TabbedView.USER_SHEET, - None, None) - style_sheet_service.loadAndRegisterSheet(user_sheet_uri, - interfaces.nsIStyleSheetService.USER_SHEET) - - cls = components.classes['@mozilla.org/embedcomp/window-watcher;1'] - window_watcher = cls.getService(interfaces.nsIWindowWatcher) - window_creator = xpcom.server.WrapObject(self, - interfaces.nsIWindowCreator) - window_watcher.setWindowCreator(window_creator) - + + self.new_tab() + + def new_tab(self): browser = Browser() self._append_tab(browser) - def createChromeWindow(self, parent, flags): - if flags & interfaces.nsIWebBrowserChrome.CHROME_OPENAS_CHROME: - dialog = PopupDialog() - dialog.view.is_chrome = True - - parent_dom_window = parent.webBrowser.contentDOMWindow - parent_view = hulahop.get_view_for_window(parent_dom_window) - if parent_view: - dialog.set_transient_for(parent_view.get_toplevel()) - - browser = dialog.view.browser - - item = browser.queryInterface(interfaces.nsIDocShellTreeItem) - item.itemType = interfaces.nsIDocShellTreeItem.typeChromeWrapper - - return browser.containerWindow - else: - browser = Browser() - self._append_tab(browser) - - return browser.browser.containerWindow - def _append_tab(self, browser): label = TabLabel(browser) label.connect('tab-close', self.__tab_close_cb) + #set stylesheets + settings = browser.get_settings() + + if os.path.exists(TabbedView.AGENT_SHEET): + # used to disable flash movies until you click them. + settings.set_property('user-stylesheet-uri', 'file:///' + + TabbedView.AGENT_SHEET) + if os.path.exists(TabbedView.USER_SHEET): + settings.set_property('user-stylesheet-uri', 'file:///' + + TabbedView.USER_SHEET) + self.append_page(browser, label) browser.show() @@ -251,19 +156,19 @@ class TabLabel(gtk.HBox): browser.progress.connect('notify::location', self.__location_changed_cb) browser.connect('notify::title', self.__title_changed_cb) - def __location_changed_cb(self, progress_listener, pspec): - uri = progress_listener.location - cls = components.classes['@mozilla.org/intl/texttosuburi;1'] - texttosuburi = cls.getService(interfaces.nsITextToSubURI) - ui_uri = texttosuburi.unEscapeURIForUI(uri.originCharset, uri.spec) + #def __location_changed_cb(self, progress_listener, pspec): + # uri = progress_listener.location + # cls = components.classes['@mozilla.org/intl/texttosuburi;1'] + # texttosuburi = cls.getService(interfaces.nsITextToSubURI) + # ui_uri = texttosuburi.unEscapeURIForUI(uri.originCharset, uri.spec) + # + # self._label.set_text(ui_uri) - self._label.set_text(ui_uri) + #def __title_changed_cb(self, browser, pspec): + # self._label.set_text(browser.props.title) - def __title_changed_cb(self, browser, pspec): - self._label.set_text(browser.props.title) - -class Browser(WebView): +class Browser(webkit.WebView): __gtype_name__ = 'Browser' __gsignals__ = { @@ -273,30 +178,12 @@ class Browser(WebView): } def __init__(self): - WebView.__init__(self) - - self.history = HistoryListener() - self.progress = ProgressListener() + webkit.WebView.__init__(self) - cls = components.classes["@mozilla.org/typeaheadfind;1"] - self.typeahead = cls.createInstance(interfaces.nsITypeAheadFind) + #self.history = HistoryListener() + #self.progress = ProgressListener() def do_setup(self): - WebView.do_setup(self) - - listener = xpcom.server.WrapObject(ContentInvoker(self), - interfaces.nsIDOMEventListener) - self.window_root.addEventListener('click', listener, False) - - listener = xpcom.server.WrapObject(CommandListener(self.dom_window), - interfaces.nsIDOMEventListener) - self.window_root.addEventListener('command', listener, False) - - self.progress.setup(self) - - self.history.setup(self.web_navigation) - - self.typeahead.init(self.doc_shell) self.emit('is-setup') @@ -307,42 +194,26 @@ class Browser(WebView): return sessionstore.set_session(self, data) def get_source(self, async_cb, async_err_cb): - cls = components.classes[ \ - '@mozilla.org/embedding/browser/nsWebBrowserPersist;1'] - persist = cls.createInstance(interfaces.nsIWebBrowserPersist) - # get the source from the cache - persist.persistFlags = \ - interfaces.nsIWebBrowserPersist.PERSIST_FLAGS_FROM_CACHE - - temp_path = os.path.join(activity.get_activity_root(), 'instance') - file_path = os.path.join(temp_path, '%i' % time.time()) - cls = components.classes["@mozilla.org/file/local;1"] - local_file = cls.createInstance(interfaces.nsILocalFile) - local_file.initWithPath(file_path) - - progresslistener = GetSourceListener(file_path, async_cb, async_err_cb) - persist.progressListener = xpcom.server.WrapObject( - progresslistener, interfaces.nsIWebProgressListener) - - uri = self.web_navigation.currentURI - persist.saveURI(uri, self.doc_shell, None, None, None, local_file) - - def zoom_in(self): - contentViewer = self.doc_shell.queryInterface( \ - interfaces.nsIDocShell).contentViewer - if contentViewer is not None: - markupDocumentViewer = contentViewer.queryInterface( \ - interfaces.nsIMarkupDocumentViewer) - markupDocumentViewer.fullZoom += _ZOOM_AMOUNT - - def zoom_out(self): - contentViewer = self.doc_shell.queryInterface( \ - interfaces.nsIDocShell).contentViewer - if contentViewer is not None: - markupDocumentViewer = contentViewer.queryInterface( \ - interfaces.nsIMarkupDocumentViewer) - markupDocumentViewer.fullZoom -= _ZOOM_AMOUNT - + #cls = components.classes[ \ + # '@mozilla.org/embedding/browser/nsWebBrowserPersist;1'] + #persist = cls.createInstance(interfaces.nsIWebBrowserPersist) + ## get the source from the cache + #persist.persistFlags = \ + # interfaces.nsIWebBrowserPersist.PERSIST_FLAGS_FROM_CACHE + # + #temp_path = os.path.join(activity.get_activity_root(), 'instance') + #file_path = os.path.join(temp_path, '%i' % time.time()) + #cls = components.classes["@mozilla.org/file/local;1"] + #local_file = cls.createInstance(interfaces.nsILocalFile) + #local_file.initWithPath(file_path) + # + #progresslistener = GetSourceListener(file_path, async_cb, async_err_cb) + #persist.progressListener = xpcom.server.WrapObject( + # progresslistener, interfaces.nsIWebProgressListener) + # + #uri = self.web_navigation.currentURI + #persist.saveURI(uri, self.doc_shell, None, None, None, local_file) + pass class PopupDialog(gtk.Window): def __init__(self): diff --git a/downloadmanager.py b/downloadmanager.py index 3eec649..211eb77 100644 --- a/downloadmanager.py +++ b/downloadmanager.py @@ -24,12 +24,6 @@ import urlparse import urllib import gtk -import hulahop -import xpcom -from xpcom.nsError import * -from xpcom import components -from xpcom.components import interfaces -from xpcom.server.factory import Factory from sugar.datastore import datastore from sugar import profile @@ -74,7 +68,7 @@ def remove_all_downloads(): class HelperAppLauncherDialog: - _com_interfaces_ = interfaces.nsIHelperAppLauncherDialog + #_com_interfaces_ = interfaces.nsIHelperAppLauncherDialog def promptForSaveToFile(self, launcher, window_context, default_file, suggested_file_extension, @@ -111,14 +105,14 @@ class HelperAppLauncherDialog: return NS_OK -components.registrar.registerFactory('{64355793-988d-40a5-ba8e-fcde78cac631}', - 'Sugar Download Manager', - '@mozilla.org/helperapplauncherdialog;1', - Factory(HelperAppLauncherDialog)) +#components.registrar.registerFactory('{64355793-988d-40a5-ba8e-fcde78cac631}', +# 'Sugar Download Manager', +# '@mozilla.org/helperapplauncherdialog;1', +# Factory(HelperAppLauncherDialog)) class Download: - _com_interfaces_ = interfaces.nsITransfer + #_com_interfaces_ = interfaces.nsITransfer def init(self, source, target, display_name, mime_info, start_time, temp_file, cancelable): @@ -297,10 +291,10 @@ class Download: _active_downloads.remove(self) -components.registrar.registerFactory('{23c51569-e9a1-4a92-adeb-3723db82ef7c}', - 'Sugar Download', - '@mozilla.org/transfer;1', - Factory(Download)) +#components.registrar.registerFactory('{23c51569-e9a1-4a92-adeb-3723db82ef7c}', +# 'Sugar Download', +# '@mozilla.org/transfer;1', +# Factory(Download)) def save_link(url, text, owner_document): @@ -346,7 +340,7 @@ def _implements_interface(obj, interface): class _AuthPromptCallback(object): - _com_interfaces_ = interfaces.nsIInterfaceRequestor + #_com_interfaces_ = interfaces.nsIInterfaceRequestor def __init__(self, dom_window): self._dom_window = dom_window @@ -360,7 +354,7 @@ class _AuthPromptCallback(object): class _SaveLinkProgressListener(object): - _com_interfaces_ = interfaces.nsIStreamListener + #_com_interfaces_ = interfaces.nsIStreamListener """ an object to proxy the data through to nsIExternalHelperAppService.doContent, which will wait for the appropriate diff --git a/edittoolbar.py b/edittoolbar.py index 4658683..8c2ac3d 100644 --- a/edittoolbar.py +++ b/edittoolbar.py @@ -18,9 +18,6 @@ import gtk from gettext import gettext as _ -from xpcom import components -from xpcom.components import interfaces - from sugar.activity import activity from sugar.graphics import iconentry from sugar.graphics.toolbutton import ToolButton @@ -29,7 +26,7 @@ from sugar.graphics import style class EditToolbar(activity.EditToolbar): - _com_interfaces_ = interfaces.nsIObserver + #_com_interfaces_ = interfaces.nsIObserver def __init__(self, act): activity.EditToolbar.__init__(self) diff --git a/filepicker.py b/filepicker.py index 9b9e8bc..4e52471 100644 --- a/filepicker.py +++ b/filepicker.py @@ -23,18 +23,13 @@ import re import gtk import hulahop -import xpcom -from xpcom import components -from xpcom.components import interfaces -from xpcom.server.factory import Factory - from sugar.graphics.objectchooser import ObjectChooser from sugar.activity.activity import get_activity_root _temp_dirs_to_clean = [] - +#TODO port to webkit def cleanup_temp_files(): while _temp_dirs_to_clean: temp_dir = _temp_dirs_to_clean.pop() @@ -46,7 +41,7 @@ def cleanup_temp_files(): class FilePicker: - _com_interfaces_ = interfaces.nsIFilePicker + #_com_interfaces_ = interfaces.nsIFilePicker cid = '{57901c41-06cb-4b9e-8258-37323327b583}' description = 'Sugar File Picker' @@ -148,11 +143,10 @@ class FilePicker: logging.warning('FilePicker.get_FileURL: UNIMPLEMENTED') return None - -components.registrar.registerFactory(FilePicker.cid, - FilePicker.description, - '@mozilla.org/filepicker;1', - Factory(FilePicker)) +#components.registrar.registerFactory(FilePicker.cid, +# FilePicker.description, +# '@mozilla.org/filepicker;1', +# Factory(FilePicker)) def _basename_strip(jobject): diff --git a/globalhistory.py b/globalhistory.py index 1ec0a72..6fe5953 100644 --- a/globalhistory.py +++ b/globalhistory.py @@ -16,17 +16,13 @@ from datetime import datetime -from xpcom import components -from xpcom.components import interfaces -from xpcom.server.factory import Factory - import places class GlobalHistory: - _com_interfaces_ = interfaces.nsIGlobalHistory, \ - interfaces.nsIGlobalHistory2, \ - interfaces.nsIGlobalHistory3 + #_com_interfaces_ = interfaces.nsIGlobalHistory, \ + # interfaces.nsIGlobalHistory2, \ + # interfaces.nsIGlobalHistory3 cid = '{2a53cf28-c48e-4a01-ba18-3d3fef3e2985}' description = 'Sugar Global History' @@ -74,7 +70,7 @@ class GlobalHistory: self._store.update_place(place) -components.registrar.registerFactory(GlobalHistory.cid, - GlobalHistory.description, - '@mozilla.org/browser/global-history;2', - Factory(GlobalHistory)) +#components.registrar.registerFactory(GlobalHistory.cid, +# GlobalHistory.description, +# '@mozilla.org/browser/global-history;2', +# Factory(GlobalHistory)) diff --git a/palettes.py b/palettes.py index 0d4023a..e4219f3 100644 --- a/palettes.py +++ b/palettes.py @@ -1,5 +1,6 @@ # Copyright (C) 2008, One Laptop Per Child # Copyright (C) 2009, Tomeu Vizoso, Simon Schampijer +# Copyright (C) 2010, Bobby Powers, Lucian Branescu Mihaila # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -22,9 +23,6 @@ from gettext import gettext as _ import gtk import gobject -import xpcom -from xpcom import components -from xpcom.components import interfaces from sugar.graphics.palette import Palette, Invoker from sugar.graphics.menuitem import MenuItem @@ -35,32 +33,12 @@ from sugar.activity import activity import downloadmanager -class MouseOutListener(gobject.GObject): - _com_interfaces_ = interfaces.nsIDOMEventListener - - __gsignals__ = { - 'mouse-out': (gobject.SIGNAL_RUN_FIRST, - gobject.TYPE_NONE, - ([])) - } - - def __init__(self, target): - gobject.GObject.__init__(self) - self.target = target - - def handleEvent(self, event): - self.emit('mouse-out') - - class ContentInvoker(Invoker): - _com_interfaces_ = interfaces.nsIDOMEventListener def __init__(self, browser): Invoker.__init__(self) self._position_hint = self.AT_CURSOR self._browser = browser - self._mouseout_listener = None - self._popdown_handler_id = None def get_default_position(self): return self.AT_CURSOR @@ -76,7 +54,6 @@ class ContentInvoker(Invoker): return target = event.target - if target.tagName.lower() == 'a': if target.firstChild: @@ -99,32 +76,10 @@ class ContentInvoker(Invoker): self.palette = ImagePalette(title, target.src, target.ownerDocument) self.notify_right_click() - else: - return - - if self._popdown_handler_id is not None: - self._popdown_handler_id = self.palette.connect( \ - 'popdown', self.__palette_popdown_cb) - - self._mouseout_listener = MouseOutListener(target) - wrapper = xpcom.server.WrapObject(self._mouseout_listener, - interfaces.nsIDOMEventListener) - target.addEventListener('mouseout', wrapper, False) - self._mouseout_listener.connect('mouse-out', self.__moved_out_cb) - - def __moved_out_cb(self, listener): - self.palette.popdown() - - def __palette_popdown_cb(self, palette): - if self._mouseout_listener is not None: - wrapper = xpcom.server.WrapObject(self._mouseout_listener, - interfaces.nsIDOMEventListener) - self._mouseout_listener.target.removeEventListener('mouseout', - wrapper, False) - del self._mouseout_listener class LinkPalette(Palette): + def __init__(self, browser, title, url, owner_document): Palette.__init__(self) @@ -236,56 +191,10 @@ class ImagePalette(Palette): os.close(fd) os.chmod(temp_file, 0664) - cls = components.classes['@mozilla.org/network/io-service;1'] - io_service = cls.getService(interfaces.nsIIOService) - uri = io_service.newURI(self._url, None, None) - - cls = components.classes['@mozilla.org/file/local;1'] - target_file = cls.createInstance(interfaces.nsILocalFile) - target_file.initWithPath(temp_file) - - cls = components.classes[ \ - '@mozilla.org/embedding/browser/nsWebBrowserPersist;1'] - persist = cls.createInstance(interfaces.nsIWebBrowserPersist) - persist.persistFlags = 1 # PERSIST_FLAGS_FROM_CACHE - listener = xpcom.server.WrapObject(_ImageProgressListener(temp_file), - interfaces.nsIWebProgressListener) - persist.progressListener = listener - persist.saveURI(uri, None, None, None, None, target_file) - def __download_activate_cb(self, menu_item): downloadmanager.save_link(self._url, self._title, self._owner_document) -class _ImageProgressListener(object): - _com_interfaces_ = interfaces.nsIWebProgressListener - - def __init__(self, temp_file): - self._temp_file = temp_file - - def onLocationChange(self, webProgress, request, location): - pass - - def onProgressChange(self, webProgress, request, curSelfProgress, - maxSelfProgress, curTotalProgress, maxTotalProgress): - pass - - def onSecurityChange(self, webProgress, request, state): - pass - - def onStatusChange(self, webProgress, request, status, message): - pass - - def onStateChange(self, webProgress, request, stateFlags, status): - if stateFlags & interfaces.nsIWebProgressListener.STATE_IS_REQUEST and \ - stateFlags & interfaces.nsIWebProgressListener.STATE_STOP: - clipboard = gtk.Clipboard() - clipboard.set_with_data([('text/uri-list', 0, 0)], - _clipboard_get_func_cb, - _clipboard_clear_func_cb, - self._temp_file) - - def _clipboard_get_func_cb(clipboard, selection_data, info, temp_file): selection_data.set_uris(['file://' + temp_file]) diff --git a/progresslistener.py b/progresslistener.py index fb08b13..fe9bd5c 100644 --- a/progresslistener.py +++ b/progresslistener.py @@ -17,9 +17,6 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import gobject -import xpcom -from xpcom.components import interfaces - class ProgressListener(gobject.GObject): _com_interfaces_ = interfaces.nsIWebProgressListener diff --git a/promptservice.py b/promptservice.py index bab2417..7ba2655 100644 --- a/promptservice.py +++ b/promptservice.py @@ -16,11 +16,6 @@ import logging -import xpcom -from xpcom import components -from xpcom.components import interfaces -from xpcom.server.factory import Factory - class PromptService: _com_interfaces_ = interfaces.nsIPromptService diff --git a/securitydialogs.py b/securitydialogs.py index dbfd749..0c1563a 100644 --- a/securitydialogs.py +++ b/securitydialogs.py @@ -16,12 +16,6 @@ import logging -import xpcom -from xpcom import components -from xpcom.components import interfaces -from xpcom.server.factory import Factory - - class SecurityDialogs: _com_interfaces_ = interfaces.nsIBadCertListener diff --git a/sessionhistory.py b/sessionhistory.py index 2211551..c9c830d 100644 --- a/sessionhistory.py +++ b/sessionhistory.py @@ -22,8 +22,6 @@ from xpcom.components import interfaces class HistoryListener(gobject.GObject): - _com_interfaces_ = interfaces.nsISHistoryListener - __gsignals__ = { 'session-history-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, @@ -35,10 +33,6 @@ class HistoryListener(gobject.GObject): def __init__(self): gobject.GObject.__init__(self) - self._wrapped_self = xpcom.server.WrapObject( \ - self, interfaces.nsISHistoryListener) - weak_ref = xpcom.client.WeakReference(self._wrapped_self) - def setup(self, web_navigation): self._session_history = web_navigation.sessionHistory self._session_history.addSHistoryListener(self._wrapped_self) diff --git a/sessionstore.py b/sessionstore.py index e09c3a1..08ba4a2 100644 --- a/sessionstore.py +++ b/sessionstore.py @@ -19,10 +19,6 @@ import logging -from xpcom import components -from xpcom.components import interfaces - - def get_session(browser): session_history = browser.web_navigation.sessionHistory diff --git a/webactivity.py b/webactivity.py index 48cd90f..69485f2 100644 --- a/webactivity.py +++ b/webactivity.py @@ -32,9 +32,7 @@ import cjson import gconf import locale -# HACK: Needed by http://dev.sugarlabs.org/ticket/456 -import gnome -gnome.init('Hulahop', '1.0') +import webkit from sugar.activity import activity from sugar.graphics import style @@ -128,12 +126,7 @@ def _seed_xs_cookie(): _logger.debug('seed_xs_cookie: Updated cookie successfully') -import hulahop -hulahop.set_app_version(os.environ['SUGAR_BUNDLE_VERSION']) -hulahop.startup(_profile_path) - -from xpcom import components - +#TODO set app version and profile path def _set_accept_languages(): ''' Set intl.accept_languages based on the locale @@ -147,10 +140,9 @@ def _set_accept_languages(): # e.g. es-uy, es pref = lang[0] + "-" + lang[1].lower() + ", " + lang[0] - cls = components.classes["@mozilla.org/preferences-service;1"] - prefService = cls.getService(components.interfaces.nsIPrefService) - branch = prefService.getBranch('') - branch.setCharPref('intl.accept_languages', pref) + + #TODO set locale for webkit + logging.debug('LANG set') from browser import TabbedView @@ -186,12 +178,6 @@ class WebActivity(activity.Activity): _set_accept_languages() _seed_xs_cookie() - # don't pick up the sugar theme - use the native mozilla one instead - cls = components.classes['@mozilla.org/preferences-service;1'] - pref_service = cls.getService(components.interfaces.nsIPrefService) - branch = pref_service.getBranch("mozilla.widget.") - branch.setBoolPref("disable-native-theme", True) - self._primary_toolbar = PrimaryToolbar(self._tabbed_view, self) self._primary_toolbar.connect('add-link', self._link_add_button_cb) @@ -452,24 +438,21 @@ class WebActivity(activity.Activity): ''' take screenshot and add link info to the model ''' browser = self._tabbed_view.props.current_browser - uri = browser.progress.location - cls = components.classes['@mozilla.org/intl/texttosuburi;1'] - texttosuburi = cls.getService(components.interfaces.nsITextToSubURI) - ui_uri = texttosuburi.unEscapeURIForUI(uri.originCharset, uri.spec) + uri = browser.props.uri for link in self.model.data['shared_links']: - if link['hash'] == sha.new(ui_uri).hexdigest(): + if link['hash'] == sha.new(uri).hexdigest(): _logger.debug('_add_link: link exist already a=%s b=%s' %( - link['hash'], sha.new(ui_uri).hexdigest())) + link['hash'], sha.new(uri).hexdigest())) return buf = self._get_screenshot() timestamp = time.time() - self.model.add_link(ui_uri, browser.props.title, buf, + self.model.add_link(uri, browser.props.title, buf, profile.get_nick_name(), profile.get_color().to_string(), timestamp) if self.messenger is not None: - self.messenger._add_link(ui_uri, browser.props.title, + self.messenger._add_link(uri, browser.props.title, profile.get_color().to_string(), profile.get_nick_name(), base64.b64encode(buf), timestamp) diff --git a/webtoolbar.py b/webtoolbar.py index e7c20be..86fab60 100644 --- a/webtoolbar.py +++ b/webtoolbar.py @@ -21,8 +21,6 @@ from gettext import gettext as _ import gobject import gtk import pango -from xpcom.components import interfaces -from xpcom import components from sugar.graphics.toolbutton import ToolButton from sugar.graphics.menuitem import MenuItem -- cgit v0.9.1