void InspectorPageAgent::getCookies(ErrorString*, RefPtr<InspectorArray>* cookies, WTF::String* cookiesString) { // If we can get raw cookies. ListHashSet<Cookie> rawCookiesList; // If we can't get raw cookies - fall back to String representation String stringCookiesList; // Return value to getRawCookies should be the same for every call because // the return value is platform/network backend specific, and the call will // always return the same true/false value. bool rawCookiesImplemented = false; for (Frame* frame = mainFrame(); frame; frame = frame->tree()->traverseNext(mainFrame())) { Document* document = frame->document(); Vector<CachedResource*> allResources = cachedResourcesForFrame(frame); for (Vector<CachedResource*>::const_iterator it = allResources.begin(); it != allResources.end(); ++it) { Vector<Cookie> docCookiesList; rawCookiesImplemented = getRawCookies(document, KURL(ParsedURLString, (*it)->url()), docCookiesList); if (!rawCookiesImplemented) { // FIXME: We need duplication checking for the String representation of cookies. ExceptionCode ec = 0; stringCookiesList += document->cookie(ec); // Exceptions are thrown by cookie() in sandboxed frames. That won't happen here // because "document" is the document of the main frame of the page. ASSERT(!ec); } else { int cookiesSize = docCookiesList.size(); for (int i = 0; i < cookiesSize; i++) { if (!rawCookiesList.contains(docCookiesList[i])) rawCookiesList.add(docCookiesList[i]); } } } } if (rawCookiesImplemented) *cookies = buildArrayForCookies(rawCookiesList); else *cookiesString = stringCookiesList; }
void InspectorPageAgent::getCookies(ErrorString*, RefPtr<TypeBuilder::Array<TypeBuilder::Page::Cookie> >& cookies) { ListHashSet<Cookie> rawCookiesList; for (Frame* frame = mainFrame(); frame; frame = frame->tree().traverseNext(mainFrame())) { if (!frame->isLocalFrame()) continue; Document* document = toLocalFrame(frame)->document(); Vector<KURL> allURLs = allResourcesURLsForFrame(toLocalFrame(frame)); for (Vector<KURL>::const_iterator it = allURLs.begin(); it != allURLs.end(); ++it) { Vector<Cookie> docCookiesList; getRawCookies(document, *it, docCookiesList); int cookiesSize = docCookiesList.size(); for (int i = 0; i < cookiesSize; i++) { if (!rawCookiesList.contains(docCookiesList[i])) rawCookiesList.add(docCookiesList[i]); } } } cookies = buildArrayForCookies(rawCookiesList); }