OLD | NEW |
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 540 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
551 | 551 |
552 if (isStopped()) | 552 if (isStopped()) |
553 return; | 553 return; |
554 | 554 |
555 if (session.needsYield) | 555 if (session.needsYield) |
556 m_parserScheduler->scheduleForResume(); | 556 m_parserScheduler->scheduleForResume(); |
557 | 557 |
558 if (isWaitingForScripts()) { | 558 if (isWaitingForScripts()) { |
559 ASSERT(m_tokenizer->state() == HTMLTokenizer::DataState); | 559 ASSERT(m_tokenizer->state() == HTMLTokenizer::DataState); |
560 if (!m_preloadScanner) { | 560 if (!m_preloadScanner) { |
561 m_preloadScanner = adoptPtr(new HTMLPreloadScanner(m_options, docume
nt()->url())); | 561 m_preloadScanner = adoptPtr(new HTMLPreloadScanner(m_options, docume
nt()->url(), document()->devicePixelRatio())); |
562 m_preloadScanner->appendToEnd(m_input.current()); | 562 m_preloadScanner->appendToEnd(m_input.current()); |
563 } | 563 } |
564 m_preloadScanner->scan(m_preloader.get(), document()->baseElementURL()); | 564 m_preloadScanner->scan(m_preloader.get(), document()->baseElementURL()); |
565 } | 565 } |
566 | 566 |
567 InspectorInstrumentation::didWriteHTML(cookie, m_input.current().currentLine
().zeroBasedInt()); | 567 InspectorInstrumentation::didWriteHTML(cookie, m_input.current().currentLine
().zeroBasedInt()); |
568 } | 568 } |
569 | 569 |
570 void HTMLDocumentParser::constructTreeFromHTMLToken(HTMLToken& rawToken) | 570 void HTMLDocumentParser::constructTreeFromHTMLToken(HTMLToken& rawToken) |
571 { | 571 { |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
625 } | 625 } |
626 | 626 |
627 SegmentedString excludedLineNumberSource(source); | 627 SegmentedString excludedLineNumberSource(source); |
628 excludedLineNumberSource.setExcludeLineNumbers(); | 628 excludedLineNumberSource.setExcludeLineNumbers(); |
629 m_input.insertAtCurrentInsertionPoint(excludedLineNumberSource); | 629 m_input.insertAtCurrentInsertionPoint(excludedLineNumberSource); |
630 pumpTokenizerIfPossible(ForceSynchronous); | 630 pumpTokenizerIfPossible(ForceSynchronous); |
631 | 631 |
632 if (isWaitingForScripts()) { | 632 if (isWaitingForScripts()) { |
633 // Check the document.write() output with a separate preload scanner as | 633 // Check the document.write() output with a separate preload scanner as |
634 // the main scanner can't deal with insertions. | 634 // the main scanner can't deal with insertions. |
635 if (!m_insertionPreloadScanner) | 635 if (!m_insertionPreloadScanner) { |
636 m_insertionPreloadScanner = adoptPtr(new HTMLPreloadScanner(m_option
s, document()->url())); | 636 m_insertionPreloadScanner = adoptPtr(new HTMLPreloadScanner(m_option
s, document()->url(), document()->devicePixelRatio())); |
| 637 } |
637 m_insertionPreloadScanner->appendToEnd(source); | 638 m_insertionPreloadScanner->appendToEnd(source); |
638 m_insertionPreloadScanner->scan(m_preloader.get(), document()->baseEleme
ntURL()); | 639 m_insertionPreloadScanner->scan(m_preloader.get(), document()->baseEleme
ntURL()); |
639 } | 640 } |
640 | 641 |
641 endIfDelayed(); | 642 endIfDelayed(); |
642 } | 643 } |
643 | 644 |
644 void HTMLDocumentParser::startBackgroundParser() | 645 void HTMLDocumentParser::startBackgroundParser() |
645 { | 646 { |
646 ASSERT(shouldUseThreading()); | 647 ASSERT(shouldUseThreading()); |
647 ASSERT(!m_haveBackgroundParser); | 648 ASSERT(!m_haveBackgroundParser); |
648 m_haveBackgroundParser = true; | 649 m_haveBackgroundParser = true; |
649 | 650 |
650 HTMLIdentifier::init(); | 651 HTMLIdentifier::init(); |
651 | 652 |
652 RefPtr<WeakReference<BackgroundHTMLParser> > reference = WeakReference<Backg
roundHTMLParser>::createUnbound(); | 653 RefPtr<WeakReference<BackgroundHTMLParser> > reference = WeakReference<Backg
roundHTMLParser>::createUnbound(); |
653 m_backgroundParser = WeakPtr<BackgroundHTMLParser>(reference); | 654 m_backgroundParser = WeakPtr<BackgroundHTMLParser>(reference); |
654 | 655 |
655 OwnPtr<BackgroundHTMLParser::Configuration> config = adoptPtr(new Background
HTMLParser::Configuration); | 656 OwnPtr<BackgroundHTMLParser::Configuration> config = adoptPtr(new Background
HTMLParser::Configuration); |
656 config->options = m_options; | 657 config->options = m_options; |
657 config->parser = m_weakFactory.createWeakPtr(); | 658 config->parser = m_weakFactory.createWeakPtr(); |
658 config->xssAuditor = adoptPtr(new XSSAuditor); | 659 config->xssAuditor = adoptPtr(new XSSAuditor); |
659 config->xssAuditor->init(document(), &m_xssAuditorDelegate); | 660 config->xssAuditor->init(document(), &m_xssAuditorDelegate); |
660 config->preloadScanner = adoptPtr(new TokenPreloadScanner(document()->url().
copy())); | 661 config->preloadScanner = adoptPtr(new TokenPreloadScanner(document()->url().
copy(), document()->devicePixelRatio())); |
661 | 662 |
662 ASSERT(config->xssAuditor->isSafeToSendToAnotherThread()); | 663 ASSERT(config->xssAuditor->isSafeToSendToAnotherThread()); |
663 ASSERT(config->preloadScanner->isSafeToSendToAnotherThread()); | 664 ASSERT(config->preloadScanner->isSafeToSendToAnotherThread()); |
664 HTMLParserThread::shared()->postTask(bind(&BackgroundHTMLParser::create, ref
erence.release(), config.release())); | 665 HTMLParserThread::shared()->postTask(bind(&BackgroundHTMLParser::create, ref
erence.release(), config.release())); |
665 } | 666 } |
666 | 667 |
667 void HTMLDocumentParser::stopBackgroundParser() | 668 void HTMLDocumentParser::stopBackgroundParser() |
668 { | 669 { |
669 ASSERT(shouldUseThreading()); | 670 ASSERT(shouldUseThreading()); |
670 ASSERT(m_haveBackgroundParser); | 671 ASSERT(m_haveBackgroundParser); |
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
951 m_parserScheduler->suspend(); | 952 m_parserScheduler->suspend(); |
952 } | 953 } |
953 | 954 |
954 void HTMLDocumentParser::resumeScheduledTasks() | 955 void HTMLDocumentParser::resumeScheduledTasks() |
955 { | 956 { |
956 if (m_parserScheduler) | 957 if (m_parserScheduler) |
957 m_parserScheduler->resume(); | 958 m_parserScheduler->resume(); |
958 } | 959 } |
959 | 960 |
960 } | 961 } |
OLD | NEW |