void ResourceLoadScheduler::crossOriginRedirectReceived(ResourceLoader* resourceLoader, const KURL& redirectURL) { HostInformation* oldHost = hostForURL(resourceLoader->url()); ASSERT(oldHost); HostInformation* newHost = hostForURL(redirectURL, CreateIfNotFound); if (oldHost->name() == newHost->name()) return; newHost->addLoadInProgress(resourceLoader); oldHost->remove(resourceLoader); }
void ResourceLoadScheduler::servePendingRequests(ResourceLoadPriority minimumPriority) { LOG(ResourceLoading, "ResourceLoadScheduler::servePendingRequests. m_suspendPendingRequestsCount=%d", m_suspendPendingRequestsCount); if (isSuspendingPendingRequests()) return; m_requestTimer.stop(); servePendingRequests(m_nonHTTPProtocolHost, minimumPriority); Vector<HostInformation*> hostsToServe; m_hosts.checkConsistency(); HostMap::iterator end = m_hosts.end(); for (HostMap::iterator iter = m_hosts.begin(); iter != end; ++iter) hostsToServe.append(iter->value); int size = hostsToServe.size(); for (int i = 0; i < size; ++i) { HostInformation* host = hostsToServe[i]; if (host->hasRequests()) servePendingRequests(host, minimumPriority); else delete m_hosts.take(host->name()); } }