From fe774bf35bffed6249b8cc0feaa3859aca7ca4ea Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Thu, 12 Jun 2008 14:11:25 +0000 Subject: First go at autocompletion. Still using a fake, in-memory backend. --- (limited to 'globalhistory.py') diff --git a/globalhistory.py b/globalhistory.py new file mode 100644 index 0000000..635deca --- /dev/null +++ b/globalhistory.py @@ -0,0 +1,81 @@ +# Copyright (C) 2008, Red Hat, Inc. +# +# 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 +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +from xpcom import components +from xpcom.components import interfaces +from xpcom.server.factory import Factory + +import places + +_global_history = None + +class GlobalHistory: + _com_interfaces_ = interfaces.nsIGlobalHistory, \ + interfaces.nsIGlobalHistory2, \ + interfaces.nsIGlobalHistory3 + + cid = '{2a53cf28-c48e-4a01-ba18-3d3fef3e2985}' + description = 'Sugar Global History' + + def __init__(self): + self._store = places.get_store() + + def addPage(self, url): + self.addURI(url, False, True, None) + + def isVisited(self, uri): + place = self._store.lookup_place(uri.spec) + return place != None + + def addURI(self, uri, redirect, toplevel, referrer): + place = places.Place(uri.spec) + + place.redirect = redirect + place.toplevel = toplevel + place.referrer = referrer + + self._store.add_place(place) + + def setPageTitle(self, uri, title): + place = self._store.lookup_place(uri.spec) + if place: + place.title = title + self._store.update_place(place) + + def addDocumentRedirect(self, old_channel, new_channel, flags, toplevel): + pass + + def getURIGeckoFlags(self, uri): + place = self._store.lookup_place(uri.spec) + if place: + return place.gecko_flags + else: + return 0 + + def setURIGeckoFlags(self, uri, flags): + place = self._store.lookup_place(uri.spec) + if place: + place.gecko_flags = flags + self._store.update_place(place) + +def init(): + global _global_history + _global_history = GlobalHistory() + +components.registrar.registerFactory(GlobalHistory.cid, + GlobalHistory.description, + '@mozilla.org/browser/global-history;2', + Factory(GlobalHistory)) -- cgit v0.9.1