1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/*
* interface for container for information saved in session history when
* the document is not
*/
#include "nsISupports.idl"
[ptr] native PresStatePtr(mozilla::PresState);
native PresStateUnique(mozilla::UniquePtr<mozilla::PresState>);
native PresState(mozilla::PresState);
[ref] native nsCString(const nsCString);
native constBool(const bool);
%{C++
#include "nsStringFwd.h"
#include "mozilla/UniquePtr.h"
namespace mozilla {
class PresState;
} // namespace mozilla
template<typename> struct already_AddRefed;
%}
[scriptable, builtinclass, uuid(aef27cb3-4df9-4eeb-b0b0-ac56cf861d04)]
interface nsILayoutHistoryState : nsISupports
{
/**
* Whether this LayoutHistoryState contains any PresStates.
*/
readonly attribute boolean hasStates;
/**
* Get the keys of all PresStates held by this LayoutHistoryState.
* Note: Check hasStates first.
*/
Array<ACString> getKeys();
/*
* Attempts to get the data of the PresState corresponding to
* the passed key. Throws if no data could be found.
*/
void getPresState(in ACString aKey,
out float aScrollX, out float aScrollY,
out boolean aAllowScrollOriginDowngrade,
out float aRes);
/**
* Constructs a new PresState object based on the supplied data
* and adds it to the LayoutHistoryState.
*/
void addNewPresState(in ACString aKey,
in float aScrollX, in float aScrollY,
in boolean aAllowScrollOriginDowngrade,
in float aRes);
// Native only interface, converted from the original nsILayoutHistoryState.h
/**
* Set |aState| as the state object for |aKey|.
* This _transfers_ownership_ of |aState| to the LayoutHistoryState.
* It will be freed when RemoveState() is called or when the
* LayoutHistoryState is destroyed.
*/
[noscript, notxpcom, nostdcall] void AddState(in nsCString aKey, in PresStateUnique aState);
/**
* Look up the state object for |aKey|.
*/
[noscript, notxpcom, nostdcall] PresStatePtr GetState(in nsCString aKey);
/**
* Remove the state object for |aKey|.
*/
[noscript, notxpcom, nostdcall] void RemoveState(in nsCString aKey);
/**
* Check whether this history has any states in it
*/
[noscript, notxpcom, nostdcall] boolean HasStates();
/**
* Sets whether this history can contain only scroll position history
* or all possible history
*/
[noscript, notxpcom, nostdcall] void SetScrollPositionOnly(in constBool aFlag);
/**
* Resets PresState::GetScrollState of all PresState objects to 0,0.
*/
[noscript, notxpcom, nostdcall] void ResetScrollState();
/**
* Get the contents of the layout history.
*/
[noscript, notxpcom, nostdcall] void GetContents(out boolean aScrollPositionOnly,
out Array<ACString> aKeys,
out Array<PresState> aStates);
/**
* Remove all the states and clear the scroll position only flag.
*/
[noscript, notxpcom, nostdcall] void Reset();
};
%{C++
/* Defined in nsLayoutHistoryState.cpp */
already_AddRefed<nsILayoutHistoryState>
NS_NewLayoutHistoryState();
namespace mozilla {
mozilla::UniquePtr<mozilla::PresState> NewPresState();
} // namespace mozilla
%}
|