Commit Graph

201 Commits

Author SHA1 Message Date
Miko Mynttinen
86800aa3f1 Bug 1445302 - Replace TArray.RemoveElementAt(TArray.Length() - 1) pattern with TArray.RemoveLastElement() or TArray.PopLastElement() r=froydnj
MozReview-Commit-ID: rGjabnP2iz
2018-03-13 14:51:33 +01:00
Kris Maglione
edc98f08f3 Bug 1412726: Clean up XPCOM singleton constructor refcount handling. r=froydnj
This is a follow-up to bug 1409249. There are a lot of places where our
factory singleton constructors either don't correctly handle their returned
references being released by the component manager, or do handle it, but in
ways that are not obvious.

This patch handles a few places where we can sometimes wind up with dangling
singleton pointers, adds some explanatory comments and sanity check
assertions, and replaces some uses of manual refcounting with StaticRefPtr and
ClearOnShutdown.

There are still some places where we may wind up with odd behavior if the
first QI for a getService call fails. In those cases, we wind up destroying
the first instance of a service that we create, and re-creating a new one
later.

MozReview-Commit-ID: ANYndvd7aZx
2017-10-29 16:02:40 -07:00
Doug Thayer
5394d406e4 Bug 1421703 - replace onVisit with onVisits r=mak
There's a heavy enough overhead to going through XPConnect for
every observer for every visit on the nsINavHistoryObserver
interface, so this patch reduces that by replacing the single-
visit notification with one which accepts an array of visits.

Some notes: To avoid problems with the orderings of the various
ways in which we notify about visits, we have to send our bulk
onVisits notification before doing any of the others. This does
mean it technically behaves slightly different than the prior
approach of interleaving the notifications, but I can't find any
way in which this has any consequences to the end result, and it
doesn't break any tests.

MozReview-Commit-ID: GdeooH8mCkg
2017-12-20 14:27:24 -08:00
Doug Thayer
6dd9040a12 Bug 1423612 - Pass VisitData by reference r=standard8
Fairly trivial. Prompted by a coverity report.

MozReview-Commit-ID: 8Yg5KsRc2E1
2017-12-06 14:03:10 -08:00
Doug Thayer
93d7aac52b Bug 1421701 - Chunk visits when notifying main thread r=mak
Since processing several hundred visits synchronously on the
main thread can be somewhat expensive, and since the main thread
might be idle while the storage worker is running, it makes sense
to chunk the messages into groups of 100.

We did have a concern that this changes the move of the underlying
array to a copy, which might bring some cost with it. For small
arrays, we simply move the underlying array to avoid the copy to
mitigate it. However, for large arrays I was unable to observe any
significant performance cost anyway, so I think we're in the clear.

MozReview-Commit-ID: 1hWSEyKw6pi
2017-12-04 13:46:10 -08:00
Doug Thayer
bd1ea8b613 Bug 1421704 - Optimize NotifyVisited IPC to take batch r=mak
During history import, sending NotifyVisited messages from the
chrome process to the content processes in order to change link
colors can take a significant portion of the parent process's
main thread time. Batching it seems to have very significant
results on jank time during history imports.

MozReview-Commit-ID: BHAXpIMa7ly
2017-12-04 09:45:29 -08:00
Marco Bonardo
cf97940414 Bug 1415598. r=gijs 2017-12-07 15:28:41 +01:00
Marco Bonardo
d94aedaac5 Bug 1419825 - Callers of insertVisitedURIs may overwrite the history title passing a null title. r=kitcambridge
MozReview-Commit-ID: EPU4mv8rn7h
2017-11-23 18:44:07 +01:00
Doug Thayer
e9ff36a70a Bug 1418443 - Send OnVisit notifications from single runnable r=mak
Because there's an overhead in simply creating/sending/receiving a
runnable, it makes sense to send our onVisits notifications from a
bulk runnable in the case where we're inserting many visits. This
is only step one of many optimizations we can and should make to
the observer system.

