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

Side by Side Diff: Source/core/html/parser/HTMLDocumentParser.cpp

Issue 15856002: First step of HTMLImports (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fixed Mac build Created 7 years, 6 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) 2010 Google, Inc. All Rights Reserved. 2 * Copyright (C) 2010 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 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 880 matching lines...) Expand 10 before | Expand all | Expand 10 after
891 if (isStopping()) { 891 if (isStopping()) {
892 attemptToRunDeferredScriptsAndEnd(); 892 attemptToRunDeferredScriptsAndEnd();
893 return; 893 return;
894 } 894 }
895 895
896 m_scriptRunner->executeScriptsWaitingForLoad(cachedResource); 896 m_scriptRunner->executeScriptsWaitingForLoad(cachedResource);
897 if (!isWaitingForScripts()) 897 if (!isWaitingForScripts())
898 resumeParsingAfterScriptExecution(); 898 resumeParsingAfterScriptExecution();
899 } 899 }
900 900
901 void HTMLDocumentParser::executeScriptsWaitingForStylesheets() 901 void HTMLDocumentParser::executeScriptsWaitingForResources()
902 { 902 {
903 // Document only calls this when the Document owns the DocumentParser 903 // Document only calls this when the Document owns the DocumentParser
904 // so this will not be called in the DocumentFragment case. 904 // so this will not be called in the DocumentFragment case.
905 ASSERT(m_scriptRunner); 905 ASSERT(m_scriptRunner);
906 // Ignore calls unless we have a script blocking the parser waiting on a 906 // Ignore calls unless we have a script blocking the parser waiting on a
907 // stylesheet load. Otherwise we are currently parsing and this 907 // stylesheet load. Otherwise we are currently parsing and this
908 // is a re-entrant call from encountering a </ style> tag. 908 // is a re-entrant call from encountering a </ style> tag.
909 if (!m_scriptRunner->hasScriptsWaitingForStylesheets()) 909 if (!m_scriptRunner->hasScriptsWaitingForResources())
910 return; 910 return;
911 911
912 // pumpTokenizer can cause this parser to be detached from the Document, 912 // pumpTokenizer can cause this parser to be detached from the Document,
913 // but we need to ensure it isn't deleted yet. 913 // but we need to ensure it isn't deleted yet.
914 RefPtr<HTMLDocumentParser> protect(this); 914 RefPtr<HTMLDocumentParser> protect(this);
915 m_scriptRunner->executeScriptsWaitingForStylesheets(); 915 m_scriptRunner->executeScriptsWaitingForResources();
916 if (!isWaitingForScripts()) 916 if (!isWaitingForScripts())
917 resumeParsingAfterScriptExecution(); 917 resumeParsingAfterScriptExecution();
918 } 918 }
919 919
920 void HTMLDocumentParser::parseDocumentFragment(const String& source, DocumentFra gment* fragment, Element* contextElement, ParserContentPolicy parserContentPolic y) 920 void HTMLDocumentParser::parseDocumentFragment(const String& source, DocumentFra gment* fragment, Element* contextElement, ParserContentPolicy parserContentPolic y)
921 { 921 {
922 RefPtr<HTMLDocumentParser> parser = HTMLDocumentParser::create(fragment, con textElement, parserContentPolicy); 922 RefPtr<HTMLDocumentParser> parser = HTMLDocumentParser::create(fragment, con textElement, parserContentPolicy);
923 parser->insert(source); // Use insert() so that the parser will not yield. 923 parser->insert(source); // Use insert() so that the parser will not yield.
924 parser->finish(); 924 parser->finish();
925 ASSERT(!parser->processingData()); // Make sure we're done. <rdar://problem/ 3963151> 925 ASSERT(!parser->processingData()); // Make sure we're done. <rdar://problem/ 3963151>
926 parser->detach(); // Allows ~DocumentParser to assert it was detached before destruction. 926 parser->detach(); // Allows ~DocumentParser to assert it was detached before destruction.
927 } 927 }
928 928
929 void HTMLDocumentParser::suspendScheduledTasks() 929 void HTMLDocumentParser::suspendScheduledTasks()
930 { 930 {
931 if (m_parserScheduler) 931 if (m_parserScheduler)
932 m_parserScheduler->suspend(); 932 m_parserScheduler->suspend();
933 } 933 }
934 934
935 void HTMLDocumentParser::resumeScheduledTasks() 935 void HTMLDocumentParser::resumeScheduledTasks()
936 { 936 {
937 if (m_parserScheduler) 937 if (m_parserScheduler)
938 m_parserScheduler->resume(); 938 m_parserScheduler->resume();
939 } 939 }
940 940
941 } 941 }
OLDNEW
« no previous file with comments | « Source/core/html/parser/HTMLDocumentParser.h ('k') | Source/core/html/parser/HTMLScriptRunner.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698