Commit Graph

75 Commits

Author SHA1 Message Date
Masatoshi Kimura
c0943e4f30 Bug 1326520 - Rename nsIURI.path to pathQueryRef. r=valentin.gosu
MozReview-Commit-ID: DqJdTGopR9G
2017-07-29 20:50:21 +09:00
Bevis Tseng
59627df038 Bug 1382172 - Name nsITimerCallback instances in native implementation. r=billm 2017-07-27 02:18:20 +08:00
Marco Bonardo
2e63b9b6bb Bug 1371677 - Delay the database connection in the history service as far as possible. r=adw
Makes initing Places services cheaper, by delaying the connection creation to the first time
it's actually needed.
Same way, delays reading the bookmark roots at the first time they are requested.
Deprecates the concept of lazy observers, since they are no more needed, we can just use addObserver.
Simplifies the startup path: always sends "places-init-complete" (both as a category and a topic) when
the connection starts and adds a "locked" database state when we can't get a working connection.
Makes PlacesCategoriesStarter register for the new category, since it's cheaper than being a bookmarks
observer.
Fixes a couple race conditions in keywords and expiration due to new startup timings.
Removes a test in test_keywords.js that is no more easily feasible, since it'd requires a pre-build
places.sqlite that should be kept up-to-date at every version.

MozReview-Commit-ID: 6ccPUZ651m0
2017-06-09 18:51:09 +02:00
Marco Bonardo
4a869f12cd Bug 1337858 - Replace CopyFavicon in the Docshell with a proper favicons API. r=standard8
MozReview-Commit-ID: 8wjSbj0FTwE
2017-05-18 16:48:23 +02:00
Marco Bonardo
77c6ad3ff9 Bug 1360891 - Places default favicon should supports hi-dpi. r=dao,standard8
MozReview-Commit-ID: 1b0gnDIQJIQ
2017-05-03 09:31:05 +02:00
Marco Bonardo
3d5544f024 Bug 1360477 - Enlarge favicons size limit and rescale bigger icons instead of discarding them. r=adw
The initially guessed limit for favicons is too small, some common favicons are bigger, so this increases it.
Additionally, if an icon is larger than the limit, instead of discarding it we can rescale it down until it fits.

MozReview-Commit-ID: BaijUP9oDMQ
2017-04-27 18:23:31 +02:00
Marco Bonardo
9b56138641 Bug 1356567 - root icons should still create a page association if the domain differs. r=adw,kitcambridge
Root domain icons are no more associated with their pages, BUT if the page uses
a root domain icon from another domain, it should still get an association with it
or we couldn't relate the two.

This also fixes an overlooked problem in PlacesTestUtils where Date objects
cross a boundary and fail instanceof checks. This causes failures in the same
test that this patch is modifying.
To protect from future similar issues some protection has been added to updatedPlaces
so that it will crash in debug builds.

MozReview-Commit-ID: 3MTKhGj3ehj
2017-04-14 20:34:27 +02:00
Carsten "Tomcat" Book
b64dbe3b57 Backed out changeset eb94759f0fcf (bug 1356567) for test failures in own test 2017-04-18 12:58:09 +02:00
Marco Bonardo
f10bff9f87 Bug 1356567 - root icons should still create a page association if the domain differs. r=adw,kitcambridge
Root domain icons are no more associated with their pages, BUT if the page uses
a root domain icon from another domain, it should still get an association with it
or we couldn't relate the two.

This also fixes an overlooked problem in PlacesTestUtils where Date objects
cross a boundary and fail instanceof checks. This causes failures in the same
test that this patch is modifying.
To protect from future similar issues some protection has been added to updatedPlaces
so that it will crash in debug builds.

MozReview-Commit-ID: 3MTKhGj3ehj
2017-04-14 20:34:27 +02:00
Marco Bonardo
7b2f9a8241 Bug 977177 - Invalidate the page-icon image cache when necessary. r=adw
Remove page-icon entries when the icon changes, so that we start showing the
new content.
Also adds an SVG page-icon test.

MozReview-Commit-ID: 10MIOvwbQ20
2017-03-31 17:03:25 +02:00
Marco Bonardo
165e65df87 Bug 977177 - Don't expire root domain icons with history, and don't associate pages to them. r=adw
Root domain icons should be retained as far as possible, and only expired when
a domain is removed from the database. We do that through the moz_hosts trigger.
Additionally, since we return root domain icons without the need for a direct
association, we can save a lot of database space and performance by not storing
associations at all for root domain icons.
This has some downsides, since we don't exactly know if the page was really
associated with that root icon or not, but the perf gains are far superior.
Note that we still create associations during migration, since it would be too
expensive to examine every single url to figure out if it's a root domain icon.