MozReview-Commit-ID: Co5yOUCRdnZ
2017-11-21 14:43:47 -08:00
Doug Thayer
e469da7af4 Bug 1414892 - Optimize moz_places_afterinsert_trigger r=mak
This uses a similar strategy as that employed by moz_places_afterdelete_trigger,
creating a temp table which we write host inserts into, and then deleting all
the rows from it when we're done inserting, effectively resulting in a per-
statement trigger to only do the significant work per host.

MozReview-Commit-ID: 5TUueknq3ng
2017-11-07 12:01:53 -08:00
Kris Maglione
375dfdb59d Bug 1409249: Require singleton constructors to return explicit already_AddRefed. r=froydnj
Right now, NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR expects singleton
constructors to return already-addrefed raw pointers, and while it accepts
constructors that return already_AddRefed, most existing don't do so.

Meanwhile, the convention elsewhere is that a raw pointer return value is
owned by the callee, and that the caller needs to addref it if it wants to
keep its own reference to it.

The difference in convention makes it easy to leak (I've definitely caused
more than one shutdown leak this way), so it would be better if we required
the singleton getters to return an explicit already_AddRefed, which would
behave the same for all callers.


This also cleans up several singleton constructors that left a dangling
pointer to their singletons when their initialization methods failed, when
they released their references without clearing their global raw pointers.

MozReview-Commit-ID: 9peyG4pRYcr
2017-10-16 21:08:42 -07:00
Ehsan Akhgari
1a344417e2 Bug 1382923 - Avoid AddRef()ing the History service in the Link constructor; r=smaug 2017-08-28 00:51:26 -04:00
Michael Layzell
23713b702a Bug 1372433 - Label the PContent::Msg_NotifyVisited runnable, r=billm
I don't bother to label the runnables in the parent process being fired by
VisitedQuery, as we are not planning to perform scheduling in the parent process
if I remember correctly. It would be possible to label those runnables as well.

MozReview-Commit-ID: EosNOu62fEV
2017-08-11 18:07:58 -04:00
Marco Bonardo
d5efb77a61 Bug 1376676 - Avoid a race condition where the History.cpp cloned connection may not be closed. r=asuth
MozReview-Commit-ID: YXmasMLBg4
2017-07-24 23:08:44 +02: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
Bill McCloskey
ce42826bdf Bug 1372405 - Provide names for all runnables in the tree (r=froydnj)
MozReview-Commit-ID: DKR6ROiHRS7
2017-06-26 14:19:58 -07:00
Carsten "Tomcat" Book
238bf154d5 Backed out changeset 4f6302a98ae4 (bug 1372405) 2017-06-21 13:59:26 +02:00
Bill McCloskey
67e8af4720 Bug 1372405 - Provide names for all runnables in the tree (r=froydnj)
MozReview-Commit-ID: DKR6ROiHRS7
2017-06-20 21:44:11 -07:00
Carsten "Tomcat" Book
bbe9441993 Backed out changeset 9846de3bd954 (bug 1372405) 2017-06-20 08:27:02 +02:00
Bill McCloskey
f69608368b Bug 1372405 - Provide names for all runnables in the tree (r=froydnj)
MozReview-Commit-ID: DKR6ROiHRS7
2017-06-19 22:25:47 -07:00
Bevis Tseng
e6dc9e02bc Bug 1372453 - Part 2: Name the caller of ProxyReleaseEvent. r=billm
MozReview-Commit-ID: LYhSWnZkq0i
2017-06-14 09:27:17 +08:00
Mats Palmgren
f52dffc5a1 Bug 1372413 - Use RemoveEntry(EntryType*) instead of RemoveEntry(KeyType) to avoid another hashtable lookup. r=mak
MozReview-Commit-ID: 1isuxbPXV94
2017-06-14 17:27:25 +02:00
milindl
d307ef0df3 Bug 1350377 - Remove getPlacesInfo and change associated files and tests, r=mak
Files which make use of `getPlacesInfo` have been replaced with `History.fetch`.
The code for `GetPlacesInfo` has been deleted from the cpp and idl files.
The test for `getPlacesInfo` has been suitably rewritten and moved alongside the
other History.jsm tests.

