void ResourceLoader::cancel(const ResourceError& error) { if (!error.isNull()) didCancel(error); else didCancel(cancelledError()); }
void ResourceLoader::cancel(const ResourceError& error) { if (m_reachedTerminalState) return; if (!error.isNull()) didCancel(error); else didCancel(cancelledError()); }
bool ExternalPopupMenu::showInternal() { // Blink core reuses the PopupMenu of an element. For simplicity, we do // recreate the actual external popup everytime. if (m_webExternalPopupMenu) { m_webExternalPopupMenu->close(); m_webExternalPopupMenu = 0; } WebPopupMenuInfo info; getPopupMenuInfo(info, *m_ownerElement); if (info.items.isEmpty()) return false; WebLocalFrameImpl* webframe = WebLocalFrameImpl::fromFrame(m_localFrame.get()); m_webExternalPopupMenu = webframe->client()->createExternalPopupMenu(info, this); if (m_webExternalPopupMenu) { LayoutObject* layoutObject = m_ownerElement->layoutObject(); if (!layoutObject || !layoutObject->isBox()) return false; FloatQuad quad(toLayoutBox(layoutObject)->localToAbsoluteQuad(FloatQuad(toLayoutBox(layoutObject)->borderBoundingBox()))); IntRect rect(quad.enclosingBoundingBox()); IntRect rectInViewport = m_localFrame->view()->soonToBeRemovedContentsToUnscaledViewport(rect); // TODO(tkent): If the anchor rectangle is not visible, we should not // show a popup. m_webExternalPopupMenu->show(rectInViewport); m_shownDOMTreeVersion = m_ownerElement->document().domTreeVersion(); return true; } else { // The client might refuse to create a popup (when there is already one pending to be shown for example). didCancel(); return false; } }
void NetscapePlugInStreamLoader::didReceiveResponse(const ResourceResponse& response) { RefPtr<NetscapePlugInStreamLoader> protect(this); m_client->didReceiveResponse(this, response); // Don't continue if the stream is cancelled if (!m_client) return; ResourceLoader::didReceiveResponse(response); // Don't continue if the stream is cancelled if (!m_client) return; if (!response.isHTTP()) return; if (m_client->wantsAllStreams()) return; if (response.httpStatusCode() < 100 || response.httpStatusCode() >= 400) didCancel(frameLoader()->fileDoesNotExistError(response)); }
void Download::cancel() { if (!m_resourceHandle) return; m_resourceHandle->cancel(); didCancel(IPC::DataReference()); m_resourceHandle = 0; }
void ResourceLoader::cancel(const ResourceError& error) { // If the load has already completed - succeeded, failed, or previously cancelled - do nothing. if (m_reachedTerminalState) return; ResourceError nonNullError = error.isNull() ? cancelledError() : error; // willCancel() and didFailToLoad() both call out to clients that might do // something causing the last reference to this object to go away. RefPtr<ResourceLoader> protector(this); // If we re-enter cancel() from inside willCancel(), we want to pick up from where we left // off without re-running willCancel() if (!m_calledWillCancel) { m_calledWillCancel = true; willCancel(nonNullError); } // If we re-enter cancel() from inside didFailToLoad(), we want to pick up from where we // left off without redoing any of this work. if (!m_cancelled) { m_cancelled = true; if (FormData* data = m_request.httpBody()) data->removeGeneratedFilesIfNeeded(); if (m_handle) m_handle->clearAuthentication(); m_documentLoader->cancelPendingSubstituteLoad(this); if (m_handle) { m_handle->cancel(); m_handle = 0; } if (m_options.sendLoadCallbacks == SendCallbacks && m_identifier && !m_notifiedLoadComplete) { ActionLogScope log_scope( String::format("cancel_fail:%s", m_request.url().lastPathComponent().ascii().data()).ascii().data()); frameLoader()->notifier()->didFailToLoad(this, nonNullError); } } // If cancel() completed from within the call to willCancel() or didFailToLoad(), // we don't want to redo didCancel() or releasesResources(). if (m_reachedTerminalState) return; didCancel(nonNullError); releaseResources(); }
void ResourceLoader::cancel(const ResourceError& error) { // If the load has already completed - succeeded, failed, or previously cancelled - do nothing. if (m_reachedTerminalState) return; ResourceError nonNullError = error.isNull() ? cancelledError() : error; // willCancel() and didFailToLoad() both call out to clients that might do // something causing the last reference to this object to go away. Ref<ResourceLoader> protect(*this); // If we re-enter cancel() from inside willCancel(), we want to pick up from where we left // off without re-running willCancel() if (m_cancellationStatus == NotCancelled) { m_cancellationStatus = CalledWillCancel; willCancel(nonNullError); } // If we re-enter cancel() from inside didFailToLoad(), we want to pick up from where we // left off without redoing any of this work. if (m_cancellationStatus == CalledWillCancel) { m_cancellationStatus = Cancelled; if (m_handle) m_handle->clearAuthentication(); m_documentLoader->cancelPendingSubstituteLoad(this); if (m_handle) { m_handle->cancel(); m_handle = 0; } cleanupForError(nonNullError); } // If cancel() completed from within the call to willCancel() or didFailToLoad(), // we don't want to redo didCancel() or releasesResources(). if (m_reachedTerminalState) return; didCancel(nonNullError); if (m_cancellationStatus == FinishedCancel) return; m_cancellationStatus = FinishedCancel; releaseResources(); }
void Download::cancel() { ASSERT(m_download); if (!m_download) return; CFURLDownloadSetDeletesUponFailure(m_download.get(), false); CFURLDownloadCancel(m_download.get()); RetainPtr<CFDataRef> resumeData(AdoptCF, CFURLDownloadCopyResumeData(m_download.get())); if (resumeData) DownloadBundle::appendResumeData(resumeData.get(), m_bundlePath); didCancel(CoreIPC::DataReference()); }
void ExternalPopupMenu::show(const FloatQuad& controlPosition, const IntSize&, int index) { IntRect rect(controlPosition.enclosingBoundingBox()); // WebCore reuses the PopupMenu of a page. // For simplicity, we do recreate the actual external popup everytime. hide(); WebPopupMenuInfo info; getPopupMenuInfo(&info); if (info.items.isEmpty()) return; m_webExternalPopupMenu = m_webViewClient->createExternalPopupMenu(info, this); if (m_webExternalPopupMenu) m_webExternalPopupMenu->show(m_frameView->contentsToWindow(rect)); else { // The client might refuse to create a popup (when there is already one pending to be shown for example). didCancel(); } }
void ExternalPopupMenu::show(const FloatQuad& controlPosition, const IntSize&, int index) { IntRect rect(controlPosition.enclosingBoundingBox()); // WebCore reuses the PopupMenu of an element. // For simplicity, we do recreate the actual external popup everytime. if (m_webExternalPopupMenu) { m_webExternalPopupMenu->close(); m_webExternalPopupMenu = 0; } WebPopupMenuInfo info; getPopupMenuInfo(info, *m_popupMenuClient); if (info.items.isEmpty()) return; WebLocalFrameImpl* webframe = WebLocalFrameImpl::fromFrame(m_localFrame.get()); m_webExternalPopupMenu = webframe->client()->createExternalPopupMenu(info, this); if (m_webExternalPopupMenu) { // FIXME: Standardize viewport coordinate conversions. crbug.com/371902. IntRect rectInViewport = m_localFrame->view()->contentsToWindow(rect); if (m_webView.pinchVirtualViewportEnabled()) rectInViewport.moveBy(-flooredIntPoint(m_webView.page()->frameHost().pinchViewport().location())); m_webExternalPopupMenu->show(rectInViewport); #if OS(MACOSX) const WebInputEvent* currentEvent = WebViewImpl::currentInputEvent(); if (currentEvent && currentEvent->type == WebInputEvent::MouseDown) { m_syntheticEvent = adoptPtr(new WebMouseEvent); *m_syntheticEvent = *static_cast<const WebMouseEvent*>(currentEvent); m_syntheticEvent->type = WebInputEvent::MouseUp; m_dispatchEventTimer.startOneShot(0, FROM_HERE); // FIXME: show() is asynchronous. If preparing a popup is slow and // a user released the mouse button before showing the popup, // mouseup and click events are correctly dispatched. Dispatching // the synthetic mouseup event is redundant in this case. } #endif } else { // The client might refuse to create a popup (when there is already one pending to be shown for example). didCancel(); } }