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

Unified Diff: tools/gn/header_checker.h

Issue 424133002: GN: (HeaderChecker) Allow any chain to forward direct dependent configs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: update comments in header 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tools/gn/header_checker.cc » ('j') | tools/gn/header_checker.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/gn/header_checker.h
diff --git a/tools/gn/header_checker.h b/tools/gn/header_checker.h
index 59b795352564cb0aa33e807b7407f49b2677610e..bdfbb551624b029ff6f45fd98b3cd62c3c676276 100644
--- a/tools/gn/header_checker.h
+++ b/tools/gn/header_checker.h
@@ -41,8 +41,11 @@ class HeaderChecker : public base::RefCountedThreadSafe<HeaderChecker> {
private:
friend class base::RefCountedThreadSafe<HeaderChecker>;
FRIEND_TEST_ALL_PREFIXES(HeaderCheckerTest, IsDependencyOf);
+ FRIEND_TEST_ALL_PREFIXES(HeaderCheckerTest,
+ IsDependencyOf_ForwardsDirectDependentConfigs);
FRIEND_TEST_ALL_PREFIXES(HeaderCheckerTest, CheckInclude);
- FRIEND_TEST_ALL_PREFIXES(HeaderCheckerTest, DoDirectDependentConfigsApply);
+ FRIEND_TEST_ALL_PREFIXES(HeaderCheckerTest,
+ GetDependentConfigChainProblemIndex);
~HeaderChecker();
struct TargetInfo {
@@ -84,32 +87,40 @@ class HeaderChecker : public base::RefCountedThreadSafe<HeaderChecker> {
Err* err) const;
// Returns true if the given search_for target is a dependency of
- // search_from. Many subtrees are duplicated so this function avoids
- // duplicate checking across recursive calls by keeping track of checked
- // targets in the given set. It should point to an empty set for the first
- // call. A target is not considered to be a dependency of itself.
+ // search_from.
//
// If found, the vector given in "chain" will be filled with the reverse
// dependency chain from the dest target (chain[0] = search_for) to the src
// target (chain[chain.size() - 1] = search_from).
+ //
+ // If prefer_direct_dependent_configs is true, chains which forward direct
+ // dependent configs will be considered first, and a chain which does not
+ // will be returned only if no such chain exists.
+ //
+ // If direct_dependent_configs_apply is non-null, it will be set to true
+ // if the chain was found during a search that requires forwarding direct
+ // dependent configs, and false if it was found during a search of the
+ // entire dependency graph.
bool IsDependencyOf(const Target* search_for,
const Target* search_from,
- std::vector<const Target*>* chain) const;
+ bool prefer_direct_dependent_configs,
+ std::vector<const Target*>* chain,
+ bool* direct_dependent_configs_apply) const;
+
+ // For internal use by the previous override of IsDependencyOf.
+ // If requires_dependent_configs is true, only chains which forward
+ // direct dependent configs are considered.
bool IsDependencyOf(const Target* search_for,
const Target* search_from,
- std::vector<const Target*>* chain,
- std::set<const Target*>* checked) const;
+ bool requires_dependent_configs,
+ std::vector<const Target*>* chain) const;
// Given a reverse dependency chain (chain[0] is the lower-level target,
- // chain[end] is the higher-level target), determines if all direct dependent
- // configs on the lower-level target would apply to the higher-level one.
- //
- // If configs do not apply, this function returns false and indicates the
- // index of the target that caused the config to not apply by putting it in
- // problematic_index.
- static bool DoDirectDependentConfigsApply(
- const std::vector<const Target*>& chain,
- size_t* problematic_index);
+ // chain[end] is the higher-level target) which does not forward direct
+ // dependent configs, determines the index of the target that caused the
+ // config to not apply.
+ static size_t GetDependentConfigChainProblemIndex(
+ const std::vector<const Target*>& chain);
// Non-locked variables ------------------------------------------------------
//
« no previous file with comments | « no previous file | tools/gn/header_checker.cc » ('j') | tools/gn/header_checker.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698