There were 2 places where the fact that `getPlacesInfo` takes an array as opposed
to a single uri mattered, in `test_getPlacesInfo.js` and `test_refresh_firefox.py`.

MozReview-Commit-ID: KQSMHCvvlrQ
2017-05-17 16:02:21 +05:30
Asaf Romano
9e3b2d8f01 Bug 830291 - remove "downloads/destinationFileName" annotation. r=mak
MozReview-Commit-ID: GznhjKHOr9c
2017-05-12 15:44:25 +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
f46796e1b0 Bug 1353783 - updatePlaces doesn't correctly notify and count embed visits. r=Gijs
Additionally, move some history tests to the history folder, split insertMany tests into their own test file.
Also, remove some no more needed android annotations, Firefox for Android doesn't use nor build Places anymore.

MozReview-Commit-ID: 6p4mazeUjsw
2017-04-06 14:24:25 +02:00
Gijs Kruitbosch
d9c7b8ddde Bug 1341097 - part 4: misc. small optimizations, r=mak
The MigrationUtils change is because 99% of the time we will only have
1 visit per URI, and so we spend silly amounts of time doing nothing.
Time spent in composing our undo structure went from ~800ms to ~550ms
with this change.

The other change just seemed obvious - when visits aren't recent,
we shouldn't add them to 'recently visited' lists, which seem to use
'time this function was called' as the time associated with an entry,
which is incorrect.

MozReview-Commit-ID: 2I0D5ApOCI7
2017-02-20 16:06:27 +00:00
Gijs Kruitbosch
b381e8453b Bug 1341097 - part 3: don't dispatch oodles of titlechanged notifications for new history entries, r=mak
MozReview-Commit-ID: 7jHOcCQ5ZBb
2017-02-27 18:26:21 +00:00
Gijs Kruitbosch
e1717a1338 Bug 1341097 - part 2: allow turning off notifications for individual inserted results when calling updatePlaces, r=mak
This sets a property on the callback object rather than passing an argument
to handleCompletion, to avoid accidentally breaking consumers who don't
expect arguments. The downside is that this required more changes to C++
consumers, but we control all of those so that seemed an acceptable
trade-off.

We should probably actually report errors for all the migrators, but I didn't
want to add risk (what if in some edge-case there are lots?) so I didn't. I'll
file a followup to update them to Cu.reportError() any errors.

MozReview-Commit-ID: Hue9Ci3hyVz
2017-02-21 14:20:21 +00:00
Gijs Kruitbosch
705481de09 Bug 1341097 - part 1: group frecency notifications from history notifications, r=mak
When updating a large number of places, sending runnables to the main thread
for every single one of them whose frecency we update is not conducive to a
responsive UI. This only gets worse once more observers care about these
notifications (e.g. when the library is open).

To avoid this on startup when importing from other browsers, this patch adds
and uses an option to group the frecency notifications. Later patches will
also use the option to avoid other notifications where possible.

MozReview-Commit-ID: D5KqPDu86bo
2017-02-21 20:00:24 +00:00
Mark Banner
903e536db0 Bug 737836 - Don't rely on past visits for frecency calcuations for redirects. r=mak
MozReview-Commit-ID: GfgZSInN9Lv
2017-01-18 14:09:09 +00:00
Nicholas Nethercote
887efe04d5 Bug 1299727 - Rename NS_WARN_IF_FALSE as NS_WARNING_ASSERTION. r=erahm.
The new name makes the sense of the condition much clearer. E.g. compare:

  NS_WARN_IF_FALSE(!rv.Failed());

with:

  NS_WARNING_ASSERTION(!rv.Failed());

The new name also makes it clearer that it only has effect in debug builds,
because that's standard for assertions.
2016-09-01 15:01:16 +10:00
Nicholas Nethercote
1009bf0056 Bug 1297658 - Avoid unnecessary checking in memory reporters. r=erahm.
This patch removes checking of all the callback calls in memory reporter
CollectReport() functions, because it's not useful.

The patch also does some associated clean-up.

- Replaces some uses of nsIMemoryReporterCallback with the preferred
  nsIHandleReportCallback typedef.

