OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 else | 85 else |
86 testing::exitRunLoop(); | 86 testing::exitRunLoop(); |
87 } | 87 } |
88 | 88 |
89 TestWebFrameClient* defaultWebFrameClient() | 89 TestWebFrameClient* defaultWebFrameClient() |
90 { | 90 { |
91 DEFINE_STATIC_LOCAL(TestWebFrameClient, client, ()); | 91 DEFINE_STATIC_LOCAL(TestWebFrameClient, client, ()); |
92 return &client; | 92 return &client; |
93 } | 93 } |
94 | 94 |
| 95 TestWebWidgetClient* defaultWebWidgetClient() |
| 96 { |
| 97 DEFINE_STATIC_LOCAL(TestWebWidgetClient, client, ()); |
| 98 return &client; |
| 99 } |
| 100 |
95 TestWebViewClient* defaultWebViewClient() | 101 TestWebViewClient* defaultWebViewClient() |
96 { | 102 { |
97 DEFINE_STATIC_LOCAL(TestWebViewClient, client, ()); | 103 DEFINE_STATIC_LOCAL(TestWebViewClient, client, ()); |
98 return &client; | 104 return &client; |
99 } | 105 } |
100 | 106 |
101 // |uniqueName| is normally calculated in a somewhat complicated way by the | 107 // |uniqueName| is normally calculated in a somewhat complicated way by the |
102 // FrameTree class, but for test purposes the approximation below should be | 108 // FrameTree class, but for test purposes the approximation below should be |
103 // close enough. | 109 // close enough. |
104 String nameToUniqueName(const String& name) | 110 String nameToUniqueName(const String& name) |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 WebMouseEvent result; | 164 WebMouseEvent result; |
159 result.type = type; | 165 result.type = type; |
160 result.x = result.windowX = result.globalX = point.x(); | 166 result.x = result.windowX = result.globalX = point.x(); |
161 result.y = result.windowX = result.globalX = point.y(); | 167 result.y = result.windowX = result.globalX = point.y(); |
162 result.modifiers = modifiers; | 168 result.modifiers = modifiers; |
163 result.button = button; | 169 result.button = button; |
164 result.clickCount = 1; | 170 result.clickCount = 1; |
165 return result; | 171 return result; |
166 } | 172 } |
167 | 173 |
168 WebLocalFrame* createLocalChild(WebRemoteFrame* parent, const WebString& name, W
ebFrameClient* client, WebFrame* previousSibling, const WebFrameOwnerProperties&
properties) | 174 WebLocalFrame* createLocalChild(WebRemoteFrame* parent, const WebString& name, W
ebFrameClient* client, WebWidgetClient* widgetClient, WebFrame* previousSibling,
const WebFrameOwnerProperties& properties) |
169 { | 175 { |
170 if (!client) | 176 if (!client) |
171 client = defaultWebFrameClient(); | 177 client = defaultWebFrameClient(); |
172 | 178 |
173 return parent->createLocalChild(WebTreeScopeType::Document, name, nameToUniq
ueName(name), WebSandboxFlags::None, client, previousSibling, properties, nullpt
r); | 179 WebLocalFrame* frame = parent->createLocalChild(WebTreeScopeType::Document,
name, nameToUniqueName(name), WebSandboxFlags::None, client, previousSibling, pr
operties, nullptr); |
| 180 |
| 181 if (!widgetClient) |
| 182 widgetClient = defaultWebWidgetClient(); |
| 183 WebFrameWidget::create(widgetClient, frame); |
| 184 |
| 185 return frame; |
174 } | 186 } |
175 | 187 |
176 WebRemoteFrame* createRemoteChild(WebRemoteFrame* parent, WebRemoteFrameClient*
client, const WebString& name) | 188 WebRemoteFrame* createRemoteChild(WebRemoteFrame* parent, WebRemoteFrameClient*
client, const WebString& name) |
177 { | 189 { |
178 return parent->createRemoteChild(WebTreeScopeType::Document, name, nameToUni
queName(name), WebSandboxFlags::None, client, nullptr); | 190 return parent->createRemoteChild(WebTreeScopeType::Document, name, nameToUni
queName(name), WebSandboxFlags::None, client, nullptr); |
179 } | 191 } |
180 | 192 |
181 WebViewHelper::WebViewHelper(SettingOverrider* settingOverrider) | 193 WebViewHelper::WebViewHelper(SettingOverrider* settingOverrider) |
182 : m_webView(nullptr) | 194 : m_webView(nullptr) |
183 , m_webViewWidget(nullptr) | |
184 , m_settingOverrider(settingOverrider) | 195 , m_settingOverrider(settingOverrider) |
185 { | 196 { |
186 } | 197 } |
187 | 198 |
188 WebViewHelper::~WebViewHelper() | 199 WebViewHelper::~WebViewHelper() |
189 { | 200 { |
190 reset(); | 201 reset(); |
191 } | 202 } |
192 | 203 |
193 WebViewImpl* WebViewHelper::initializeWithOpener(WebFrame* opener, bool enableJa
vascript, TestWebFrameClient* webFrameClient, TestWebViewClient* webViewClient,
TestWebWidgetClient* webWidgetClient, void (*updateSettingsFunc)(WebSettings*)) | 204 WebViewImpl* WebViewHelper::initializeWithOpener(WebFrame* opener, bool enableJa
vascript, TestWebFrameClient* webFrameClient, TestWebViewClient* webViewClient,
TestWebWidgetClient* webWidgetClient, void (*updateSettingsFunc)(WebSettings*)) |
(...skipping 20 matching lines...) Expand all Loading... |
214 else | 225 else |
215 m_webView->settings()->setDeviceSupportsMouse(false); | 226 m_webView->settings()->setDeviceSupportsMouse(false); |
216 if (m_settingOverrider) | 227 if (m_settingOverrider) |
217 m_settingOverrider->overrideSettings(m_webView->settings()); | 228 m_settingOverrider->overrideSettings(m_webView->settings()); |
218 m_webView->setDeviceScaleFactor(webViewClient->screenInfo().deviceScaleFacto
r); | 229 m_webView->setDeviceScaleFactor(webViewClient->screenInfo().deviceScaleFacto
r); |
219 m_webView->setDefaultPageScaleLimits(1, 4); | 230 m_webView->setDefaultPageScaleLimits(1, 4); |
220 WebLocalFrame* frame = WebLocalFrameImpl::create(WebTreeScopeType::Document,
webFrameClient, opener); | 231 WebLocalFrame* frame = WebLocalFrameImpl::create(WebTreeScopeType::Document,
webFrameClient, opener); |
221 m_webView->setMainFrame(frame); | 232 m_webView->setMainFrame(frame); |
222 // TODO(dcheng): The main frame widget currently has a special case. | 233 // TODO(dcheng): The main frame widget currently has a special case. |
223 // Eliminate this once WebView is no longer a WebWidget. | 234 // Eliminate this once WebView is no longer a WebWidget. |
224 m_webViewWidget = blink::WebFrameWidget::create(webWidgetClient, m_webView,
frame); | 235 blink::WebFrameWidget::create(webWidgetClient, m_webView, frame); |
225 | 236 |
226 m_testWebViewClient = webViewClient; | 237 m_testWebViewClient = webViewClient; |
227 | 238 |
228 return m_webView; | 239 return m_webView; |
229 } | 240 } |
230 | 241 |
231 WebViewImpl* WebViewHelper::initialize(bool enableJavascript, TestWebFrameClient
* webFrameClient, TestWebViewClient* webViewClient, TestWebWidgetClient* webWidg
etClient, void (*updateSettingsFunc)(WebSettings*)) | 242 WebViewImpl* WebViewHelper::initialize(bool enableJavascript, TestWebFrameClient
* webFrameClient, TestWebViewClient* webViewClient, TestWebWidgetClient* webWidg
etClient, void (*updateSettingsFunc)(WebSettings*)) |
232 { | 243 { |
233 return initializeWithOpener(nullptr, enableJavascript, webFrameClient, webVi
ewClient, webWidgetClient, updateSettingsFunc); | 244 return initializeWithOpener(nullptr, enableJavascript, webFrameClient, webVi
ewClient, webWidgetClient, updateSettingsFunc); |
234 } | 245 } |
235 | 246 |
236 WebViewImpl* WebViewHelper::initializeAndLoad(const std::string& url, bool enabl
eJavascript, TestWebFrameClient* webFrameClient, TestWebViewClient* webViewClien
t, TestWebWidgetClient* webWidgetClient, void (*updateSettingsFunc)(WebSettings*
)) | 247 WebViewImpl* WebViewHelper::initializeAndLoad(const std::string& url, bool enabl
eJavascript, TestWebFrameClient* webFrameClient, TestWebViewClient* webViewClien
t, TestWebWidgetClient* webWidgetClient, void (*updateSettingsFunc)(WebSettings*
)) |
237 { | 248 { |
238 initialize(enableJavascript, webFrameClient, webViewClient, webWidgetClient,
updateSettingsFunc); | 249 initialize(enableJavascript, webFrameClient, webViewClient, webWidgetClient,
updateSettingsFunc); |
239 | 250 |
240 loadFrame(webView()->mainFrame(), url); | 251 loadFrame(webView()->mainFrame(), url); |
241 | 252 |
242 return webViewImpl(); | 253 return webViewImpl(); |
243 } | 254 } |
244 | 255 |
245 void WebViewHelper::reset() | 256 void WebViewHelper::reset() |
246 { | 257 { |
247 if (m_webViewWidget) { | |
248 m_webViewWidget->close(); | |
249 m_webViewWidget = nullptr; | |
250 } | |
251 if (m_webView) { | 258 if (m_webView) { |
252 DCHECK(m_webView->mainFrame()->isWebRemoteFrame() || !testClientForFrame
(m_webView->mainFrame())->isLoading()); | 259 DCHECK(m_webView->mainFrame()->isWebRemoteFrame() || !testClientForFrame
(m_webView->mainFrame())->isLoading()); |
253 m_webView->willCloseLayerTreeView(); | 260 m_webView->willCloseLayerTreeView(); |
254 m_webView->close(); | 261 m_webView->close(); |
255 m_webView = nullptr; | 262 m_webView = nullptr; |
256 } | 263 } |
257 } | 264 } |
258 | 265 |
259 void WebViewHelper::resize(WebSize size) | 266 void WebViewHelper::resize(WebSize size) |
260 { | 267 { |
261 m_testWebViewClient->clearAnimationScheduled(); | 268 m_testWebViewClient->clearAnimationScheduled(); |
262 webViewImpl()->resize(size); | 269 webViewImpl()->resize(size); |
263 EXPECT_FALSE(m_testWebViewClient->animationScheduled()); | 270 EXPECT_FALSE(m_testWebViewClient->animationScheduled()); |
264 m_testWebViewClient->clearAnimationScheduled(); | 271 m_testWebViewClient->clearAnimationScheduled(); |
265 } | 272 } |
266 | 273 |
267 TestWebFrameClient::TestWebFrameClient() | 274 TestWebFrameClient::TestWebFrameClient() |
268 { | 275 { |
269 } | 276 } |
270 | 277 |
271 WebFrame* TestWebFrameClient::createChildFrame(WebLocalFrame* parent, WebTreeSco
peType scope, const WebString& name, const WebString& uniqueName, WebSandboxFlag
s sandboxFlags, const WebFrameOwnerProperties& frameOwnerProperties) | 278 WebFrame* TestWebFrameClient::createChildFrame(WebLocalFrame* parent, WebTreeSco
peType scope, const WebString& name, const WebString& uniqueName, WebSandboxFlag
s sandboxFlags, const WebFrameOwnerProperties& frameOwnerProperties) |
272 { | 279 { |
273 WebFrame* frame = WebLocalFrame::create(scope, this); | 280 WebFrame* frame = WebLocalFrame::create(scope, this); |
274 parent->appendChild(frame); | 281 parent->appendChild(frame); |
275 return frame; | 282 return frame; |
276 } | 283 } |
277 | 284 |
278 void TestWebFrameClient::frameDetached(WebFrame* frame, DetachType type) | 285 void TestWebFrameClient::frameDetached(WebLocalFrame* frame, DetachType type) |
279 { | 286 { |
280 if (type == DetachType::Remove && frame->parent()) | 287 if (type == DetachType::Remove && frame->parent()) |
281 frame->parent()->removeChild(frame); | 288 frame->parent()->removeChild(frame); |
| 289 |
| 290 if (frame->frameWidget()) |
| 291 frame->frameWidget()->close(); |
| 292 |
282 frame->close(); | 293 frame->close(); |
283 } | 294 } |
284 | 295 |
285 void TestWebFrameClient::didStartLoading(bool) | 296 void TestWebFrameClient::didStartLoading(bool) |
286 { | 297 { |
287 ++m_loadsInProgress; | 298 ++m_loadsInProgress; |
288 } | 299 } |
289 | 300 |
290 void TestWebFrameClient::didStopLoading() | 301 void TestWebFrameClient::didStopLoading() |
291 { | 302 { |
(...skipping 11 matching lines...) Expand all Loading... |
303 if (type == DetachType::Remove && m_frame->parent()) | 314 if (type == DetachType::Remove && m_frame->parent()) |
304 m_frame->parent()->removeChild(m_frame); | 315 m_frame->parent()->removeChild(m_frame); |
305 m_frame->close(); | 316 m_frame->close(); |
306 } | 317 } |
307 | 318 |
308 void TestWebViewClient::initializeLayerTreeView() | 319 void TestWebViewClient::initializeLayerTreeView() |
309 { | 320 { |
310 m_layerTreeView = wrapUnique(new WebLayerTreeViewImplForTesting); | 321 m_layerTreeView = wrapUnique(new WebLayerTreeViewImplForTesting); |
311 } | 322 } |
312 | 323 |
| 324 void TestWebViewWidgetClient::initializeLayerTreeView() |
| 325 { |
| 326 m_testWebViewClient->initializeLayerTreeView(); |
| 327 } |
| 328 |
| 329 WebLayerTreeView* TestWebViewWidgetClient::layerTreeView() |
| 330 { |
| 331 return m_testWebViewClient->layerTreeView(); |
| 332 } |
| 333 |
| 334 void TestWebViewWidgetClient::scheduleAnimation() |
| 335 { |
| 336 m_testWebViewClient->scheduleAnimation(); |
| 337 } |
| 338 |
313 } // namespace FrameTestHelpers | 339 } // namespace FrameTestHelpers |
314 } // namespace blink | 340 } // namespace blink |
OLD | NEW |