| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009, 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2009, 2012 Google Inc. All rights reserved. |
| 3 * Copyright (C) 2011 Apple Inc. All rights reserved. | 3 * Copyright (C) 2011 Apple Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
| 7 * met: | 7 * met: |
| 8 * | 8 * |
| 9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 } | 132 } |
| 133 | 133 |
| 134 FrameLoaderClientImpl::~FrameLoaderClientImpl() {} | 134 FrameLoaderClientImpl::~FrameLoaderClientImpl() {} |
| 135 | 135 |
| 136 DEFINE_TRACE(FrameLoaderClientImpl) { | 136 DEFINE_TRACE(FrameLoaderClientImpl) { |
| 137 visitor->trace(m_webFrame); | 137 visitor->trace(m_webFrame); |
| 138 FrameLoaderClient::trace(visitor); | 138 FrameLoaderClient::trace(visitor); |
| 139 } | 139 } |
| 140 | 140 |
| 141 void FrameLoaderClientImpl::didCreateNewDocument() { | 141 void FrameLoaderClientImpl::didCreateNewDocument() { |
| 142 if (m_webFrame->client()) | 142 m_webFrame->client()->didCreateNewDocument(m_webFrame); |
| 143 m_webFrame->client()->didCreateNewDocument(m_webFrame); | |
| 144 } | 143 } |
| 145 | 144 |
| 146 void FrameLoaderClientImpl::dispatchDidClearWindowObjectInMainWorld() { | 145 void FrameLoaderClientImpl::dispatchDidClearWindowObjectInMainWorld() { |
| 147 if (m_webFrame->client()) { | 146 m_webFrame->client()->didClearWindowObject(m_webFrame); |
| 148 m_webFrame->client()->didClearWindowObject(m_webFrame); | 147 Document* document = m_webFrame->frame()->document(); |
| 149 Document* document = m_webFrame->frame()->document(); | 148 if (document) { |
| 150 if (document) { | 149 DeviceMotionController::from(*document); |
| 151 DeviceMotionController::from(*document); | 150 DeviceOrientationController::from(*document); |
| 152 DeviceOrientationController::from(*document); | 151 DeviceOrientationAbsoluteController::from(*document); |
| 153 DeviceOrientationAbsoluteController::from(*document); | 152 if (RuntimeEnabledFeatures::deviceLightEnabled()) |
| 154 if (RuntimeEnabledFeatures::deviceLightEnabled()) | 153 DeviceLightController::from(*document); |
| 155 DeviceLightController::from(*document); | 154 NavigatorGamepad::from(*document); |
| 156 NavigatorGamepad::from(*document); | 155 NavigatorServiceWorker::from(*document); |
| 157 NavigatorServiceWorker::from(*document); | 156 DOMWindowStorageController::from(*document); |
| 158 DOMWindowStorageController::from(*document); | 157 if (RuntimeEnabledFeatures::webVREnabled() || |
| 159 if (RuntimeEnabledFeatures::webVREnabled() || | 158 OriginTrials::webVREnabled(document->getExecutionContext())) |
| 160 OriginTrials::webVREnabled(document->getExecutionContext())) | 159 NavigatorVR::from(*document); |
| 161 NavigatorVR::from(*document); | |
| 162 } | |
| 163 } | 160 } |
| 161 |
| 164 // FIXME: when extensions go out of process, this whole concept stops working. | 162 // FIXME: when extensions go out of process, this whole concept stops working. |
| 165 WebDevToolsFrontendImpl* devToolsFrontend = | 163 WebDevToolsFrontendImpl* devToolsFrontend = |
| 166 m_webFrame->top()->isWebLocalFrame() | 164 m_webFrame->top()->isWebLocalFrame() |
| 167 ? toWebLocalFrameImpl(m_webFrame->top())->devToolsFrontend() | 165 ? toWebLocalFrameImpl(m_webFrame->top())->devToolsFrontend() |
| 168 : nullptr; | 166 : nullptr; |
| 169 if (devToolsFrontend) | 167 if (devToolsFrontend) |
| 170 devToolsFrontend->didClearWindowObject(m_webFrame); | 168 devToolsFrontend->didClearWindowObject(m_webFrame); |
| 171 } | 169 } |
| 172 | 170 |
| 173 void FrameLoaderClientImpl::documentElementAvailable() { | 171 void FrameLoaderClientImpl::documentElementAvailable() { |
| 174 if (m_webFrame->client()) | 172 m_webFrame->client()->didCreateDocumentElement(m_webFrame); |
| 175 m_webFrame->client()->didCreateDocumentElement(m_webFrame); | |
| 176 } | 173 } |
| 177 | 174 |
| 178 void FrameLoaderClientImpl::runScriptsAtDocumentElementAvailable() { | 175 void FrameLoaderClientImpl::runScriptsAtDocumentElementAvailable() { |
| 179 if (m_webFrame->client()) | 176 m_webFrame->client()->runScriptsAtDocumentElementAvailable(m_webFrame); |
| 180 m_webFrame->client()->runScriptsAtDocumentElementAvailable(m_webFrame); | |
| 181 // The callback might have deleted the frame, do not use |this|! | 177 // The callback might have deleted the frame, do not use |this|! |
| 182 } | 178 } |
| 183 | 179 |
| 184 void FrameLoaderClientImpl::runScriptsAtDocumentReady(bool documentIsEmpty) { | 180 void FrameLoaderClientImpl::runScriptsAtDocumentReady(bool documentIsEmpty) { |
| 185 if (m_webFrame->client()) | 181 m_webFrame->client()->runScriptsAtDocumentReady(m_webFrame, documentIsEmpty); |
| 186 m_webFrame->client()->runScriptsAtDocumentReady(m_webFrame, | |
| 187 documentIsEmpty); | |
| 188 // The callback might have deleted the frame, do not use |this|! | 182 // The callback might have deleted the frame, do not use |this|! |
| 189 } | 183 } |
| 190 | 184 |
| 191 void FrameLoaderClientImpl::didCreateScriptContext( | 185 void FrameLoaderClientImpl::didCreateScriptContext( |
| 192 v8::Local<v8::Context> context, | 186 v8::Local<v8::Context> context, |
| 193 int extensionGroup, | 187 int extensionGroup, |
| 194 int worldId) { | 188 int worldId) { |
| 195 if (m_webFrame->client()) | 189 m_webFrame->client()->didCreateScriptContext(m_webFrame, context, |
| 196 m_webFrame->client()->didCreateScriptContext(m_webFrame, context, | 190 extensionGroup, worldId); |
| 197 extensionGroup, worldId); | |
| 198 } | 191 } |
| 199 | 192 |
| 200 void FrameLoaderClientImpl::willReleaseScriptContext( | 193 void FrameLoaderClientImpl::willReleaseScriptContext( |
| 201 v8::Local<v8::Context> context, | 194 v8::Local<v8::Context> context, |
| 202 int worldId) { | 195 int worldId) { |
| 203 if (m_webFrame->client()) | 196 m_webFrame->client()->willReleaseScriptContext(m_webFrame, context, worldId); |
| 204 m_webFrame->client()->willReleaseScriptContext(m_webFrame, context, | |
| 205 worldId); | |
| 206 } | 197 } |
| 207 | 198 |
| 208 bool FrameLoaderClientImpl::allowScriptExtension(const String& extensionName, | 199 bool FrameLoaderClientImpl::allowScriptExtension(const String& extensionName, |
| 209 int extensionGroup, | 200 int extensionGroup, |
| 210 int worldId) { | 201 int worldId) { |
| 211 if (m_webFrame->contentSettingsClient()) | 202 if (m_webFrame->contentSettingsClient()) |
| 212 return m_webFrame->contentSettingsClient()->allowScriptExtension( | 203 return m_webFrame->contentSettingsClient()->allowScriptExtension( |
| 213 extensionName, extensionGroup, worldId); | 204 extensionName, extensionGroup, worldId); |
| 214 | 205 |
| 215 return true; | 206 return true; |
| 216 } | 207 } |
| 217 | 208 |
| 218 void FrameLoaderClientImpl::didChangeScrollOffset() { | 209 void FrameLoaderClientImpl::didChangeScrollOffset() { |
| 219 if (m_webFrame->client()) | 210 m_webFrame->client()->didChangeScrollOffset(m_webFrame); |
| 220 m_webFrame->client()->didChangeScrollOffset(m_webFrame); | |
| 221 } | 211 } |
| 222 | 212 |
| 223 void FrameLoaderClientImpl::didUpdateCurrentHistoryItem() { | 213 void FrameLoaderClientImpl::didUpdateCurrentHistoryItem() { |
| 224 if (m_webFrame->client()) | 214 m_webFrame->client()->didUpdateCurrentHistoryItem(); |
| 225 m_webFrame->client()->didUpdateCurrentHistoryItem(); | |
| 226 } | 215 } |
| 227 | 216 |
| 228 bool FrameLoaderClientImpl::allowScript(bool enabledPerSettings) { | 217 bool FrameLoaderClientImpl::allowScript(bool enabledPerSettings) { |
| 229 if (m_webFrame->contentSettingsClient()) | 218 if (m_webFrame->contentSettingsClient()) |
| 230 return m_webFrame->contentSettingsClient()->allowScript(enabledPerSettings); | 219 return m_webFrame->contentSettingsClient()->allowScript(enabledPerSettings); |
| 231 | 220 |
| 232 return enabledPerSettings; | 221 return enabledPerSettings; |
| 233 } | 222 } |
| 234 | 223 |
| 235 bool FrameLoaderClientImpl::allowScriptFromSource(bool enabledPerSettings, | 224 bool FrameLoaderClientImpl::allowScriptFromSource(bool enabledPerSettings, |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 303 bool FrameLoaderClientImpl::inShadowTree() const { | 292 bool FrameLoaderClientImpl::inShadowTree() const { |
| 304 return m_webFrame->inShadowTree(); | 293 return m_webFrame->inShadowTree(); |
| 305 } | 294 } |
| 306 | 295 |
| 307 Frame* FrameLoaderClientImpl::opener() const { | 296 Frame* FrameLoaderClientImpl::opener() const { |
| 308 return toCoreFrame(m_webFrame->opener()); | 297 return toCoreFrame(m_webFrame->opener()); |
| 309 } | 298 } |
| 310 | 299 |
| 311 void FrameLoaderClientImpl::setOpener(Frame* opener) { | 300 void FrameLoaderClientImpl::setOpener(Frame* opener) { |
| 312 WebFrame* openerFrame = WebFrame::fromFrame(opener); | 301 WebFrame* openerFrame = WebFrame::fromFrame(opener); |
| 313 if (m_webFrame->client() && m_webFrame->opener() != openerFrame) | 302 if (m_webFrame->opener() != openerFrame) |
| 314 m_webFrame->client()->didChangeOpener(openerFrame); | 303 m_webFrame->client()->didChangeOpener(openerFrame); |
| 315 m_webFrame->setOpener(openerFrame); | 304 m_webFrame->setOpener(openerFrame); |
| 316 } | 305 } |
| 317 | 306 |
| 318 Frame* FrameLoaderClientImpl::parent() const { | 307 Frame* FrameLoaderClientImpl::parent() const { |
| 319 return toCoreFrame(m_webFrame->parent()); | 308 return toCoreFrame(m_webFrame->parent()); |
| 320 } | 309 } |
| 321 | 310 |
| 322 Frame* FrameLoaderClientImpl::top() const { | 311 Frame* FrameLoaderClientImpl::top() const { |
| 323 return toCoreFrame(m_webFrame->top()); | 312 return toCoreFrame(m_webFrame->top()); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 340 } | 329 } |
| 341 | 330 |
| 342 void FrameLoaderClientImpl::willBeDetached() { | 331 void FrameLoaderClientImpl::willBeDetached() { |
| 343 m_webFrame->willBeDetached(); | 332 m_webFrame->willBeDetached(); |
| 344 } | 333 } |
| 345 | 334 |
| 346 void FrameLoaderClientImpl::detached(FrameDetachType type) { | 335 void FrameLoaderClientImpl::detached(FrameDetachType type) { |
| 347 // Alert the client that the frame is being detached. This is the last | 336 // Alert the client that the frame is being detached. This is the last |
| 348 // chance we have to communicate with the client. | 337 // chance we have to communicate with the client. |
| 349 WebFrameClient* client = m_webFrame->client(); | 338 WebFrameClient* client = m_webFrame->client(); |
| 350 if (!client) | 339 DCHECK(client); |
| 351 return; | |
| 352 | 340 |
| 353 m_webFrame->willDetachParent(); | 341 m_webFrame->willDetachParent(); |
| 354 | 342 |
| 355 // Signal that no further communication with WebFrameClient should take | 343 // Signal that no further communication with WebFrameClient should take |
| 356 // place at this point since we are no longer associated with the Page. | 344 // place at this point since we are no longer associated with the Page. |
| 357 m_webFrame->setClient(0); | 345 m_webFrame->setClient(0); |
| 358 | 346 |
| 359 client->frameDetached(m_webFrame, | 347 client->frameDetached(m_webFrame, |
| 360 static_cast<WebFrameClient::DetachType>(type)); | 348 static_cast<WebFrameClient::DetachType>(type)); |
| 361 // Clear our reference to LocalFrame at the very end, in case the client | 349 // Clear our reference to LocalFrame at the very end, in case the client |
| 362 // refers to it. | 350 // refers to it. |
| 363 m_webFrame->setCoreFrame(nullptr); | 351 m_webFrame->setCoreFrame(nullptr); |
| 364 } | 352 } |
| 365 | 353 |
| 366 void FrameLoaderClientImpl::dispatchWillSendRequest(ResourceRequest& request) { | 354 void FrameLoaderClientImpl::dispatchWillSendRequest(ResourceRequest& request) { |
| 367 // Give the WebFrameClient a crack at the request. | 355 WrappedResourceRequest webreq(request); |
| 368 if (m_webFrame->client()) { | 356 m_webFrame->client()->willSendRequest(m_webFrame, webreq); |
| 369 WrappedResourceRequest webreq(request); | |
| 370 m_webFrame->client()->willSendRequest(m_webFrame, webreq); | |
| 371 } | |
| 372 } | 357 } |
| 373 | 358 |
| 374 void FrameLoaderClientImpl::dispatchDidReceiveResponse( | 359 void FrameLoaderClientImpl::dispatchDidReceiveResponse( |
| 375 const ResourceResponse& response) { | 360 const ResourceResponse& response) { |
| 376 if (m_webFrame->client()) { | 361 WrappedResourceResponse webresp(response); |
| 377 WrappedResourceResponse webresp(response); | 362 m_webFrame->client()->didReceiveResponse(webresp); |
| 378 m_webFrame->client()->didReceiveResponse(webresp); | |
| 379 } | |
| 380 } | 363 } |
| 381 | 364 |
| 382 void FrameLoaderClientImpl::dispatchDidFinishDocumentLoad() { | 365 void FrameLoaderClientImpl::dispatchDidFinishDocumentLoad() { |
| 383 // TODO(dglazkov): Sadly, workers are WebFrameClients, and they can totally | 366 // TODO(dglazkov): Sadly, workers are WebFrameClients, and they can totally |
| 384 // destroy themselves when didFinishDocumentLoad is invoked, and in turn | 367 // destroy themselves when didFinishDocumentLoad is invoked, and in turn |
| 385 // destroy the fake WebLocalFrame that they create, which means that you | 368 // destroy the fake WebLocalFrame that they create, which means that you |
| 386 // should not put any code touching `this` after the two lines below. | 369 // should not put any code touching `this` after the two lines below. |
| 387 if (m_webFrame->client()) | 370 m_webFrame->client()->didFinishDocumentLoad(m_webFrame); |
| 388 m_webFrame->client()->didFinishDocumentLoad(m_webFrame); | |
| 389 } | 371 } |
| 390 | 372 |
| 391 void FrameLoaderClientImpl::dispatchDidLoadResourceFromMemoryCache( | 373 void FrameLoaderClientImpl::dispatchDidLoadResourceFromMemoryCache( |
| 392 const ResourceRequest& request, | 374 const ResourceRequest& request, |
| 393 const ResourceResponse& response) { | 375 const ResourceResponse& response) { |
| 394 if (m_webFrame->client()) | 376 m_webFrame->client()->didLoadResourceFromMemoryCache( |
| 395 m_webFrame->client()->didLoadResourceFromMemoryCache( | 377 WrappedResourceRequest(request), WrappedResourceResponse(response)); |
| 396 WrappedResourceRequest(request), WrappedResourceResponse(response)); | |
| 397 } | 378 } |
| 398 | 379 |
| 399 void FrameLoaderClientImpl::dispatchDidHandleOnloadEvents() { | 380 void FrameLoaderClientImpl::dispatchDidHandleOnloadEvents() { |
| 400 if (m_webFrame->client()) | 381 m_webFrame->client()->didHandleOnloadEvents(m_webFrame); |
| 401 m_webFrame->client()->didHandleOnloadEvents(m_webFrame); | |
| 402 } | 382 } |
| 403 | 383 |
| 404 void FrameLoaderClientImpl:: | 384 void FrameLoaderClientImpl:: |
| 405 dispatchDidReceiveServerRedirectForProvisionalLoad() { | 385 dispatchDidReceiveServerRedirectForProvisionalLoad() { |
| 406 if (m_webFrame->client()) | 386 m_webFrame->client()->didReceiveServerRedirectForProvisionalLoad(m_webFrame); |
| 407 m_webFrame->client()->didReceiveServerRedirectForProvisionalLoad( | |
| 408 m_webFrame); | |
| 409 } | 387 } |
| 410 | 388 |
| 411 void FrameLoaderClientImpl::dispatchDidNavigateWithinPage( | 389 void FrameLoaderClientImpl::dispatchDidNavigateWithinPage( |
| 412 HistoryItem* item, | 390 HistoryItem* item, |
| 413 HistoryCommitType commitType, | 391 HistoryCommitType commitType, |
| 414 bool contentInitiated) { | 392 bool contentInitiated) { |
| 415 bool shouldCreateHistoryEntry = commitType == StandardCommit; | 393 bool shouldCreateHistoryEntry = commitType == StandardCommit; |
| 416 // TODO(dglazkov): Does this need to be called for subframes? | 394 // TODO(dglazkov): Does this need to be called for subframes? |
| 417 m_webFrame->viewImpl()->didCommitLoad(shouldCreateHistoryEntry, true); | 395 m_webFrame->viewImpl()->didCommitLoad(shouldCreateHistoryEntry, true); |
| 418 if (m_webFrame->client()) | 396 m_webFrame->client()->didNavigateWithinPage( |
| 419 m_webFrame->client()->didNavigateWithinPage( | 397 m_webFrame, WebHistoryItem(item), |
| 420 m_webFrame, WebHistoryItem(item), | 398 static_cast<WebHistoryCommitType>(commitType), contentInitiated); |
| 421 static_cast<WebHistoryCommitType>(commitType), contentInitiated); | |
| 422 } | 399 } |
| 423 | 400 |
| 424 void FrameLoaderClientImpl::dispatchWillCommitProvisionalLoad() { | 401 void FrameLoaderClientImpl::dispatchWillCommitProvisionalLoad() { |
| 425 if (m_webFrame->client()) | 402 m_webFrame->client()->willCommitProvisionalLoad(m_webFrame); |
| 426 m_webFrame->client()->willCommitProvisionalLoad(m_webFrame); | |
| 427 } | 403 } |
| 428 | 404 |
| 429 void FrameLoaderClientImpl::dispatchDidStartProvisionalLoad( | 405 void FrameLoaderClientImpl::dispatchDidStartProvisionalLoad( |
| 430 double triggeringEventTime) { | 406 double triggeringEventTime) { |
| 431 if (m_webFrame->client()) | 407 m_webFrame->client()->didStartProvisionalLoad(m_webFrame, |
| 432 m_webFrame->client()->didStartProvisionalLoad(m_webFrame, | 408 triggeringEventTime); |
| 433 triggeringEventTime); | |
| 434 if (WebDevToolsAgentImpl* devTools = devToolsAgent()) | 409 if (WebDevToolsAgentImpl* devTools = devToolsAgent()) |
| 435 devTools->didStartProvisionalLoad(m_webFrame->frame()); | 410 devTools->didStartProvisionalLoad(m_webFrame->frame()); |
| 436 } | 411 } |
| 437 | 412 |
| 438 void FrameLoaderClientImpl::dispatchDidReceiveTitle(const String& title) { | 413 void FrameLoaderClientImpl::dispatchDidReceiveTitle(const String& title) { |
| 439 if (m_webFrame->client()) | 414 m_webFrame->client()->didReceiveTitle(m_webFrame, title, |
| 440 m_webFrame->client()->didReceiveTitle(m_webFrame, title, | 415 WebTextDirectionLeftToRight); |
| 441 WebTextDirectionLeftToRight); | |
| 442 } | 416 } |
| 443 | 417 |
| 444 void FrameLoaderClientImpl::dispatchDidChangeIcons(IconType type) { | 418 void FrameLoaderClientImpl::dispatchDidChangeIcons(IconType type) { |
| 445 if (m_webFrame->client()) | 419 m_webFrame->client()->didChangeIcon(m_webFrame, |
| 446 m_webFrame->client()->didChangeIcon(m_webFrame, | 420 static_cast<WebIconURL::Type>(type)); |
| 447 static_cast<WebIconURL::Type>(type)); | |
| 448 } | 421 } |
| 449 | 422 |
| 450 void FrameLoaderClientImpl::dispatchDidCommitLoad( | 423 void FrameLoaderClientImpl::dispatchDidCommitLoad( |
| 451 HistoryItem* item, | 424 HistoryItem* item, |
| 452 HistoryCommitType commitType) { | 425 HistoryCommitType commitType) { |
| 453 if (!m_webFrame->parent()) { | 426 if (!m_webFrame->parent()) { |
| 454 m_webFrame->viewImpl()->didCommitLoad(commitType == StandardCommit, false); | 427 m_webFrame->viewImpl()->didCommitLoad(commitType == StandardCommit, false); |
| 455 } | 428 } |
| 456 | 429 |
| 457 // Save some histogram data so we can compute the average memory used per | 430 // Save some histogram data so we can compute the average memory used per |
| 458 // page load of the glyphs. | 431 // page load of the glyphs. |
| 459 // TODO(esprehn): Is this ancient uma actually useful? | 432 // TODO(esprehn): Is this ancient uma actually useful? |
| 460 DEFINE_STATIC_LOCAL(CustomCountHistogram, gyphsPagesPerLoadHistogram, | 433 DEFINE_STATIC_LOCAL(CustomCountHistogram, gyphsPagesPerLoadHistogram, |
| 461 ("Memory.GlyphPagesPerLoad", 1, 10000, 50)); | 434 ("Memory.GlyphPagesPerLoad", 1, 10000, 50)); |
| 462 gyphsPagesPerLoadHistogram.count(GlyphPageTreeNode::treeGlyphPageCount()); | 435 gyphsPagesPerLoadHistogram.count(GlyphPageTreeNode::treeGlyphPageCount()); |
| 463 | 436 |
| 464 if (m_webFrame->client()) | 437 m_webFrame->client()->didCommitProvisionalLoad( |
| 465 m_webFrame->client()->didCommitProvisionalLoad( | 438 m_webFrame, WebHistoryItem(item), |
| 466 m_webFrame, WebHistoryItem(item), | 439 static_cast<WebHistoryCommitType>(commitType)); |
| 467 static_cast<WebHistoryCommitType>(commitType)); | |
| 468 if (WebDevToolsAgentImpl* devTools = devToolsAgent()) | 440 if (WebDevToolsAgentImpl* devTools = devToolsAgent()) |
| 469 devTools->didCommitLoadForLocalFrame(m_webFrame->frame()); | 441 devTools->didCommitLoadForLocalFrame(m_webFrame->frame()); |
| 470 } | 442 } |
| 471 | 443 |
| 472 void FrameLoaderClientImpl::dispatchDidFailProvisionalLoad( | 444 void FrameLoaderClientImpl::dispatchDidFailProvisionalLoad( |
| 473 const ResourceError& error, | 445 const ResourceError& error, |
| 474 HistoryCommitType commitType) { | 446 HistoryCommitType commitType) { |
| 475 m_webFrame->didFail(error, true, commitType); | 447 m_webFrame->didFail(error, true, commitType); |
| 476 } | 448 } |
| 477 | 449 |
| 478 void FrameLoaderClientImpl::dispatchDidFailLoad(const ResourceError& error, | 450 void FrameLoaderClientImpl::dispatchDidFailLoad(const ResourceError& error, |
| 479 HistoryCommitType commitType) { | 451 HistoryCommitType commitType) { |
| 480 m_webFrame->didFail(error, false, commitType); | 452 m_webFrame->didFail(error, false, commitType); |
| 481 } | 453 } |
| 482 | 454 |
| 483 void FrameLoaderClientImpl::dispatchDidFinishLoad() { | 455 void FrameLoaderClientImpl::dispatchDidFinishLoad() { |
| 484 m_webFrame->didFinish(); | 456 m_webFrame->didFinish(); |
| 485 } | 457 } |
| 486 | 458 |
| 487 void FrameLoaderClientImpl::dispatchDidChangeThemeColor() { | 459 void FrameLoaderClientImpl::dispatchDidChangeThemeColor() { |
| 488 if (m_webFrame->client()) | 460 m_webFrame->client()->didChangeThemeColor(); |
| 489 m_webFrame->client()->didChangeThemeColor(); | |
| 490 } | 461 } |
| 491 | 462 |
| 492 static bool allowCreatingBackgroundTabs() { | 463 static bool allowCreatingBackgroundTabs() { |
| 493 const WebInputEvent* inputEvent = WebViewImpl::currentInputEvent(); | 464 const WebInputEvent* inputEvent = WebViewImpl::currentInputEvent(); |
| 494 if (!inputEvent || (inputEvent->type != WebInputEvent::MouseUp && | 465 if (!inputEvent || (inputEvent->type != WebInputEvent::MouseUp && |
| 495 (inputEvent->type != WebInputEvent::RawKeyDown && | 466 (inputEvent->type != WebInputEvent::RawKeyDown && |
| 496 inputEvent->type != WebInputEvent::KeyDown) && | 467 inputEvent->type != WebInputEvent::KeyDown) && |
| 497 inputEvent->type != WebInputEvent::GestureTap)) | 468 inputEvent->type != WebInputEvent::GestureTap)) |
| 498 return false; | 469 return false; |
| 499 | 470 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 531 return userPolicy == NavigationPolicyNewBackgroundTab; | 502 return userPolicy == NavigationPolicyNewBackgroundTab; |
| 532 } | 503 } |
| 533 | 504 |
| 534 NavigationPolicy FrameLoaderClientImpl::decidePolicyForNavigation( | 505 NavigationPolicy FrameLoaderClientImpl::decidePolicyForNavigation( |
| 535 const ResourceRequest& request, | 506 const ResourceRequest& request, |
| 536 DocumentLoader* loader, | 507 DocumentLoader* loader, |
| 537 NavigationType type, | 508 NavigationType type, |
| 538 NavigationPolicy policy, | 509 NavigationPolicy policy, |
| 539 bool replacesCurrentHistoryItem, | 510 bool replacesCurrentHistoryItem, |
| 540 bool isClientRedirect) { | 511 bool isClientRedirect) { |
| 541 if (!m_webFrame->client()) | |
| 542 return NavigationPolicyIgnore; | |
| 543 | |
| 544 if (policy == NavigationPolicyNewBackgroundTab && | 512 if (policy == NavigationPolicyNewBackgroundTab && |
| 545 !allowCreatingBackgroundTabs() && | 513 !allowCreatingBackgroundTabs() && |
| 546 !UIEventWithKeyState::newTabModifierSetFromIsolatedWorld()) | 514 !UIEventWithKeyState::newTabModifierSetFromIsolatedWorld()) |
| 547 policy = NavigationPolicyNewForegroundTab; | 515 policy = NavigationPolicyNewForegroundTab; |
| 548 | 516 |
| 549 WebDataSourceImpl* ds = WebDataSourceImpl::fromDocumentLoader(loader); | 517 WebDataSourceImpl* ds = WebDataSourceImpl::fromDocumentLoader(loader); |
| 550 | 518 |
| 551 // Newly created child frames may need to be navigated to a history item | 519 // Newly created child frames may need to be navigated to a history item |
| 552 // during a back/forward navigation. This will only happen when the parent | 520 // during a back/forward navigation. This will only happen when the parent |
| 553 // is a LocalFrame doing a back/forward navigation that has not completed. | 521 // is a LocalFrame doing a back/forward navigation that has not completed. |
| (...skipping 19 matching lines...) Expand all Loading... |
| 573 navigationInfo.isHistoryNavigationInNewChildFrame = | 541 navigationInfo.isHistoryNavigationInNewChildFrame = |
| 574 isHistoryNavigationInNewChildFrame; | 542 isHistoryNavigationInNewChildFrame; |
| 575 navigationInfo.isClientRedirect = isClientRedirect; | 543 navigationInfo.isClientRedirect = isClientRedirect; |
| 576 | 544 |
| 577 WebNavigationPolicy webPolicy = | 545 WebNavigationPolicy webPolicy = |
| 578 m_webFrame->client()->decidePolicyForNavigation(navigationInfo); | 546 m_webFrame->client()->decidePolicyForNavigation(navigationInfo); |
| 579 return static_cast<NavigationPolicy>(webPolicy); | 547 return static_cast<NavigationPolicy>(webPolicy); |
| 580 } | 548 } |
| 581 | 549 |
| 582 void FrameLoaderClientImpl::dispatchWillSendSubmitEvent(HTMLFormElement* form) { | 550 void FrameLoaderClientImpl::dispatchWillSendSubmitEvent(HTMLFormElement* form) { |
| 583 if (m_webFrame->client()) | 551 m_webFrame->client()->willSendSubmitEvent(WebFormElement(form)); |
| 584 m_webFrame->client()->willSendSubmitEvent(WebFormElement(form)); | |
| 585 } | 552 } |
| 586 | 553 |
| 587 void FrameLoaderClientImpl::dispatchWillSubmitForm(HTMLFormElement* form) { | 554 void FrameLoaderClientImpl::dispatchWillSubmitForm(HTMLFormElement* form) { |
| 588 if (m_webFrame->client()) | 555 m_webFrame->client()->willSubmitForm(WebFormElement(form)); |
| 589 m_webFrame->client()->willSubmitForm(WebFormElement(form)); | |
| 590 } | 556 } |
| 591 | 557 |
| 592 void FrameLoaderClientImpl::didStartLoading(LoadStartType loadStartType) { | 558 void FrameLoaderClientImpl::didStartLoading(LoadStartType loadStartType) { |
| 593 if (m_webFrame->client()) | 559 m_webFrame->client()->didStartLoading(loadStartType == |
| 594 m_webFrame->client()->didStartLoading(loadStartType == | 560 NavigationToDifferentDocument); |
| 595 NavigationToDifferentDocument); | |
| 596 } | 561 } |
| 597 | 562 |
| 598 void FrameLoaderClientImpl::progressEstimateChanged(double progressEstimate) { | 563 void FrameLoaderClientImpl::progressEstimateChanged(double progressEstimate) { |
| 599 if (m_webFrame->client()) | 564 m_webFrame->client()->didChangeLoadProgress(progressEstimate); |
| 600 m_webFrame->client()->didChangeLoadProgress(progressEstimate); | |
| 601 } | 565 } |
| 602 | 566 |
| 603 void FrameLoaderClientImpl::didStopLoading() { | 567 void FrameLoaderClientImpl::didStopLoading() { |
| 604 if (m_webFrame->client()) | 568 m_webFrame->client()->didStopLoading(); |
| 605 m_webFrame->client()->didStopLoading(); | |
| 606 } | 569 } |
| 607 | 570 |
| 608 void FrameLoaderClientImpl::loadURLExternally(const ResourceRequest& request, | 571 void FrameLoaderClientImpl::loadURLExternally(const ResourceRequest& request, |
| 609 NavigationPolicy policy, | 572 NavigationPolicy policy, |
| 610 const String& suggestedName, | 573 const String& suggestedName, |
| 611 bool shouldReplaceCurrentEntry) { | 574 bool shouldReplaceCurrentEntry) { |
| 612 if (!m_webFrame->client()) | |
| 613 return; | |
| 614 DCHECK(m_webFrame->frame()->document()); | 575 DCHECK(m_webFrame->frame()->document()); |
| 615 Fullscreen::fullyExitFullscreen(*m_webFrame->frame()->document()); | 576 Fullscreen::fullyExitFullscreen(*m_webFrame->frame()->document()); |
| 616 m_webFrame->client()->loadURLExternally( | 577 m_webFrame->client()->loadURLExternally( |
| 617 WrappedResourceRequest(request), static_cast<WebNavigationPolicy>(policy), | 578 WrappedResourceRequest(request), static_cast<WebNavigationPolicy>(policy), |
| 618 suggestedName, shouldReplaceCurrentEntry); | 579 suggestedName, shouldReplaceCurrentEntry); |
| 619 } | 580 } |
| 620 | 581 |
| 621 bool FrameLoaderClientImpl::navigateBackForward(int offset) const { | 582 bool FrameLoaderClientImpl::navigateBackForward(int offset) const { |
| 622 WebViewImpl* webview = m_webFrame->viewImpl(); | 583 WebViewImpl* webview = m_webFrame->viewImpl(); |
| 623 if (!webview->client()) | |
| 624 return false; | |
| 625 | 584 |
| 626 DCHECK(offset); | 585 DCHECK(offset); |
| 627 if (offset > webview->client()->historyForwardListCount()) | 586 if (offset > webview->client()->historyForwardListCount()) |
| 628 return false; | 587 return false; |
| 629 if (offset < -webview->client()->historyBackListCount()) | 588 if (offset < -webview->client()->historyBackListCount()) |
| 630 return false; | 589 return false; |
| 631 webview->client()->navigateBackForwardSoon(offset); | 590 webview->client()->navigateBackForwardSoon(offset); |
| 632 return true; | 591 return true; |
| 633 } | 592 } |
| 634 | 593 |
| 635 void FrameLoaderClientImpl::didAccessInitialDocument() { | 594 void FrameLoaderClientImpl::didAccessInitialDocument() { |
| 636 if (m_webFrame->client()) | 595 m_webFrame->client()->didAccessInitialDocument(); |
| 637 m_webFrame->client()->didAccessInitialDocument(); | |
| 638 } | 596 } |
| 639 | 597 |
| 640 void FrameLoaderClientImpl::didDisplayInsecureContent() { | 598 void FrameLoaderClientImpl::didDisplayInsecureContent() { |
| 641 if (m_webFrame->client()) | 599 m_webFrame->client()->didDisplayInsecureContent(); |
| 642 m_webFrame->client()->didDisplayInsecureContent(); | |
| 643 } | 600 } |
| 644 | 601 |
| 645 void FrameLoaderClientImpl::didRunInsecureContent(SecurityOrigin* origin, | 602 void FrameLoaderClientImpl::didRunInsecureContent(SecurityOrigin* origin, |
| 646 const KURL& insecureURL) { | 603 const KURL& insecureURL) { |
| 647 if (m_webFrame->client()) | 604 m_webFrame->client()->didRunInsecureContent(WebSecurityOrigin(origin), |
| 648 m_webFrame->client()->didRunInsecureContent(WebSecurityOrigin(origin), | 605 insecureURL); |
| 649 insecureURL); | |
| 650 } | 606 } |
| 651 | 607 |
| 652 void FrameLoaderClientImpl::didDetectXSS(const KURL& insecureURL, | 608 void FrameLoaderClientImpl::didDetectXSS(const KURL& insecureURL, |
| 653 bool didBlockEntirePage) { | 609 bool didBlockEntirePage) { |
| 654 if (m_webFrame->client()) | 610 m_webFrame->client()->didDetectXSS(insecureURL, didBlockEntirePage); |
| 655 m_webFrame->client()->didDetectXSS(insecureURL, didBlockEntirePage); | |
| 656 } | 611 } |
| 657 | 612 |
| 658 void FrameLoaderClientImpl::didDispatchPingLoader(const KURL& url) { | 613 void FrameLoaderClientImpl::didDispatchPingLoader(const KURL& url) { |
| 659 if (m_webFrame->client()) | 614 m_webFrame->client()->didDispatchPingLoader(url); |
| 660 m_webFrame->client()->didDispatchPingLoader(url); | |
| 661 } | 615 } |
| 662 | 616 |
| 663 void FrameLoaderClientImpl::didDisplayContentWithCertificateErrors( | 617 void FrameLoaderClientImpl::didDisplayContentWithCertificateErrors( |
| 664 const KURL& url) { | 618 const KURL& url) { |
| 665 if (m_webFrame->client()) | 619 m_webFrame->client()->didDisplayContentWithCertificateErrors(url); |
| 666 m_webFrame->client()->didDisplayContentWithCertificateErrors(url); | |
| 667 } | 620 } |
| 668 | 621 |
| 669 void FrameLoaderClientImpl::didRunContentWithCertificateErrors( | 622 void FrameLoaderClientImpl::didRunContentWithCertificateErrors( |
| 670 const KURL& url) { | 623 const KURL& url) { |
| 671 if (m_webFrame->client()) | 624 m_webFrame->client()->didRunContentWithCertificateErrors(url); |
| 672 m_webFrame->client()->didRunContentWithCertificateErrors(url); | |
| 673 } | 625 } |
| 674 | 626 |
| 675 void FrameLoaderClientImpl::didChangePerformanceTiming() { | 627 void FrameLoaderClientImpl::didChangePerformanceTiming() { |
| 676 if (m_webFrame->client()) | 628 m_webFrame->client()->didChangePerformanceTiming(); |
| 677 m_webFrame->client()->didChangePerformanceTiming(); | |
| 678 } | 629 } |
| 679 | 630 |
| 680 void FrameLoaderClientImpl::didObserveLoadingBehavior( | 631 void FrameLoaderClientImpl::didObserveLoadingBehavior( |
| 681 WebLoadingBehaviorFlag behavior) { | 632 WebLoadingBehaviorFlag behavior) { |
| 682 if (m_webFrame->client()) | 633 m_webFrame->client()->didObserveLoadingBehavior(behavior); |
| 683 m_webFrame->client()->didObserveLoadingBehavior(behavior); | |
| 684 } | 634 } |
| 685 | 635 |
| 686 void FrameLoaderClientImpl::selectorMatchChanged( | 636 void FrameLoaderClientImpl::selectorMatchChanged( |
| 687 const Vector<String>& addedSelectors, | 637 const Vector<String>& addedSelectors, |
| 688 const Vector<String>& removedSelectors) { | 638 const Vector<String>& removedSelectors) { |
| 689 if (WebFrameClient* client = m_webFrame->client()) | 639 m_webFrame->client()->didMatchCSS(m_webFrame, |
| 690 client->didMatchCSS(m_webFrame, WebVector<WebString>(addedSelectors), | 640 WebVector<WebString>(addedSelectors), |
| 691 WebVector<WebString>(removedSelectors)); | 641 WebVector<WebString>(removedSelectors)); |
| 692 } | 642 } |
| 693 | 643 |
| 694 DocumentLoader* FrameLoaderClientImpl::createDocumentLoader( | 644 DocumentLoader* FrameLoaderClientImpl::createDocumentLoader( |
| 695 LocalFrame* frame, | 645 LocalFrame* frame, |
| 696 const ResourceRequest& request, | 646 const ResourceRequest& request, |
| 697 const SubstituteData& data) { | 647 const SubstituteData& data) { |
| 698 WebDataSourceImpl* ds = WebDataSourceImpl::create(frame, request, data); | 648 WebDataSourceImpl* ds = WebDataSourceImpl::create(frame, request, data); |
| 699 if (m_webFrame->client()) | 649 m_webFrame->client()->didCreateDataSource(m_webFrame, ds); |
| 700 m_webFrame->client()->didCreateDataSource(m_webFrame, ds); | |
| 701 return ds; | 650 return ds; |
| 702 } | 651 } |
| 703 | 652 |
| 704 String FrameLoaderClientImpl::userAgent() { | 653 String FrameLoaderClientImpl::userAgent() { |
| 705 WebString override = | 654 WebString override = m_webFrame->client()->userAgentOverride(); |
| 706 m_webFrame->client() ? m_webFrame->client()->userAgentOverride() : ""; | |
| 707 if (!override.isEmpty()) | 655 if (!override.isEmpty()) |
| 708 return override; | 656 return override; |
| 709 | 657 |
| 710 if (m_userAgent.isEmpty()) | 658 if (m_userAgent.isEmpty()) |
| 711 m_userAgent = Platform::current()->userAgent(); | 659 m_userAgent = Platform::current()->userAgent(); |
| 712 return m_userAgent; | 660 return m_userAgent; |
| 713 } | 661 } |
| 714 | 662 |
| 715 String FrameLoaderClientImpl::doNotTrackValue() { | 663 String FrameLoaderClientImpl::doNotTrackValue() { |
| 716 WebString doNotTrack = m_webFrame->client()->doNotTrackValue(); | 664 WebString doNotTrack = m_webFrame->client()->doNotTrackValue(); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 727 | 675 |
| 728 LocalFrame* FrameLoaderClientImpl::createFrame( | 676 LocalFrame* FrameLoaderClientImpl::createFrame( |
| 729 const FrameLoadRequest& request, | 677 const FrameLoadRequest& request, |
| 730 const AtomicString& name, | 678 const AtomicString& name, |
| 731 HTMLFrameOwnerElement* ownerElement) { | 679 HTMLFrameOwnerElement* ownerElement) { |
| 732 return m_webFrame->createChildFrame(request, name, ownerElement); | 680 return m_webFrame->createChildFrame(request, name, ownerElement); |
| 733 } | 681 } |
| 734 | 682 |
| 735 bool FrameLoaderClientImpl::canCreatePluginWithoutRenderer( | 683 bool FrameLoaderClientImpl::canCreatePluginWithoutRenderer( |
| 736 const String& mimeType) const { | 684 const String& mimeType) const { |
| 737 if (!m_webFrame->client()) | |
| 738 return false; | |
| 739 | |
| 740 return m_webFrame->client()->canCreatePluginWithoutRenderer(mimeType); | 685 return m_webFrame->client()->canCreatePluginWithoutRenderer(mimeType); |
| 741 } | 686 } |
| 742 | 687 |
| 743 Widget* FrameLoaderClientImpl::createPlugin(HTMLPlugInElement* element, | 688 Widget* FrameLoaderClientImpl::createPlugin(HTMLPlugInElement* element, |
| 744 const KURL& url, | 689 const KURL& url, |
| 745 const Vector<String>& paramNames, | 690 const Vector<String>& paramNames, |
| 746 const Vector<String>& paramValues, | 691 const Vector<String>& paramValues, |
| 747 const String& mimeType, | 692 const String& mimeType, |
| 748 bool loadManually, | 693 bool loadManually, |
| 749 DetachedPluginPolicy policy) { | 694 DetachedPluginPolicy policy) { |
| 750 if (!m_webFrame->client()) | |
| 751 return nullptr; | |
| 752 | |
| 753 WebPluginParams params; | 695 WebPluginParams params; |
| 754 params.url = url; | 696 params.url = url; |
| 755 params.mimeType = mimeType; | 697 params.mimeType = mimeType; |
| 756 params.attributeNames = paramNames; | 698 params.attributeNames = paramNames; |
| 757 params.attributeValues = paramValues; | 699 params.attributeValues = paramValues; |
| 758 params.loadManually = loadManually; | 700 params.loadManually = loadManually; |
| 759 | 701 |
| 760 WebPlugin* webPlugin = m_webFrame->client()->createPlugin(m_webFrame, params); | 702 WebPlugin* webPlugin = m_webFrame->client()->createPlugin(m_webFrame, params); |
| 761 if (!webPlugin) | 703 if (!webPlugin) |
| 762 return nullptr; | 704 return nullptr; |
| 763 | 705 |
| 764 // The container takes ownership of the WebPlugin. | 706 // The container takes ownership of the WebPlugin. |
| 765 WebPluginContainerImpl* container = | 707 WebPluginContainerImpl* container = |
| 766 WebPluginContainerImpl::create(element, webPlugin); | 708 WebPluginContainerImpl::create(element, webPlugin); |
| 767 | 709 |
| 768 if (!webPlugin->initialize(container)) | 710 if (!webPlugin->initialize(container)) |
| 769 return nullptr; | 711 return nullptr; |
| 770 | 712 |
| 771 if (policy != AllowDetachedPlugin && !element->layoutObject()) | 713 if (policy != AllowDetachedPlugin && !element->layoutObject()) |
| 772 return nullptr; | 714 return nullptr; |
| 773 | 715 |
| 774 return container; | 716 return container; |
| 775 } | 717 } |
| 776 | 718 |
| 777 std::unique_ptr<WebMediaPlayer> FrameLoaderClientImpl::createWebMediaPlayer( | 719 std::unique_ptr<WebMediaPlayer> FrameLoaderClientImpl::createWebMediaPlayer( |
| 778 HTMLMediaElement& htmlMediaElement, | 720 HTMLMediaElement& htmlMediaElement, |
| 779 const WebMediaPlayerSource& source, | 721 const WebMediaPlayerSource& source, |
| 780 WebMediaPlayerClient* client) { | 722 WebMediaPlayerClient* client) { |
| 781 WebLocalFrameImpl* webFrame = | |
| 782 WebLocalFrameImpl::fromFrame(htmlMediaElement.document().frame()); | |
| 783 | |
| 784 if (!webFrame || !webFrame->client()) | |
| 785 return nullptr; | |
| 786 | |
| 787 HTMLMediaElementEncryptedMedia& encryptedMedia = | 723 HTMLMediaElementEncryptedMedia& encryptedMedia = |
| 788 HTMLMediaElementEncryptedMedia::from(htmlMediaElement); | 724 HTMLMediaElementEncryptedMedia::from(htmlMediaElement); |
| 789 WebString sinkId(HTMLMediaElementAudioOutputDevice::sinkId(htmlMediaElement)); | 725 WebString sinkId(HTMLMediaElementAudioOutputDevice::sinkId(htmlMediaElement)); |
| 790 return wrapUnique(webFrame->client()->createMediaPlayer( | 726 return wrapUnique(m_webFrame->client()->createMediaPlayer( |
| 791 source, client, &encryptedMedia, encryptedMedia.contentDecryptionModule(), | 727 source, client, &encryptedMedia, encryptedMedia.contentDecryptionModule(), |
| 792 sinkId)); | 728 sinkId)); |
| 793 } | 729 } |
| 794 | 730 |
| 795 ObjectContentType FrameLoaderClientImpl::getObjectContentType( | 731 ObjectContentType FrameLoaderClientImpl::getObjectContentType( |
| 796 const KURL& url, | 732 const KURL& url, |
| 797 const String& explicitMimeType, | 733 const String& explicitMimeType, |
| 798 bool shouldPreferPlugInsForImages) { | 734 bool shouldPreferPlugInsForImages) { |
| 799 // This code is based on Apple's implementation from | 735 // This code is based on Apple's implementation from |
| 800 // WebCoreSupport/WebFrameBridge.mm. | 736 // WebCoreSupport/WebFrameBridge.mm. |
| (...skipping 25 matching lines...) Expand all Loading... |
| 826 if (plugInSupportsMIMEType) | 762 if (plugInSupportsMIMEType) |
| 827 return ObjectContentNetscapePlugin; | 763 return ObjectContentNetscapePlugin; |
| 828 | 764 |
| 829 if (MIMETypeRegistry::isSupportedNonImageMIMEType(mimeType)) | 765 if (MIMETypeRegistry::isSupportedNonImageMIMEType(mimeType)) |
| 830 return ObjectContentFrame; | 766 return ObjectContentFrame; |
| 831 | 767 |
| 832 return ObjectContentNone; | 768 return ObjectContentNone; |
| 833 } | 769 } |
| 834 | 770 |
| 835 WebCookieJar* FrameLoaderClientImpl::cookieJar() const { | 771 WebCookieJar* FrameLoaderClientImpl::cookieJar() const { |
| 836 if (!m_webFrame->client()) | |
| 837 return 0; | |
| 838 return m_webFrame->client()->cookieJar(); | 772 return m_webFrame->client()->cookieJar(); |
| 839 } | 773 } |
| 840 | 774 |
| 841 void FrameLoaderClientImpl::frameFocused() const { | 775 void FrameLoaderClientImpl::frameFocused() const { |
| 842 if (m_webFrame->client()) | 776 m_webFrame->client()->frameFocused(); |
| 843 m_webFrame->client()->frameFocused(); | |
| 844 } | 777 } |
| 845 | 778 |
| 846 void FrameLoaderClientImpl::didChangeName(const String& name, | 779 void FrameLoaderClientImpl::didChangeName(const String& name, |
| 847 const String& uniqueName) { | 780 const String& uniqueName) { |
| 848 if (!m_webFrame->client()) | |
| 849 return; | |
| 850 m_webFrame->client()->didChangeName(name, uniqueName); | 781 m_webFrame->client()->didChangeName(name, uniqueName); |
| 851 } | 782 } |
| 852 | 783 |
| 853 void FrameLoaderClientImpl::didEnforceInsecureRequestPolicy( | 784 void FrameLoaderClientImpl::didEnforceInsecureRequestPolicy( |
| 854 WebInsecureRequestPolicy policy) { | 785 WebInsecureRequestPolicy policy) { |
| 855 if (!m_webFrame->client()) | |
| 856 return; | |
| 857 m_webFrame->client()->didEnforceInsecureRequestPolicy(policy); | 786 m_webFrame->client()->didEnforceInsecureRequestPolicy(policy); |
| 858 } | 787 } |
| 859 | 788 |
| 860 void FrameLoaderClientImpl::didUpdateToUniqueOrigin() { | 789 void FrameLoaderClientImpl::didUpdateToUniqueOrigin() { |
| 861 if (!m_webFrame->client()) | |
| 862 return; | |
| 863 DCHECK(m_webFrame->getSecurityOrigin().isUnique()); | 790 DCHECK(m_webFrame->getSecurityOrigin().isUnique()); |
| 864 m_webFrame->client()->didUpdateToUniqueOrigin( | 791 m_webFrame->client()->didUpdateToUniqueOrigin( |
| 865 m_webFrame->getSecurityOrigin().isPotentiallyTrustworthy()); | 792 m_webFrame->getSecurityOrigin().isPotentiallyTrustworthy()); |
| 866 } | 793 } |
| 867 | 794 |
| 868 void FrameLoaderClientImpl::didChangeSandboxFlags(Frame* childFrame, | 795 void FrameLoaderClientImpl::didChangeSandboxFlags(Frame* childFrame, |
| 869 SandboxFlags flags) { | 796 SandboxFlags flags) { |
| 870 if (!m_webFrame->client()) | |
| 871 return; | |
| 872 m_webFrame->client()->didChangeSandboxFlags( | 797 m_webFrame->client()->didChangeSandboxFlags( |
| 873 WebFrame::fromFrame(childFrame), static_cast<WebSandboxFlags>(flags)); | 798 WebFrame::fromFrame(childFrame), static_cast<WebSandboxFlags>(flags)); |
| 874 } | 799 } |
| 875 | 800 |
| 876 void FrameLoaderClientImpl::didAddContentSecurityPolicy( | 801 void FrameLoaderClientImpl::didAddContentSecurityPolicy( |
| 877 const String& headerValue, | 802 const String& headerValue, |
| 878 ContentSecurityPolicyHeaderType type, | 803 ContentSecurityPolicyHeaderType type, |
| 879 ContentSecurityPolicyHeaderSource source) { | 804 ContentSecurityPolicyHeaderSource source) { |
| 880 if (m_webFrame->client()) { | 805 m_webFrame->client()->didAddContentSecurityPolicy( |
| 881 m_webFrame->client()->didAddContentSecurityPolicy( | 806 headerValue, static_cast<WebContentSecurityPolicyType>(type), |
| 882 headerValue, static_cast<WebContentSecurityPolicyType>(type), | 807 static_cast<WebContentSecurityPolicySource>(source)); |
| 883 static_cast<WebContentSecurityPolicySource>(source)); | |
| 884 } | |
| 885 } | 808 } |
| 886 | 809 |
| 887 void FrameLoaderClientImpl::didChangeFrameOwnerProperties( | 810 void FrameLoaderClientImpl::didChangeFrameOwnerProperties( |
| 888 HTMLFrameElementBase* frameElement) { | 811 HTMLFrameElementBase* frameElement) { |
| 889 if (!m_webFrame->client()) | |
| 890 return; | |
| 891 | |
| 892 m_webFrame->client()->didChangeFrameOwnerProperties( | 812 m_webFrame->client()->didChangeFrameOwnerProperties( |
| 893 WebFrame::fromFrame(frameElement->contentFrame()), | 813 WebFrame::fromFrame(frameElement->contentFrame()), |
| 894 WebFrameOwnerProperties( | 814 WebFrameOwnerProperties( |
| 895 frameElement->scrollingMode(), frameElement->marginWidth(), | 815 frameElement->scrollingMode(), frameElement->marginWidth(), |
| 896 frameElement->marginHeight(), frameElement->allowFullscreen(), | 816 frameElement->marginHeight(), frameElement->allowFullscreen(), |
| 897 frameElement->csp(), frameElement->delegatedPermissions())); | 817 frameElement->csp(), frameElement->delegatedPermissions())); |
| 898 } | 818 } |
| 899 | 819 |
| 900 void FrameLoaderClientImpl::dispatchWillStartUsingPeerConnectionHandler( | 820 void FrameLoaderClientImpl::dispatchWillStartUsingPeerConnectionHandler( |
| 901 WebRTCPeerConnectionHandler* handler) { | 821 WebRTCPeerConnectionHandler* handler) { |
| 902 m_webFrame->client()->willStartUsingPeerConnectionHandler(handler); | 822 m_webFrame->client()->willStartUsingPeerConnectionHandler(handler); |
| 903 } | 823 } |
| 904 | 824 |
| 905 bool FrameLoaderClientImpl::allowWebGL(bool enabledPerSettings) { | 825 bool FrameLoaderClientImpl::allowWebGL(bool enabledPerSettings) { |
| 906 if (m_webFrame->client()) | 826 return m_webFrame->client()->allowWebGL(enabledPerSettings); |
| 907 return m_webFrame->client()->allowWebGL(enabledPerSettings); | |
| 908 | |
| 909 return enabledPerSettings; | |
| 910 } | 827 } |
| 911 | 828 |
| 912 void FrameLoaderClientImpl::dispatchWillInsertBody() { | 829 void FrameLoaderClientImpl::dispatchWillInsertBody() { |
| 913 if (m_webFrame->client()) | 830 m_webFrame->client()->willInsertBody(m_webFrame); |
| 914 m_webFrame->client()->willInsertBody(m_webFrame); | |
| 915 } | 831 } |
| 916 | 832 |
| 917 std::unique_ptr<WebServiceWorkerProvider> | 833 std::unique_ptr<WebServiceWorkerProvider> |
| 918 FrameLoaderClientImpl::createServiceWorkerProvider() { | 834 FrameLoaderClientImpl::createServiceWorkerProvider() { |
| 919 if (!m_webFrame->client()) | |
| 920 return nullptr; | |
| 921 return wrapUnique(m_webFrame->client()->createServiceWorkerProvider()); | 835 return wrapUnique(m_webFrame->client()->createServiceWorkerProvider()); |
| 922 } | 836 } |
| 923 | 837 |
| 924 bool FrameLoaderClientImpl::isControlledByServiceWorker( | 838 bool FrameLoaderClientImpl::isControlledByServiceWorker( |
| 925 DocumentLoader& loader) { | 839 DocumentLoader& loader) { |
| 926 return m_webFrame->client() && | 840 return m_webFrame->client()->isControlledByServiceWorker( |
| 927 m_webFrame->client()->isControlledByServiceWorker( | 841 *WebDataSourceImpl::fromDocumentLoader(&loader)); |
| 928 *WebDataSourceImpl::fromDocumentLoader(&loader)); | |
| 929 } | 842 } |
| 930 | 843 |
| 931 int64_t FrameLoaderClientImpl::serviceWorkerID(DocumentLoader& loader) { | 844 int64_t FrameLoaderClientImpl::serviceWorkerID(DocumentLoader& loader) { |
| 932 if (!m_webFrame->client()) | |
| 933 return -1; | |
| 934 return m_webFrame->client()->serviceWorkerID( | 845 return m_webFrame->client()->serviceWorkerID( |
| 935 *WebDataSourceImpl::fromDocumentLoader(&loader)); | 846 *WebDataSourceImpl::fromDocumentLoader(&loader)); |
| 936 } | 847 } |
| 937 | 848 |
| 938 SharedWorkerRepositoryClient* | 849 SharedWorkerRepositoryClient* |
| 939 FrameLoaderClientImpl::sharedWorkerRepositoryClient() { | 850 FrameLoaderClientImpl::sharedWorkerRepositoryClient() { |
| 940 return m_webFrame->sharedWorkerRepositoryClient(); | 851 return m_webFrame->sharedWorkerRepositoryClient(); |
| 941 } | 852 } |
| 942 | 853 |
| 943 std::unique_ptr<WebApplicationCacheHost> | 854 std::unique_ptr<WebApplicationCacheHost> |
| 944 FrameLoaderClientImpl::createApplicationCacheHost( | 855 FrameLoaderClientImpl::createApplicationCacheHost( |
| 945 WebApplicationCacheHostClient* client) { | 856 WebApplicationCacheHostClient* client) { |
| 946 if (!m_webFrame->client()) | |
| 947 return nullptr; | |
| 948 return wrapUnique(m_webFrame->client()->createApplicationCacheHost(client)); | 857 return wrapUnique(m_webFrame->client()->createApplicationCacheHost(client)); |
| 949 } | 858 } |
| 950 | 859 |
| 951 void FrameLoaderClientImpl::dispatchDidChangeManifest() { | 860 void FrameLoaderClientImpl::dispatchDidChangeManifest() { |
| 952 if (m_webFrame->client()) | 861 m_webFrame->client()->didChangeManifest(); |
| 953 m_webFrame->client()->didChangeManifest(); | |
| 954 } | 862 } |
| 955 | 863 |
| 956 unsigned FrameLoaderClientImpl::backForwardLength() { | 864 unsigned FrameLoaderClientImpl::backForwardLength() { |
| 957 WebViewImpl* webview = m_webFrame->viewImpl(); | 865 WebViewImpl* webview = m_webFrame->viewImpl(); |
| 958 if (!webview || !webview->client()) | 866 if (!webview || !webview->client()) |
| 959 return 0; | 867 return 0; |
| 960 return webview->client()->historyBackListCount() + 1 + | 868 return webview->client()->historyBackListCount() + 1 + |
| 961 webview->client()->historyForwardListCount(); | 869 webview->client()->historyForwardListCount(); |
| 962 } | 870 } |
| 963 | 871 |
| 964 void FrameLoaderClientImpl::suddenTerminationDisablerChanged( | 872 void FrameLoaderClientImpl::suddenTerminationDisablerChanged( |
| 965 bool present, | 873 bool present, |
| 966 SuddenTerminationDisablerType type) { | 874 SuddenTerminationDisablerType type) { |
| 967 if (m_webFrame->client()) { | 875 m_webFrame->client()->suddenTerminationDisablerChanged( |
| 968 m_webFrame->client()->suddenTerminationDisablerChanged( | 876 present, |
| 969 present, | 877 static_cast<WebFrameClient::SuddenTerminationDisablerType>(type)); |
| 970 static_cast<WebFrameClient::SuddenTerminationDisablerType>(type)); | |
| 971 } | |
| 972 } | 878 } |
| 973 | 879 |
| 974 BlameContext* FrameLoaderClientImpl::frameBlameContext() { | 880 BlameContext* FrameLoaderClientImpl::frameBlameContext() { |
| 975 if (!m_webFrame->client()) | |
| 976 return nullptr; | |
| 977 return m_webFrame->client()->frameBlameContext(); | 881 return m_webFrame->client()->frameBlameContext(); |
| 978 } | 882 } |
| 979 | 883 |
| 980 LinkResource* FrameLoaderClientImpl::createServiceWorkerLinkResource( | 884 LinkResource* FrameLoaderClientImpl::createServiceWorkerLinkResource( |
| 981 HTMLLinkElement* owner) { | 885 HTMLLinkElement* owner) { |
| 982 return ServiceWorkerLinkResource::create(owner); | 886 return ServiceWorkerLinkResource::create(owner); |
| 983 } | 887 } |
| 984 | 888 |
| 985 WebEffectiveConnectionType FrameLoaderClientImpl::getEffectiveConnectionType() { | 889 WebEffectiveConnectionType FrameLoaderClientImpl::getEffectiveConnectionType() { |
| 986 if (m_webFrame->client()) | 890 return m_webFrame->client()->getEffectiveConnectionType(); |
| 987 return m_webFrame->client()->getEffectiveConnectionType(); | |
| 988 return WebEffectiveConnectionType::TypeUnknown; | |
| 989 } | 891 } |
| 990 | 892 |
| 991 WebDevToolsAgentImpl* FrameLoaderClientImpl::devToolsAgent() { | 893 WebDevToolsAgentImpl* FrameLoaderClientImpl::devToolsAgent() { |
| 992 return WebLocalFrameImpl::fromFrame(m_webFrame->frame()->localFrameRoot()) | 894 return WebLocalFrameImpl::fromFrame(m_webFrame->frame()->localFrameRoot()) |
| 993 ->devToolsAgentImpl(); | 895 ->devToolsAgentImpl(); |
| 994 } | 896 } |
| 995 | 897 |
| 996 KURL FrameLoaderClientImpl::overrideFlashEmbedWithHTML(const KURL& url) { | 898 KURL FrameLoaderClientImpl::overrideFlashEmbedWithHTML(const KURL& url) { |
| 997 return m_webFrame->client()->overrideFlashEmbedWithHTML(WebURL(url)); | 899 return m_webFrame->client()->overrideFlashEmbedWithHTML(WebURL(url)); |
| 998 } | 900 } |
| 999 | 901 |
| 1000 } // namespace blink | 902 } // namespace blink |
| OLD | NEW |