- Replaces aCallback/aCb/aClosure with aHandleRepor/aData for CollectReports()
  parameter names, for consistency.

- Adds MOZ_MUST_USE/[must_use] in a few places in nsIMemoryReporter.idl.

- Uses the MOZ_COLLECT_REPORT macro in all suitable places.

Overall the patch reduces code size by ~300 lines and reduces the size of
libxul by about 37 KiB on my Linux64 builds.
2016-08-24 15:23:45 +10:00
Kan-Ru Chen
a9b19d0584 Bug 1297276 - Rename mfbt/unused.h to mfbt/Unused.h for consistency. r=froydnj
The patch is generated from following command:

  rgrep -l unused.h|xargs sed -i -e s,mozilla/unused.h,mozilla/Unused.h,

MozReview-Commit-ID: AtLcWApZfES
2016-08-24 14:47:04 +08:00
Nicholas Nethercote
1f65390cc9 Bug 1293603 (part 2) - Make Run() declarations consistent. r=erahm.
This patch makes most Run() declarations in subclasses of nsIRunnable have the
same form: |NS_IMETHOD Run() override|.

As a result of these changes, I had to add |override| to a couple of other
functions to satisfy clang's -Winconsistent-missing-override warning.
2016-08-08 12:18:10 +10:00
Marco Bonardo
8c84a82cf7 Bug 889561 - Reduce the size of places.sqlite by removing the url unique index from moz_places. r=adw
MozReview-Commit-ID: 2kxaXnUYIwT
2016-06-29 14:47:36 +02:00
Carsten "Tomcat" Book
7817a7f352 Backed out changeset ceff61c9fc5a (bug 889561) for frequent testfailures on pgo in /bookmarks/test_ 2016-06-29 13:54:51 +02:00
Marco Bonardo
81cc21d652 Bug 889561 - Reduce the size of places.sqlite by removing the url unique index from moz_places. r=adw
MozReview-Commit-ID: 2kxaXnUYIwT
2016-06-20 13:22:10 +02:00
Marco Bonardo
55d78c4867 Bug 1209027 - add missing explicit. r=bustage
MozReview-Commit-ID: 7rAmfjSDSvZ
2016-06-08 15:17:16 +02:00
Marco Bonardo
9370235d96 Bug 1277235 - add typed and visitCount to onVisit. r=adw
MozReview-Commit-ID: 3XfBCiOgyAu
2016-06-01 16:42:15 +02:00
Marco Bonardo
58865a2fc2 Bug 1209027 - Reduce queries load on visits addition. r=adw
MozReview-Commit-ID: AvW7WB2LXZE
2016-05-31 15:19:16 +02:00
Marco Bonardo
c1bfd3aba5 Bug 1261386 - Avoid history flooding from repeated reloads. r=adw
MozReview-Commit-ID: FhU8nOoNUHb
2016-05-26 17:49:40 +02:00
Kyle Huey
b972c94d0f Bug 1268313: Part 7 - Move NS_NewRunnableMethod and friends to mozilla::NewRunnableMethod. r=froydnj 2016-05-05 01:45:00 -07:00
Carsten "Tomcat" Book
aadd508ffe Backed out changeset 85ce8cb0639a (bug 1268313) 2016-04-29 14:21:16 +02:00
Kyle Huey
e62a0823c9 Bug 1268313: Part 7 - Move NS_NewRunnableMethod and friends to mozilla::NewRunnableMethod. r=froydnj 2016-04-28 14:08:25 -07:00
Kyle Huey
a9cf047227 Bug 1265927: Move nsRunnable to mozilla::Runnable, CancelableRunnable to mozilla::CancelableRunnable. r=froydnj 2016-04-25 17:23:21 -07:00
Valentin Gosu
67c7cbc512 Bug 548685 - Avoid null pointer deref in nsURIHashKey r=mcmanus
MozReview-Commit-ID: 5wCZ0DTHEUS
2016-04-19 15:46:34 +02:00
Kyle Huey
20d0dc7286 Bug 1259294: Part 2 - Use MOZ_ALWAYS_SUCCEEDS. r=froydnj 2016-03-28 10:28:15 -07:00