Commit Graph

221 Commits

Author SHA1 Message Date
Drew Willcoxon
433cf16c1b Bug 1467627 - Calculate origin frecency as the sum of all URL frecencies instead of the max. r=mak
MozReview-Commit-ID: KZi9C7olvsj
2018-07-04 14:01:28 -07:00
Mark Banner
406bbda2a5 Bug 1419704 - Remove nsIGlobalHistory2 and docshell's nsDownloadHistory as they are redundant. r=mak,bzbarsky
nsIGlobalHistory2 is not implemented by any mozilla-central nor comm-central applications, and hence can be removed. As a result, nsDownloadHistory's implementation can also be removed.

MozReview-Commit-ID: 5bQ2OHsV1Ky

Differential Revision: https://phabricator.services.mozilla.com/D1929
2018-07-04 09:59:45 +00:00
Doug Thayer
cc2403e3ed Bug 1340498 - Update onVisits uses to 'page-visited' r=mak
Consuming the new 'page-visited' notification was fairly trivial,
since it was already brought over to onVisits. There's not much to
say about this other than that I'm a little bit uncertain about
all the hoops we have to jump through to get a JSContext and
GlobalObject from History.cpp (which is discussed in the earlier
commit in the series).

MozReview-Commit-ID: LHaBWSylyLI
2018-02-14 09:11:49 -08:00
Doug Thayer
eb85f05a47 Bug 1340498 - Implement new Places Observers interface r=mrbkap
See the design doc[1] for further info. We would like to redesign
the places observer system to be more performant and more friendly
to consume. WebIDL was recommended as it simplifies creating simple
dictionary payloads while allowing dynamic typing with `any`.

There were some difficulties with WebIDL though, most of which
revolved around allowing consumers to be weakly referenced, from
both C++ and JS. The simplest solution I could come up with was to
create a simple native interface for the C++ case, and a WebIDL
wrapper for a JS callback in the JS case. Suggestions for simpler
alternatives are very welcome though.

[1] https://docs.google.com/document/d/1G45vfd6RXFXwNz7i4FV40lDCU0ao-JX_bZdgJV4tLjk/edit?usp=sharing

MozReview-Commit-ID: ACnAEfa5WxO
2018-02-14 09:06:15 -08:00
Dorel Luca
1dbfe28bab Backed out 5 changesets (bug 1340498) for build bustage due to conflicts with bug 1470325. a=backout
Backed out changeset 28bedb658af4 (bug 1340498)
Backed out changeset f950a2310e26 (bug 1340498)
Backed out changeset 5fcd31c65fe0 (bug 1340498)
Backed out changeset 515bb5e24dd7 (bug 1340498)
Backed out changeset 79a8619bd3e2 (bug 1340498)
2018-06-27 14:05:20 +03:00
Doug Thayer
01f61c42a3 Bug 1340498 - Update onVisits uses to 'page-visited' r=mak
Consuming the new 'page-visited' notification was fairly trivial,
since it was already brought over to onVisits. There's not much to
say about this other than that I'm a little bit uncertain about
all the hoops we have to jump through to get a JSContext and
GlobalObject from History.cpp (which is discussed in the earlier
commit in the series).

MozReview-Commit-ID: LHaBWSylyLI
2018-02-14 09:11:49 -08:00
Doug Thayer
f3e5aea384 Bug 1340498 - Implement new Places Observers interface r=mrbkap
See the design doc[1] for further info. We would like to redesign
the places observer system to be more performant and more friendly
to consume. WebIDL was recommended as it simplifies creating simple
dictionary payloads while allowing dynamic typing with `any`.

There were some difficulties with WebIDL though, most of which
revolved around allowing consumers to be weakly referenced, from
both C++ and JS. The simplest solution I could come up with was to
create a simple native interface for the C++ case, and a WebIDL
wrapper for a JS callback in the JS case. Suggestions for simpler
alternatives are very welcome though.

[1] https://docs.google.com/document/d/1G45vfd6RXFXwNz7i4FV40lDCU0ao-JX_bZdgJV4tLjk/edit?usp=sharing

MozReview-Commit-ID: ACnAEfa5WxO
2018-02-14 09:06:15 -08:00
Bogdan Tara
b9179b41dc Backed out 5 changesets (bug 1340498) for build bustages on nsDOMCSSAttrDeclaration.h CLOSED TREE
Backed out changeset 9ebcdb66ceff (bug 1340498)
Backed out changeset 63321093bb70 (bug 1340498)
Backed out changeset f8c799971f81 (bug 1340498)
Backed out changeset 21d8c1fbbbd1 (bug 1340498)
Backed out changeset fa40c179eb0d (bug 1340498)
2018-06-26 21:31:09 +03:00
Doug Thayer
2b253c73ae Bug 1340498 - Update onVisits uses to 'page-visited' r=mak
Consuming the new 'page-visited' notification was fairly trivial,
since it was already brought over to onVisits. There's not much to
say about this other than that I'm a little bit uncertain about
all the hoops we have to jump through to get a JSContext and
GlobalObject from History.cpp (which is discussed in the earlier
commit in the series).

MozReview-Commit-ID: LHaBWSylyLI
2018-02-14 09:11:49 -08:00
Doug Thayer
a172b0ec6c Bug 1340498 - Implement new Places Observers interface r=mrbkap
See the design doc[1] for further info. We would like to redesign
the places observer system to be more performant and more friendly
to consume. WebIDL was recommended as it simplifies creating simple
dictionary payloads while allowing dynamic typing with `any`.

