Modify state change when showed state changes to showed state
[platform/framework/web/wrt.git] / src / api_new / runnable_widget_object_state.cpp
1 /*
2  * Copyright (c) 2012 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *    Licensed under the Apache License, Version 2.0 (the "License");
5  *    you may not use this file except in compliance with the License.
6  *    You may obtain a copy of the License at
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *    Unless required by applicable law or agreed to in writing, software
11  *    distributed under the License is distributed on an "AS IS" BASIS,
12  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *    See the License for the specific language governing permissions and
14  *    limitations under the License.
15  */
16 /**
17  * @file    core_module.cpp
18  * @author  Tomasz Iwanek (t.iwanek@samsung.com)
19  * @version 1.0
20  * @brief   State classes for runnable object
21  */
22
23 #include "runnable_widget_object_state.h"
24
25 #include <dpl/log/log.h>
26
27 #include "runnable_widget_object.h"
28
29 namespace WRT {
30 namespace State {
31
32 const StateChange StateChange::NoChange = StateChange();
33
34 StateChange::StateChange()
35 {
36 }
37
38 StateChange::StateChange(RunnableWidgetObjectStatePtr sptr)
39     : m_sptr(sptr)
40 {
41 }
42
43 void StateChange::commit()
44 {
45     if(m_sptr)
46     {
47         m_sptr->getObject().setNewState(m_sptr);
48     }
49 }
50
51 RunnableWidgetObjectState::RunnableWidgetObjectState(RunnableWidgetObject & object)
52     : m_object(object)
53 {
54 }
55
56 RunnableWidgetObjectState::~RunnableWidgetObjectState()
57 {
58 }
59
60 RunnableWidgetObject & RunnableWidgetObjectState::getObject() const
61 {
62     return m_object;
63 }
64
65 StateChange RunnableWidgetObjectState::allowCheckBeforeLaunch()
66 {
67     ThrowMsg(IRunnableWidgetObject::MethodInvocationForbidden,
68              "CheckBeforeLaunch cannot be called in current state" << toString());
69 }
70
71 StateChange RunnableWidgetObjectState::allowPrepareView()
72 {
73     ThrowMsg(IRunnableWidgetObject::MethodInvocationForbidden,
74              "PrepareView cannot be called in current state" << toString());
75 }
76
77 StateChange RunnableWidgetObjectState::allowShow()
78 {
79     ThrowMsg(IRunnableWidgetObject::MethodInvocationForbidden,
80              "Show cannot be called in current state" << toString());
81 }
82
83 StateChange RunnableWidgetObjectState::allowHide()
84 {
85     return StateChange(RunnableWidgetObjectStatePtr(new HiddenState(m_object)));
86 }
87
88 StateChange RunnableWidgetObjectState::allowSuspend()
89 {
90     ThrowMsg(IRunnableWidgetObject::MethodInvocationForbidden,
91              "Hide cannot be called in current state" << toString());
92 }
93
94 StateChange RunnableWidgetObjectState::allowResume()
95 {
96     ThrowMsg(IRunnableWidgetObject::MethodInvocationForbidden,
97              "Resume cannot be called in current state" << toString());
98 }
99
100 StateChange RunnableWidgetObjectState::allowReset()
101 {
102     ThrowMsg(IRunnableWidgetObject::MethodInvocationForbidden,
103              "Cannot reset in curretn state");
104 }
105
106 StateChange RunnableWidgetObjectState::allowGetCurrentWebview()
107 {
108     return StateChange::NoChange;
109 }
110
111 StateChange RunnableWidgetObjectState::allowSetUserDelegates()
112 {
113     ThrowMsg(IRunnableWidgetObject::MethodInvocationForbidden,
114              "SetUserCallbacks cannot be called in current state");
115 }
116
117 StateChange RunnableWidgetObjectState::allowBackward()
118 {
119     ThrowMsg(IRunnableWidgetObject::MethodInvocationForbidden,
120              "Backward cannot be called in current state ");
121 }
122
123 StateChange RunnableWidgetObjectState::allowForward()
124 {
125     ThrowMsg(IRunnableWidgetObject::MethodInvocationForbidden,
126              "Foreward cannot be called in current state ");
127 }
128
129 StateChange RunnableWidgetObjectState::allowReload()
130 {
131     ThrowMsg(IRunnableWidgetObject::MethodInvocationForbidden,
132              "Reload cannot be called in current state ");
133 }
134
135 InitialState::InitialState(RunnableWidgetObject & object) : RunnableWidgetObjectState(object)
136 {
137 }
138
139 std::string InitialState::toString() const
140 {
141     return "INITIAL";
142 }
143
144 StateChange InitialState::allowPrepareView()
145 {
146     return StateChange(RunnableWidgetObjectStatePtr(new PreparedState(m_object)));
147 }
148
149 StateChange InitialState::allowHide()
150 {
151     ThrowMsg(IRunnableWidgetObject::MethodInvocationForbidden,
152              "Cannot hide before RunnableWidgetObject initialization");
153 }
154
155 StateChange InitialState::allowGetCurrentWebview()
156 {
157     ThrowMsg(IRunnableWidgetObject::MethodInvocationForbidden,
158              "Cannot call GetCurrentWebview before RunnableWidgetObject initialization");
159 }
160
161 PreparedState::PreparedState(RunnableWidgetObject & object) : RunnableWidgetObjectState(object)
162 {
163 }
164
165 StateChange PreparedState::allowCheckBeforeLaunch()
166 {
167     return StateChange(RunnableWidgetObjectStatePtr(new SecurityCheckedState(m_object)));
168 }
169
170 std::string PreparedState::toString() const
171 {
172     return "PREPARED";
173 }
174
175 SecurityCheckedState::SecurityCheckedState(RunnableWidgetObject & object) : RunnableWidgetObjectState(object)
176 {
177 }
178
179 std::string SecurityCheckedState::toString() const
180 {
181     return "SECURITY_CHECKED";
182 }
183
184 StateChange SecurityCheckedState::allowShow()
185 {
186     return StateChange(RunnableWidgetObjectStatePtr(new ShowedState(m_object)));
187 }
188
189 StateChange SecurityCheckedState::allowSetUserDelegates()
190 {
191     return StateChange::NoChange;
192 }
193
194 ShowedState::ShowedState(RunnableWidgetObject & object) : RunnableWidgetObjectState(object)
195 {
196 }
197
198 std::string ShowedState::toString() const
199 {
200     return "SHOWED";
201 }
202
203 StateChange ShowedState::allowSuspend()
204 {
205     return StateChange(RunnableWidgetObjectStatePtr(new SuspendedState(m_object)));
206 }
207
208 StateChange ShowedState::allowBackward()
209 {
210     return StateChange::NoChange;
211 }
212
213 StateChange ShowedState::allowForward()
214 {
215     return StateChange::NoChange;
216 }
217
218 StateChange ShowedState::allowReload()
219 {
220     return StateChange::NoChange;
221 }
222
223 StateChange ShowedState::allowReset()
224 {
225     return StateChange::NoChange;
226 }
227
228 SuspendedState::SuspendedState(RunnableWidgetObject & object) : RunnableWidgetObjectState(object)
229 {
230 }
231
232 std::string SuspendedState::toString() const
233 {
234     return "SUSPENDED";
235 }
236
237 StateChange SuspendedState::allowResume()
238 {
239     return StateChange(RunnableWidgetObjectStatePtr(new ShowedState(m_object)));
240 }
241
242 StateChange SuspendedState::allowReset()
243 {
244     return StateChange(RunnableWidgetObjectStatePtr(new ShowedState(m_object)));
245 }
246
247 HiddenState::HiddenState(RunnableWidgetObject & object) : RunnableWidgetObjectState(object)
248 {
249 }
250
251 std::string HiddenState::toString() const
252 {
253     return "HIDEN";
254 }
255
256 StateChange HiddenState::allowHide()
257 {
258     ThrowMsg(IRunnableWidgetObject::MethodInvocationForbidden,
259              "Hide cannot be called in current state" << toString());
260 }
261
262 }
263 }