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 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
95 DEFINE_STATIC_LOCAL(TestWebFrameClient, client, ()); | 95 DEFINE_STATIC_LOCAL(TestWebFrameClient, client, ()); |
96 return &client; | 96 return &client; |
97 } | 97 } |
98 | 98 |
99 TestWebViewClient* defaultWebViewClient() | 99 TestWebViewClient* defaultWebViewClient() |
100 { | 100 { |
101 DEFINE_STATIC_LOCAL(TestWebViewClient, client, ()); | 101 DEFINE_STATIC_LOCAL(TestWebViewClient, client, ()); |
102 return &client; | 102 return &client; |
103 } | 103 } |
104 | 104 |
| 105 // |uniqueName| is normally calculated in a somewhat complicated way by the |
| 106 // FrameTree class, but for test purposes the approximation below should be |
| 107 // close enough. |
| 108 String nameToUniqueName(const String& name) |
| 109 { |
| 110 static int uniqueNameCounter = 0; |
| 111 StringBuilder uniqueName; |
| 112 uniqueName.append(name); |
| 113 uniqueName.append(" "); |
| 114 uniqueName.appendNumber(uniqueNameCounter++); |
| 115 return uniqueName.toString(); |
| 116 } |
| 117 |
105 } // namespace | 118 } // namespace |
106 | 119 |
107 void loadFrame(WebFrame* frame, const std::string& url) | 120 void loadFrame(WebFrame* frame, const std::string& url) |
108 { | 121 { |
109 WebURLRequest urlRequest; | 122 WebURLRequest urlRequest; |
110 urlRequest.initialize(); | 123 urlRequest.initialize(); |
111 urlRequest.setURL(URLTestHelpers::toKURL(url)); | 124 urlRequest.setURL(URLTestHelpers::toKURL(url)); |
112 frame->loadRequest(urlRequest); | 125 frame->loadRequest(urlRequest); |
113 pumpPendingRequests(frame); | 126 pumpPendingRequests(frame); |
114 } | 127 } |
(...skipping 25 matching lines...) Expand all Loading... |
140 void pumpPendingRequestsDoNotUse(WebFrame* frame) | 153 void pumpPendingRequestsDoNotUse(WebFrame* frame) |
141 { | 154 { |
142 pumpPendingRequests(frame); | 155 pumpPendingRequests(frame); |
143 } | 156 } |
144 | 157 |
145 WebLocalFrame* createLocalChild(WebRemoteFrame* parent, const WebString& name, W
ebFrameClient* client, WebFrame* previousSibling, const WebFrameOwnerProperties&
properties) | 158 WebLocalFrame* createLocalChild(WebRemoteFrame* parent, const WebString& name, W
ebFrameClient* client, WebFrame* previousSibling, const WebFrameOwnerProperties&
properties) |
146 { | 159 { |
147 if (!client) | 160 if (!client) |
148 client = defaultWebFrameClient(); | 161 client = defaultWebFrameClient(); |
149 | 162 |
150 // |uniqueName| is normally calculated in a somewhat complicated way by the | 163 return parent->createLocalChild(WebTreeScopeType::Document, name, nameToUniq
ueName(name), WebSandboxFlags::None, client, previousSibling, properties, nullpt
r); |
151 // FrameTree class, but for test purposes the approximation below should be | 164 } |
152 // close enough. | |
153 static int uniqueNameCounter = 0; | |
154 StringBuilder uniqueName; | |
155 uniqueName.append(name); | |
156 uniqueName.appendNumber(uniqueNameCounter++); | |
157 | 165 |
158 return parent->createLocalChild(WebTreeScopeType::Document, name, uniqueName
.toString(), WebSandboxFlags::None, client, previousSibling, properties); | 166 WebRemoteFrame* createRemoteChild(WebRemoteFrame* parent, WebRemoteFrameClient*
client, const WebString& name) |
| 167 { |
| 168 return parent->createRemoteChild(WebTreeScopeType::Document, name, nameToUni
queName(name), WebSandboxFlags::None, client, nullptr); |
159 } | 169 } |
160 | 170 |
161 WebViewHelper::WebViewHelper(SettingOverrider* settingOverrider) | 171 WebViewHelper::WebViewHelper(SettingOverrider* settingOverrider) |
162 : m_webView(nullptr) | 172 : m_webView(nullptr) |
163 , m_webViewWidget(nullptr) | 173 , m_webViewWidget(nullptr) |
164 , m_settingOverrider(settingOverrider) | 174 , m_settingOverrider(settingOverrider) |
165 { | 175 { |
166 } | 176 } |
167 | 177 |
168 WebViewHelper::~WebViewHelper() | 178 WebViewHelper::~WebViewHelper() |
169 { | 179 { |
170 reset(); | 180 reset(); |
171 } | 181 } |
172 | 182 |
173 WebViewImpl* WebViewHelper::initialize(bool enableJavascript, TestWebFrameClient
* webFrameClient, TestWebViewClient* webViewClient, void (*updateSettingsFunc)(W
ebSettings*)) | 183 WebViewImpl* WebViewHelper::initializeWithOpener(WebFrame* opener, bool enableJa
vascript, TestWebFrameClient* webFrameClient, TestWebViewClient* webViewClient,
void (*updateSettingsFunc)(WebSettings*)) |
174 { | 184 { |
175 reset(); | 185 reset(); |
176 | 186 |
177 if (!webFrameClient) | 187 if (!webFrameClient) |
178 webFrameClient = defaultWebFrameClient(); | 188 webFrameClient = defaultWebFrameClient(); |
179 if (!webViewClient) | 189 if (!webViewClient) |
180 webViewClient = defaultWebViewClient(); | 190 webViewClient = defaultWebViewClient(); |
181 m_webView = WebViewImpl::create(webViewClient); | 191 m_webView = WebViewImpl::create(webViewClient); |
182 m_webView->settings()->setJavaScriptEnabled(enableJavascript); | 192 m_webView->settings()->setJavaScriptEnabled(enableJavascript); |
183 m_webView->settings()->setPluginsEnabled(true); | 193 m_webView->settings()->setPluginsEnabled(true); |
184 // Enable (mocked) network loads of image URLs, as this simplifies | 194 // Enable (mocked) network loads of image URLs, as this simplifies |
185 // the completion of resource loads upon test shutdown & helps avoid | 195 // the completion of resource loads upon test shutdown & helps avoid |
186 // dormant loads trigger Resource leaks for image loads. | 196 // dormant loads trigger Resource leaks for image loads. |
187 // | 197 // |
188 // Consequently, all external image resources must be mocked. | 198 // Consequently, all external image resources must be mocked. |
189 m_webView->settings()->setLoadsImagesAutomatically(true); | 199 m_webView->settings()->setLoadsImagesAutomatically(true); |
190 if (updateSettingsFunc) | 200 if (updateSettingsFunc) |
191 updateSettingsFunc(m_webView->settings()); | 201 updateSettingsFunc(m_webView->settings()); |
192 else | 202 else |
193 m_webView->settings()->setDeviceSupportsMouse(false); | 203 m_webView->settings()->setDeviceSupportsMouse(false); |
194 if (m_settingOverrider) | 204 if (m_settingOverrider) |
195 m_settingOverrider->overrideSettings(m_webView->settings()); | 205 m_settingOverrider->overrideSettings(m_webView->settings()); |
196 m_webView->setDeviceScaleFactor(webViewClient->screenInfo().deviceScaleFacto
r); | 206 m_webView->setDeviceScaleFactor(webViewClient->screenInfo().deviceScaleFacto
r); |
197 m_webView->setDefaultPageScaleLimits(1, 4); | 207 m_webView->setDefaultPageScaleLimits(1, 4); |
198 WebLocalFrame* frame = WebLocalFrameImpl::create(WebTreeScopeType::Document,
webFrameClient); | 208 WebLocalFrame* frame = WebLocalFrameImpl::create(WebTreeScopeType::Document,
webFrameClient, opener); |
199 m_webView->setMainFrame(frame); | 209 m_webView->setMainFrame(frame); |
200 // TODO(dcheng): The main frame widget currently has a special case. | 210 // TODO(dcheng): The main frame widget currently has a special case. |
201 // Eliminate this once WebView is no longer a WebWidget. | 211 // Eliminate this once WebView is no longer a WebWidget. |
202 m_webViewWidget = blink::WebFrameWidget::create(webViewClient, m_webView, fr
ame); | 212 m_webViewWidget = blink::WebFrameWidget::create(webViewClient, m_webView, fr
ame); |
203 | 213 |
204 m_testWebViewClient = webViewClient; | 214 m_testWebViewClient = webViewClient; |
205 | 215 |
206 return m_webView; | 216 return m_webView; |
207 } | 217 } |
208 | 218 |
| 219 WebViewImpl* WebViewHelper::initialize(bool enableJavascript, TestWebFrameClient
* webFrameClient, TestWebViewClient* webViewClient, void (*updateSettingsFunc)(W
ebSettings*)) |
| 220 { |
| 221 return initializeWithOpener(nullptr, enableJavascript, webFrameClient, webVi
ewClient, updateSettingsFunc); |
| 222 } |
| 223 |
209 WebViewImpl* WebViewHelper::initializeAndLoad(const std::string& url, bool enabl
eJavascript, TestWebFrameClient* webFrameClient, TestWebViewClient* webViewClien
t, void (*updateSettingsFunc)(WebSettings*)) | 224 WebViewImpl* WebViewHelper::initializeAndLoad(const std::string& url, bool enabl
eJavascript, TestWebFrameClient* webFrameClient, TestWebViewClient* webViewClien
t, void (*updateSettingsFunc)(WebSettings*)) |
210 { | 225 { |
211 initialize(enableJavascript, webFrameClient, webViewClient, updateSettingsFu
nc); | 226 initialize(enableJavascript, webFrameClient, webViewClient, updateSettingsFu
nc); |
212 | 227 |
213 loadFrame(webView()->mainFrame(), url); | 228 loadFrame(webView()->mainFrame(), url); |
214 | 229 |
215 return webViewImpl(); | 230 return webViewImpl(); |
216 } | 231 } |
217 | 232 |
218 void WebViewHelper::reset() | 233 void WebViewHelper::reset() |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
275 // and asynchronous parsing make use of off main thread HTML parser. | 290 // and asynchronous parsing make use of off main thread HTML parser. |
276 testing::runPendingTasks(); | 291 testing::runPendingTasks(); |
277 if (!isLoading()) | 292 if (!isLoading()) |
278 break; | 293 break; |
279 | 294 |
280 testing::yieldCurrentThread(); | 295 testing::yieldCurrentThread(); |
281 } | 296 } |
282 } | 297 } |
283 | 298 |
284 TestWebRemoteFrameClient::TestWebRemoteFrameClient() | 299 TestWebRemoteFrameClient::TestWebRemoteFrameClient() |
285 : m_frame(WebRemoteFrameImpl::create(WebTreeScopeType::Document, this)) | 300 : m_frame(WebRemoteFrameImpl::create(WebTreeScopeType::Document, this, nullp
tr)) |
286 { | 301 { |
287 } | 302 } |
288 | 303 |
289 void TestWebRemoteFrameClient::frameDetached(DetachType type) | 304 void TestWebRemoteFrameClient::frameDetached(DetachType type) |
290 { | 305 { |
291 if (type == DetachType::Remove && m_frame->parent()) | 306 if (type == DetachType::Remove && m_frame->parent()) |
292 m_frame->parent()->removeChild(m_frame); | 307 m_frame->parent()->removeChild(m_frame); |
293 m_frame->close(); | 308 m_frame->close(); |
294 } | 309 } |
295 | 310 |
296 void TestWebViewClient::initializeLayerTreeView() | 311 void TestWebViewClient::initializeLayerTreeView() |
297 { | 312 { |
298 m_layerTreeView = adoptPtr(Platform::current()->unitTestSupport()->createLay
erTreeViewForTesting()); | 313 m_layerTreeView = adoptPtr(Platform::current()->unitTestSupport()->createLay
erTreeViewForTesting()); |
299 ASSERT(m_layerTreeView); | 314 ASSERT(m_layerTreeView); |
300 } | 315 } |
301 | 316 |
302 } // namespace FrameTestHelpers | 317 } // namespace FrameTestHelpers |
303 } // namespace blink | 318 } // namespace blink |
OLD | NEW |