MozReview-Commit-ID: 3mlfcOV8ixC
2017-03-30 15:16:41 +02:00
Marco Bonardo
1167b6cacc Bug 977177 - Split ico files into native frames. r=adw
When optimizing an ico file, split it into its single resources and pick only
the sizes we care about. This also de-dupes same size resources.
The migration path doesn't split ico files, since it's a performance hot path
and we should try to reduce the I/O load at that time. The worst case is that
some icons may not look that much crisp until the next page reload.
Note that while the "resource" naming would be more appropriate for ico files,
compared to "frame" that is more appropriate for animations, the patch still
uses the frame name, cause it's far less generic and can be more easily
associated with the concept of a graphical asset. Regardless, it's not exposed
in any public API.

MozReview-Commit-ID: 3vrGXzJDfjX
2017-03-28 17:30:28 +02:00
Marco Bonardo
0defdaed15 bug 977177 - Fallback to the root domain icon. r=adw
When an icon for a specific page is not available, try to fallback for the root
domain icon.
This is valid for both getFaviconUrlForPage and getFaviconDataforPage, as well
as the page-icon: protocol.

MozReview-Commit-ID: JC4cx1PAY38
2017-03-28 11:50:53 +02:00
Marco Bonardo
0938ab7f9a Bug 977177 - Add size ref fragment to icon protocols. r=adw
Both page-icon: and moz-anno:favicon: should support a simple #size=NNN ref
fragment to allow consumers to request a specific sized icon (if available).
The service will do its best to satisfy the request, but it's not guaranteed.
If no size hint is found, it will default to the biggest icon payload available.

It's currently not possible to test the fragment on moz-anno:favicon: since that
requires imagelib support to extract payloads from ico files. Thus a test will
be added at a later time.

MozReview-Commit-ID: G221MKY7rfs
2017-03-15 16:08:28 +01:00
Marco Bonardo
c536e58644 Bug 977177 - Update favicons API consumers. r=adw
Updates consumers to the new behavior.
Some consumers are changed to use  the "page-icon:" protocol, since it's not
trivial to join the icons table and get a single result out of it. In most cases
the join would return multiple results since a page can have multiple icon payloads.
These consumers for now will return the biggest payload, bug 1347532 will fix
some of them to properly pass a #size=NN fragment.
Note that, even before, these were just "moz-anno:favicon:" uris, and the
payload had to be fetched from the database.
Some other consumers for now just fallback to the largest payload, by passing 0
to GetFaviconURLForPage.

The favicon optimization still happens on the main-thread, bug 1346139 will
handle that problem.

Most of the changes involve handling the modified IconData objects, that now
retain an array of payloads, rather than just one. But note that .ico files are
not yet split into single frames, due to imagelib missing APIs that will be handled
in bug 1337402.
The other changes involve fixing queries to properly join with the new tables.

Finally, note that thanks to the FOREIGN KEYS support, removing from moz_icons or
moz_pages_w_icons will also remove relations from moz_icons_to_pages.

The system only supports square icons, so icons are resized based on their larger side.

This doesn't include new tests, those will be in a following changeset.

MozReview-Commit-ID: JUkpquhpS8y
2016-09-28 16:14:30 +02:00
Marco Bonardo
fbfba8faf2 Bug 977177 - Move favicons to a separate store. r=adw
This patch moves favicons blobs to a separate database names favicons.sqlite.
The dabatase is then ATTACHED to the main Places connection, so that its tables
can be used as if they were all part of the same database.
The favicons.database contains 3 tables:
  1. moz_pages_w_icons
     This is the way to join with moz_places, through page_url_hash and page_url.
     We are not using the place id to avoid possible mismatches between places.sqlite
     and favicons.sqlite. This way the database is "portable" and reusable even
     if places.sqlite changes.
  2. moz_icons
     Contains icons payloads, each payload can either be an SVG or a PNG. These
     are the only stored formats, any other format is rescaled and converted to
     PNG. ICO files are split into single frames and stored as multiple PNGs.
     SVG are distinguishable through width == UINT16_MAX
     In future the table will also contain mask-icon color for SVG and average
     color for PNGs.
     The fixed_icon_url_hash is "fixed" to allow quickly fetch root icons, that
     means icons like "domain/favicon.ico" that can also be reused for any page
     under that domain.
  3. moz_icons_to_pages
     This is the relation table between icons and pages.
     Each page can have multiple icons, each icon can be used by multiple pages.
     There is a FOREIGN_KEY constraint between this (child) table and icons
     or pages (parents), so that it's not possible to insert non-existing ids
     in this table, and if an entry is removed from a parent table, the relation
     will be automatically removed from here.
     Note though that removing from the relation table won't remove from the
     parent tables.
