This repository has been archived by the owner on Jul 18, 2018. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This CL relands https://chromium-review.googlesource.com/c/chromium/src/+/583552 with a fix for test failure in release builds: Move FindFirstParseError() call out of DCHECK(). Original CL description: 1. This CL applies the spec change by whatwg/html#2971. Since [1], the code has already been behaving like the spec PR 2971, and this CL makes the code align with PR 2971 more completely, by removing AncestorList and adding spec comments. 2. This CL also flattens the code structure of ModuleTreeLinker, which is enabled by the spec PR 2971, to make the code simpler to make further optimizations easy. That is, instead of creating a ModuleTreeLinker for each module script (i.e. for each "fetch the descendants" call) in a module graph, this CL creates a single ModuleTreeLinker that corresponds to a top-level module graph script. Most of fetching-related classes/methods, including - ModuleTreeLinker::DependencyModuleClient - ModuleTreeLinker::FetchDescendants() - ModuleTreeLinker::NotifyOneDescendantFinished() are merged into the single method NotifyModuleLoadFinished() that implements the main body of "fetch the descendants" and "internal module script graph fetching procedure". This also removes ModuleTreeReachedUrlSet and instead uses HashSet<KURL> directly, as we no longer have to share it across multiple ModuleTreeLinkers. Modulator::FetchTreeInternal() is removed as we no longer create ModuleTreeLinkers for subtree fetching via Modulator. 3. This CL applies a part of whatwg/html#2991, particularly introduces FindFirstParseError() that corresponds to "find the first parse error" and use it to find the error to be reported, instead of propagating errors based on Step 6.1 and 6.2 of "fetch the descendants". (*) In some subtle cases, this might cause behavior changes in error reporting, but these changes shouldn't be significant, because anyway the spec before PR 2991 (and thus the previous implementation) behaves nondeterministically in some similarly subtle cases. This CL is an intermediate step to apply spec PRs 2971 and 2991. This CL refactors largely ModuleTreeLinker with keeping the existing behavior mostly (except for (*)), and subsequent CLs will apply the behavior changes and remaining code structure changes introduced by PR 2991. Bug: 763597 Change-Id: I4136db0db4bc8a0cdc7f5c23b18787b405d8c98f Reviewed-on: https://chromium-review.googlesource.com/674748 Commit-Queue: Hiroshige Hayashizaki <hiroshige@chromium.org> Reviewed-by: Kouhei Ueno <kouhei@chromium.org> Cr-Commit-Position: refs/heads/master@{#503126}
- Loading branch information