void ResourceFetcher::didLoadResource(Resource* resource) { RefPtr<Document> protectDocument(m_document); if (m_document) m_document->checkCompleted(); scheduleDocumentResourcesGC(); }
void CachedResourceLoader::loadDone(CachedResource* resource) { RefPtr<DocumentLoader> protectDocumentLoader(m_documentLoader); RefPtr<Document> protectDocument(m_document); #if ENABLE(RESOURCE_TIMING) if (resource && resource->response().isHTTP() && ((!resource->errorOccurred() && !resource->wasCanceled()) || resource->response().httpStatusCode() == 304)) { HashMap<CachedResource*, InitiatorInfo>::iterator initiatorIt = m_initiatorMap.find(resource); if (initiatorIt != m_initiatorMap.end()) { ASSERT(document()); Document* initiatorDocument = document(); if (resource->type() == CachedResource::MainResource) initiatorDocument = document()->parentDocument(); ASSERT(initiatorDocument); const InitiatorInfo& info = initiatorIt->value; initiatorDocument->domWindow()->performance()->addResourceTiming(info.name, initiatorDocument, resource->resourceRequest(), resource->response(), info.startTime, resource->loadFinishTime()); m_initiatorMap.remove(initiatorIt); } } #else UNUSED_PARAM(resource); #endif // ENABLE(RESOURCE_TIMING) if (frame()) frame()->loader()->loadDone(); performPostLoadActions(); if (!m_garbageCollectDocumentResourcesTimer.isActive()) m_garbageCollectDocumentResourcesTimer.startOneShot(0); }
void notifyChildNodeInserted(ContainerNode& insertionPoint, Node& node, NodeVector& postInsertionNotificationTargets) { ASSERT_WITH_SECURITY_IMPLICATION(!NoEventDispatchAssertion::isEventDispatchForbidden()); InspectorInstrumentation::didInsertDOMNode(node.document(), node); Ref<Document> protectDocument(node.document()); Ref<Node> protectNode(node); if (insertionPoint.inDocument()) notifyNodeInsertedIntoDocument(insertionPoint, node, postInsertionNotificationTargets); else if (is<ContainerNode>(node)) notifyNodeInsertedIntoTree(insertionPoint, downcast<ContainerNode>(node), postInsertionNotificationTargets); }