Since the relations are now many-many, it's no more possible to simply join
places with the icons table and obtain a single icon, thus it's suggested that
consumers go through the "page-icon" protocol.
The migration process from the old favicons table is async and interruptible,
it will be restarted along with the favicons service until the temp preference
places.favicons.convertPayloads is set to true.


MozReview-Commit-ID: CUCoL9smRyt
2016-11-14 16:22:46 +01:00
Andrea Marchesini
8f5f953fba Bug 1343933 - Renaming Principal classes - part 2 - NullPrincipal, r=qdot 2017-03-22 11:38:40 +01:00
Tim Huang
b5bdd675d4 Bug 1277803 - Part 1 : Add a new ContentPolicy TYPE_INTERNAL_IMAGE_FAVICON for indicating a favicon loading. r=ckerschb 2016-10-13 15:43:54 +08:00
Wes Kocher
85edded572 Backed out 8 changesets (bug 1277803) for browser-chrome test failures a=backout
Backed out changeset 477890efdb88 (bug 1277803)
Backed out changeset 49da326bfe68 (bug 1277803)
Backed out changeset 2d17a40a9077 (bug 1277803)
Backed out changeset b1cb0a195ca1 (bug 1277803)
Backed out changeset c7d82459d152 (bug 1277803)
Backed out changeset 3be9a06248af (bug 1277803)
Backed out changeset 8d119ca96999 (bug 1277803)
Backed out changeset be767a6f7ecd (bug 1277803)
2016-10-12 14:26:00 -07:00
Tim Huang
28bb063301 Bug 1277803 - Part 1 : Add a new ContentPolicy TYPE_INTERNAL_IMAGE_FAVICON for indicating a favicon loading. r=ckerschb 2016-10-12 17:32:03 +08:00
Christoph Kerschbaumer
776d5124f5 Bug 1227289 - Default to the NullPrincipal rather than SystemPrincipal for Favicons. r=billm 2016-08-23 10:30:28 +02:00
Drew Willcoxon
c4e95293f3 Bug 798223 - Increase optimized favicon dimension in Places database from 16 to 32. r=mak
MozReview-Commit-ID: HTLPQR66HOn
2016-08-02 18:00:07 -07:00
Chris Peterson
6c0f810682 Bug 1277106 - Part 2: Expand MOZ_UTF16() strings to u"" string literals. r=Waldo 2016-07-20 22:03:25 -07:00
Marco Bonardo
270696b2ca Bug 1283825 - Add a page-icon protocol to fetch the best icon for a url. r=adw
MozReview-Commit-ID: 3exDniH8Hkm
2016-06-30 18:17:44 +02:00
Christoph Kerschbaumer
b3c660bf43 Bug 1196013 - Use channel->ascynOpen2 in toolkit/components/places. r=billm r=sicking r=mak 2016-05-23 23:57:31 +02:00
Christoph Kerschbaumer
473672b5e6 Bug 1270808 - Add deprecation warning within nsFaviconService.cpp. r=gijs 2016-05-06 13:56:24 +02:00
Marco Bonardo
9c39dbd4fd Bug 1269737 - Make AsyncFaviconHelpers more maintainable. r=adw
MozReview-Commit-ID: l0GnzPZK8w
2016-05-06 11:37:26 +02:00
Marco Bonardo
018d75cea1 Bug 1265420 - SetAndFetchFaviconForPage should return a cancelable object to allow aborting the fetch. r=Gijs
MozReview-Commit-ID: Leu4iZBkP7z
2016-05-03 15:42:12 +02:00
Nicholas Nethercote
91583ee197 Bug 1187138 (part 3) - Replace nsBaseHashtable::Enumerate() calls in toolkit/ with iterators. r=froydnj. 2015-11-24 16:53:46 -08:00
Christoph Kerschbaumer
ad9aa1b5d2 Bug 1119386 - Part 4: Use document's principal for favicons in toolkit (r=gijs,mak) 2015-11-24 13:32:22 -08:00
Nathan Froyd
4e6d8f6705 Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout.  The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.

CLOSED TREE makes big refactorings like this a piece of cake.

 # The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
    xargs perl -p -i -e '
 s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
 s/nsRefPtr ?</RefPtr</g;   # handle declarations and variables
'

 # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h

 # Handle nsRefPtr.h itself, a couple places that define constructors
 # from nsRefPtr, and code generators specially.  We do this here, rather
 # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
 # things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
     mfbt/nsRefPtr.h \
     xpcom/glue/nsCOMPtr.h \
     xpcom/base/OwningNonNull.h \
     ipc/ipdl/ipdl/lower.py \
     ipc/ipdl/ipdl/builtin.py \
     dom/bindings/Codegen.py \
     python/lldbutils/lldbutils/utils.py

 # In our indiscriminate substitution above, we renamed
 # nsRefPtrGetterAddRefs, the class behind getter_AddRefs.  Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
    xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'

