Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(214)

Side by Side Diff: Source/core/inspector/InspectorPageAgent.cpp

Issue 337783003: DevTools: Preload HTML documents content before fetching resource content. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebaselined Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 562 matching lines...) Expand 10 before | Expand all | Expand 10 after
573 RefPtr<TypeBuilder::Array<TypeBuilder::Page::Cookie> > cookies = TypeBuilder ::Array<TypeBuilder::Page::Cookie>::create(); 573 RefPtr<TypeBuilder::Array<TypeBuilder::Page::Cookie> > cookies = TypeBuilder ::Array<TypeBuilder::Page::Cookie>::create();
574 574
575 ListHashSet<Cookie>::iterator end = cookiesList.end(); 575 ListHashSet<Cookie>::iterator end = cookiesList.end();
576 ListHashSet<Cookie>::iterator it = cookiesList.begin(); 576 ListHashSet<Cookie>::iterator it = cookiesList.begin();
577 for (int i = 0; it != end; ++it, i++) 577 for (int i = 0; it != end; ++it, i++)
578 cookies->addItem(buildObjectForCookie(*it)); 578 cookies->addItem(buildObjectForCookie(*it));
579 579
580 return cookies; 580 return cookies;
581 } 581 }
582 582
583 static void cachedResourcesForDocument(Document* document, Vector<Resource*>& re sult) 583 static void cachedResourcesForDocument(Document* document, Vector<Resource*>& re sult, bool skipXHRs)
584 { 584 {
585 const ResourceFetcher::DocumentResourceMap& allResources = document->fetcher ()->allResources(); 585 const ResourceFetcher::DocumentResourceMap& allResources = document->fetcher ()->allResources();
586 ResourceFetcher::DocumentResourceMap::const_iterator end = allResources.end( ); 586 ResourceFetcher::DocumentResourceMap::const_iterator end = allResources.end( );
587 for (ResourceFetcher::DocumentResourceMap::const_iterator it = allResources. begin(); it != end; ++it) { 587 for (ResourceFetcher::DocumentResourceMap::const_iterator it = allResources. begin(); it != end; ++it) {
588 Resource* cachedResource = it->value.get(); 588 Resource* cachedResource = it->value.get();
589 589
590 switch (cachedResource->type()) { 590 switch (cachedResource->type()) {
591 case Resource::Image: 591 case Resource::Image:
592 // Skip images that were not auto loaded (images disabled in the use r agent). 592 // Skip images that were not auto loaded (images disabled in the use r agent).
593 if (toImageResource(cachedResource)->stillNeedsLoad()) 593 if (toImageResource(cachedResource)->stillNeedsLoad())
594 continue; 594 continue;
595 break; 595 break;
596 case Resource::Font: 596 case Resource::Font:
597 // Skip fonts that were referenced in CSS but never used/downloaded. 597 // Skip fonts that were referenced in CSS but never used/downloaded.
598 if (toFontResource(cachedResource)->stillNeedsLoad()) 598 if (toFontResource(cachedResource)->stillNeedsLoad())
599 continue; 599 continue;
600 break; 600 break;
601 case Resource::Raw:
602 if (skipXHRs)
603 continue;
604 break;
601 default: 605 default:
602 // All other Resource types download immediately. 606 // All other Resource types download immediately.
603 break; 607 break;
604 } 608 }
605 609
606 result.append(cachedResource); 610 result.append(cachedResource);
607 } 611 }
608 } 612 }
609 613
610 // static 614 // static
611 Vector<Document*> InspectorPageAgent::importsForFrame(LocalFrame* frame) 615 Vector<Document*> InspectorPageAgent::importsForFrame(LocalFrame* frame)
612 { 616 {
613 Vector<Document*> result; 617 Vector<Document*> result;
614 Document* rootDocument = frame->document(); 618 Document* rootDocument = frame->document();
615 619
616 if (HTMLImportsController* controller = rootDocument->importsController()) { 620 if (HTMLImportsController* controller = rootDocument->importsController()) {
617 for (size_t i = 0; i < controller->loaderCount(); ++i) { 621 for (size_t i = 0; i < controller->loaderCount(); ++i) {
618 if (Document* document = controller->loaderAt(i)->document()) 622 if (Document* document = controller->loaderAt(i)->document())
619 result.append(document); 623 result.append(document);
620 } 624 }
621 } 625 }
622 626
623 return result; 627 return result;
624 } 628 }
625 629
626 static Vector<Resource*> cachedResourcesForFrame(LocalFrame* frame) 630 static Vector<Resource*> cachedResourcesForFrame(LocalFrame* frame, bool skipXHR s)
627 { 631 {
628 Vector<Resource*> result; 632 Vector<Resource*> result;
629 Document* rootDocument = frame->document(); 633 Document* rootDocument = frame->document();
630 Vector<Document*> loaders = InspectorPageAgent::importsForFrame(frame); 634 Vector<Document*> loaders = InspectorPageAgent::importsForFrame(frame);
631 635
632 cachedResourcesForDocument(rootDocument, result); 636 cachedResourcesForDocument(rootDocument, result, skipXHRs);
633 for (size_t i = 0; i < loaders.size(); ++i) 637 for (size_t i = 0; i < loaders.size(); ++i)
634 cachedResourcesForDocument(loaders[i], result); 638 cachedResourcesForDocument(loaders[i], result, skipXHRs);
635 639
636 return result; 640 return result;
637 } 641 }
638 642
639 static Vector<KURL> allResourcesURLsForFrame(LocalFrame* frame) 643 static Vector<KURL> allResourcesURLsForFrame(LocalFrame* frame)
640 { 644 {
641 Vector<KURL> result; 645 Vector<KURL> result;
642 646
643 result.append(urlWithoutFragment(frame->loader().documentLoader()->url())); 647 result.append(urlWithoutFragment(frame->loader().documentLoader()->url()));
644 648
645 Vector<Resource*> allResources = cachedResourcesForFrame(frame); 649 Vector<Resource*> allResources = cachedResourcesForFrame(frame, false);
646 for (Vector<Resource*>::const_iterator it = allResources.begin(); it != allR esources.end(); ++it) 650 for (Vector<Resource*>::const_iterator it = allResources.begin(); it != allR esources.end(); ++it)
647 result.append(urlWithoutFragment((*it)->url())); 651 result.append(urlWithoutFragment((*it)->url()));
648 652
649 return result; 653 return result;
650 } 654 }
651 655
652 void InspectorPageAgent::getCookies(ErrorString*, RefPtr<TypeBuilder::Array<Type Builder::Page::Cookie> >& cookies) 656 void InspectorPageAgent::getCookies(ErrorString*, RefPtr<TypeBuilder::Array<Type Builder::Page::Cookie> >& cookies)
653 { 657 {
654 ListHashSet<Cookie> rawCookiesList; 658 ListHashSet<Cookie> rawCookiesList;
655 659
(...skipping 578 matching lines...) Expand 10 before | Expand all | Expand 10 after
1234 } 1238 }
1235 1239
1236 PassRefPtr<TypeBuilder::Page::FrameResourceTree> InspectorPageAgent::buildObject ForFrameTree(LocalFrame* frame) 1240 PassRefPtr<TypeBuilder::Page::FrameResourceTree> InspectorPageAgent::buildObject ForFrameTree(LocalFrame* frame)
1237 { 1241 {
1238 RefPtr<TypeBuilder::Page::Frame> frameObject = buildObjectForFrame(frame); 1242 RefPtr<TypeBuilder::Page::Frame> frameObject = buildObjectForFrame(frame);
1239 RefPtr<TypeBuilder::Array<TypeBuilder::Page::FrameResourceTree::Resources> > subresources = TypeBuilder::Array<TypeBuilder::Page::FrameResourceTree::Resourc es>::create(); 1243 RefPtr<TypeBuilder::Array<TypeBuilder::Page::FrameResourceTree::Resources> > subresources = TypeBuilder::Array<TypeBuilder::Page::FrameResourceTree::Resourc es>::create();
1240 RefPtr<TypeBuilder::Page::FrameResourceTree> result = TypeBuilder::Page::Fra meResourceTree::create() 1244 RefPtr<TypeBuilder::Page::FrameResourceTree> result = TypeBuilder::Page::Fra meResourceTree::create()
1241 .setFrame(frameObject) 1245 .setFrame(frameObject)
1242 .setResources(subresources); 1246 .setResources(subresources);
1243 1247
1244 Vector<Resource*> allResources = cachedResourcesForFrame(frame); 1248 Vector<Resource*> allResources = cachedResourcesForFrame(frame, true);
1245 for (Vector<Resource*>::const_iterator it = allResources.begin(); it != allR esources.end(); ++it) { 1249 for (Vector<Resource*>::const_iterator it = allResources.begin(); it != allR esources.end(); ++it) {
1246 Resource* cachedResource = *it; 1250 Resource* cachedResource = *it;
1247 1251
1248 RefPtr<TypeBuilder::Page::FrameResourceTree::Resources> resourceObject = TypeBuilder::Page::FrameResourceTree::Resources::create() 1252 RefPtr<TypeBuilder::Page::FrameResourceTree::Resources> resourceObject = TypeBuilder::Page::FrameResourceTree::Resources::create()
1249 .setUrl(urlWithoutFragment(cachedResource->url()).string()) 1253 .setUrl(urlWithoutFragment(cachedResource->url()).string())
1250 .setType(cachedResourceTypeJson(*cachedResource)) 1254 .setType(cachedResourceTypeJson(*cachedResource))
1251 .setMimeType(cachedResource->response().mimeType()); 1255 .setMimeType(cachedResource->response().mimeType());
1252 if (cachedResource->wasCanceled()) 1256 if (cachedResource->wasCanceled())
1253 resourceObject->setCanceled(true); 1257 resourceObject->setCanceled(true);
1254 else if (cachedResource->status() == Resource::LoadError) 1258 else if (cachedResource->status() == Resource::LoadError)
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
1428 bool InspectorPageAgent::getEditedResourceContent(const String& url, String* con tent) 1432 bool InspectorPageAgent::getEditedResourceContent(const String& url, String* con tent)
1429 { 1433 {
1430 if (!m_editedResourceContent.contains(url)) 1434 if (!m_editedResourceContent.contains(url))
1431 return false; 1435 return false;
1432 *content = m_editedResourceContent.get(url); 1436 *content = m_editedResourceContent.get(url);
1433 return true; 1437 return true;
1434 } 1438 }
1435 1439
1436 } // namespace WebCore 1440 } // namespace WebCore
1437 1441
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698