Line data Source code
1 : #include "mozilla/dom/PendingGlobalHistoryEntry.h"
2 :
3 : namespace mozilla {
4 :
5 : namespace dom {
6 :
7 : void
8 0 : PendingGlobalHistoryEntry::VisitURI(nsIURI* aURI,
9 : nsIURI* aLastVisitedURI,
10 : nsIURI* aReferrerURI,
11 : uint32_t aFlags)
12 : {
13 0 : URIVisit visit;
14 0 : visit.mURI = aURI;
15 0 : visit.mLastVisitedURI = aLastVisitedURI;
16 0 : visit.mReferrerURI = aReferrerURI;
17 0 : visit.mFlags = aFlags;
18 0 : mVisits.AppendElement(Move(visit));
19 0 : }
20 :
21 : void
22 0 : PendingGlobalHistoryEntry::SetURITitle(nsIURI* aURI,
23 : const nsAString& aTitle)
24 : {
25 0 : URITitle title;
26 0 : title.mURI = aURI;
27 0 : title.mTitle.Assign(aTitle);
28 0 : mTitles.AppendElement(title);
29 0 : }
30 :
31 : nsresult
32 0 : PendingGlobalHistoryEntry::ApplyChanges(IHistory* aHistory)
33 : {
34 : nsresult rv;
35 0 : for (const URIVisit& visit : mVisits) {
36 0 : rv = aHistory->VisitURI(visit.mURI, visit.mLastVisitedURI, visit.mFlags);
37 0 : NS_ENSURE_SUCCESS(rv, rv);
38 : }
39 0 : mVisits.Clear();
40 :
41 0 : for (const URITitle& title : mTitles) {
42 0 : rv = aHistory->SetURITitle(title.mURI, title.mTitle);
43 0 : NS_ENSURE_SUCCESS(rv, rv);
44 : }
45 0 : mTitles.Clear();
46 :
47 0 : return NS_OK;
48 : }
49 :
50 : nsresult
51 0 : PendingGlobalHistoryEntry::ApplyChanges(nsIGlobalHistory2* aHistory)
52 : {
53 : nsresult rv;
54 0 : for (const URIVisit& visit : mVisits) {
55 0 : bool redirect = (visit.mFlags & IHistory::REDIRECT_TEMPORARY) ||
56 0 : (visit.mFlags & IHistory::REDIRECT_PERMANENT);
57 0 : bool toplevel = (visit.mFlags & IHistory::TOP_LEVEL);
58 :
59 0 : rv = aHistory->AddURI(visit.mURI, redirect, toplevel, visit.mReferrerURI);
60 0 : NS_ENSURE_SUCCESS(rv, rv);
61 : }
62 0 : mVisits.Clear();
63 :
64 0 : for (const URITitle& title : mTitles) {
65 0 : rv = aHistory->SetPageTitle(title.mURI, title.mTitle);
66 0 : NS_ENSURE_SUCCESS(rv, rv);
67 : }
68 0 : mTitles.Clear();
69 :
70 0 : return NS_OK;
71 : }
72 :
73 : } // namespace dom
74 :
75 : } // namespace mozilla
|