if [ -d .git ]; then
    git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
    hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi
2015-10-18 01:24:48 -04:00
Seth Fowler
5152afbe27 Bug 1118926 (Part 1) - Remove remnants of -moz-resolution in C++ code. r=tn 2015-09-30 17:00:52 -07:00
Christoph Kerschbaumer
0e075876c3 Bug 1048048 - add preload content policy types for images (r=seth) 2015-09-20 14:55:59 -07:00
Wes Kocher
7e27875d2c Backed out 7 changesets (bug 1048048) for android crashes in various chunks CLOSED TREE
Backed out changeset b5abe23a4ea5 (bug 1048048)
Backed out changeset 4f91b10e8be0 (bug 1048048)
Backed out changeset 450d4a13c90e (bug 1048048)
Backed out changeset 6a727c40eb68 (bug 1048048)
Backed out changeset 88c2333ff745 (bug 1048048)
Backed out changeset 740ab1ecd079 (bug 1048048)
Backed out changeset 02c6d6aef163 (bug 1048048)
2015-09-21 09:08:34 -07:00
Christoph Kerschbaumer
46f476eda8 Bug 1048048 - add preload content policy types for images (r=seth) 2015-09-20 14:55:59 -07:00
Nicholas Nethercote
34f31298f1 Bug 1182960 (part 2) - Use nsTHashtable::Iterator in toolkit/components/places/. r=mak. 2015-07-14 07:06:29 -07:00
Emanuel Hoogeveen
b30abdc582 Bug 905127 - Part 1 - Make some functions from nsNetUtil not inline. r=jduell 2015-07-07 04:17:00 +02:00
Mike Hommey
338d086ead Bug 1134920 - Use moz_xmalloc/moz_xrealloc/free instead of nsMemory::Alloc/Realloc/Free. r=nfroyd 2015-04-01 13:51:45 +09:00
Christoph Kerschbaumer
a4a3d29c9d Bug 1099296 - Attach LoadInfo to remaining callers of ioService and ProtocolHandlers - in toolkit/ (r=mmc,mak) 2015-02-17 10:09:50 -08:00
Nicholas Nethercote
663b82ea3b Bug 1050009 - Initialize pldhash tables with a length, not a capacity. r=roc.
* * *
imported patch rm-dummy-params
2014-08-06 06:31:21 -07:00
Bernardo P. Rittmeyer
027ec52a91 Bug 951396 - Bookmark toolbar now can show icons in HiDPI resolution using a new helper function in PlacesUIUtils.jsm. r=MattN,mak 2014-07-31 19:29:57 -07:00
Birunthan Mohanathas
eeb9aaaa94 Bug 900908 - Part 3: Change uses of numbered macros in nsIClassInfoImpl.h/nsISupportsImpl.h to the variadic variants. r=froydnj 2014-04-27 03:06:00 -04:00
Birunthan Mohanathas
88a0348924 Bug 713082 - Part 2: Rename Util.h to ArrayUtils.h. r=Waldo 2013-12-08 21:52:54 -05:00
Birunthan Mohanathas
b55ff3bd65 Bug 784739 - Switch from NULL to nullptr in toolkit/components/ (1/2); r=ehsan 2013-10-10 16:38:05 -04:00
Robert O'Callahan
51222bdd45 Bug 910989. Remove nsTHashtable::Init, fallible allocation, and MT hashtables. r=ehsan,bsmedberg 2013-09-02 20:41:57 +12:00
Marco Bonardo
e297ca1208 Bug 838839 - Remove deprecated synchronous favicons APIs.
r=Mano sr=gavin
2013-03-20 14:25:19 +01:00
Marco Bonardo
75631c4899 Bug 834457 - Mark the Places APIs we will remove as deprecated.
r=gavin
2013-02-14 13:39:20 +01:00
Ehsan Akhgari
5ab06de081 Bug 817477 - Remove support for global private browsing mode; r=jdm,glandium 2013-01-29 13:12:13 -05:00
Josh Matthews
e77a3bf92a Bug 723005 - Remove all checks for global privacy status in history-related code, and add them to callers when appropriate. r=mak sr=gavin 2012-02-18 01:40:10 -05:00
Isaac Aggrey
990e90e88a Bug 791906: Replace NSPR integer limit constants with stdint ones; r=ehsan 2012-09-28 01:57:33 -05:00