There were some difficulties with WebIDL though, most of which
revolved around allowing consumers to be weakly referenced, from
both C++ and JS. The simplest solution I could come up with was to
create a simple native interface for the C++ case, and a WebIDL
wrapper for a JS callback in the JS case. Suggestions for simpler
alternatives are very welcome though.

[1] https://docs.google.com/document/d/1G45vfd6RXFXwNz7i4FV40lDCU0ao-JX_bZdgJV4tLjk/edit?usp=sharing

MozReview-Commit-ID: ACnAEfa5WxO
2018-02-14 09:06:15 -08:00
arthur.iakab
1258a01769 Backed out 5 changesets (bug 1340498) for build bustages on SelectionChangeListener.h on a CLOSED TREE
Backed out changeset c89b86622d38 (bug 1340498)
Backed out changeset b270d4a01986 (bug 1340498)
Backed out changeset 8ed32495b46f (bug 1340498)
Backed out changeset df9a67c58183 (bug 1340498)
Backed out changeset a5977e0708ea (bug 1340498)
2018-06-26 07:59:01 +03:00
Doug Thayer
22f01d15a0 Bug 1340498 - Update onVisits uses to 'page-visited' r=mak
Consuming the new 'page-visited' notification was fairly trivial,
since it was already brought over to onVisits. There's not much to
say about this other than that I'm a little bit uncertain about
all the hoops we have to jump through to get a JSContext and
GlobalObject from History.cpp (which is discussed in the earlier
commit in the series).

MozReview-Commit-ID: LHaBWSylyLI
2018-02-14 09:11:49 -08:00
Doug Thayer
be0a19e61e Bug 1340498 - Implement new Places Observers interface r=mrbkap
See the design doc[1] for further info. We would like to redesign
the places observer system to be more performant and more friendly
to consume. WebIDL was recommended as it simplifies creating simple
dictionary payloads while allowing dynamic typing with `any`.

There were some difficulties with WebIDL though, most of which
revolved around allowing consumers to be weakly referenced, from
both C++ and JS. The simplest solution I could come up with was to
create a simple native interface for the C++ case, and a WebIDL
wrapper for a JS callback in the JS case. Suggestions for simpler
alternatives are very welcome though.

[1] https://docs.google.com/document/d/1G45vfd6RXFXwNz7i4FV40lDCU0ao-JX_bZdgJV4tLjk/edit?usp=sharing

MozReview-Commit-ID: ACnAEfa5WxO
2018-02-14 09:06:15 -08:00
arthur.iakab
81607b246c Backed out 5 changesets (bug 1340498) for build bustages on SelectionChangeListener.h on a CLOSED TREE
Backed out changeset fae677707059 (bug 1340498)
Backed out changeset 2adde1d1742a (bug 1340498)
Backed out changeset a444ab9cefde (bug 1340498)
Backed out changeset e2ac49ef2034 (bug 1340498)
Backed out changeset 6465310b3de9 (bug 1340498)
2018-06-26 03:53:21 +03:00
Doug Thayer
18b440efb6 Bug 1340498 - Update onVisits uses to 'page-visited' r=mak
Consuming the new 'page-visited' notification was fairly trivial,
since it was already brought over to onVisits. There's not much to
say about this other than that I'm a little bit uncertain about
all the hoops we have to jump through to get a JSContext and
GlobalObject from History.cpp (which is discussed in the earlier
commit in the series).

MozReview-Commit-ID: LHaBWSylyLI
2018-02-14 09:11:49 -08:00
Doug Thayer
aeca3bbf4d Bug 1340498 - Implement new Places Observers interface r=mrbkap
See the design doc[1] for further info. We would like to redesign
the places observer system to be more performant and more friendly
to consume. WebIDL was recommended as it simplifies creating simple
dictionary payloads while allowing dynamic typing with `any`.

There were some difficulties with WebIDL though, most of which
revolved around allowing consumers to be weakly referenced, from
both C++ and JS. The simplest solution I could come up with was to
create a simple native interface for the C++ case, and a WebIDL
wrapper for a JS callback in the JS case. Suggestions for simpler
alternatives are very welcome though.

[1] https://docs.google.com/document/d/1G45vfd6RXFXwNz7i4FV40lDCU0ao-JX_bZdgJV4tLjk/edit?usp=sharing

MozReview-Commit-ID: ACnAEfa5WxO
2018-02-14 09:06:15 -08:00
Emilio Cobos Álvarez
4b8b5e1717 Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj
This was done automatically replacing:

  s/mozilla::Move/std::move/
  s/ Move(/ std::move(/
  s/(Move(/(std::move(/

Removing the 'using mozilla::Move;' lines.

And then with a few manual fixups, see the bug for the split series..

MozReview-Commit-ID: Jxze3adipUh
2018-06-01 10:45:27 +02:00
Marco Bonardo
67caf9a39c Bug 1463132 - New autofill threshold doesn't work well with redirects. r=adw
MozReview-Commit-ID: 9DqCWA2nGnz
2018-05-23 16:49:06 +02:00
Drew Willcoxon
3159afb64a Bug 1239708: Improve awesomebar autofill. Part 2: Non-core follow-ons. r=mak
MozReview-Commit-ID: IFm1arAhjF5
2018-05-14 11:25:33 -07:00
Chris Peterson
5d6b16ea3b Bug 1457813 - Part 2: Replace non-asserting NS_PRECONDITIONs with MOZ_ASSERTs. r=froydnj
s/NS_PRECONDITION/MOZ_ASSERT/ and reindent

MozReview-Commit-ID: KuUsnVe2h8L
2018-04-28 12:50:58 -07:00
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