OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/api/declarative_content/declarative_content_
css_condition_tracker.h" | 5 #include "chrome/browser/extensions/api/declarative_content/declarative_content_
css_condition_tracker.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
| 9 #include "base/memory/ptr_util.h" |
9 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
10 #include "base/strings/stringprintf.h" | 11 #include "base/strings/stringprintf.h" |
11 #include "base/values.h" | 12 #include "base/values.h" |
12 #include "chrome/browser/chrome_notification_types.h" | 13 #include "chrome/browser/chrome_notification_types.h" |
13 #include "chrome/browser/extensions/api/declarative_content/content_constants.h" | 14 #include "chrome/browser/extensions/api/declarative_content/content_constants.h" |
14 #include "chrome/browser/extensions/api/declarative_content/content_predicate_ev
aluator.h" | 15 #include "chrome/browser/extensions/api/declarative_content/content_predicate_ev
aluator.h" |
15 #include "chrome/browser/profiles/profile.h" | 16 #include "chrome/browser/profiles/profile.h" |
16 #include "content/public/browser/navigation_details.h" | 17 #include "content/public/browser/navigation_details.h" |
17 #include "content/public/browser/notification_service.h" | 18 #include "content/public/browser/notification_service.h" |
18 #include "content/public/browser/notification_source.h" | 19 #include "content/public/browser/notification_source.h" |
(...skipping 11 matching lines...) Expand all Loading... |
30 } // namespace | 31 } // namespace |
31 | 32 |
32 // | 33 // |
33 // DeclarativeContentCssPredicate | 34 // DeclarativeContentCssPredicate |
34 // | 35 // |
35 | 36 |
36 DeclarativeContentCssPredicate::~DeclarativeContentCssPredicate() { | 37 DeclarativeContentCssPredicate::~DeclarativeContentCssPredicate() { |
37 } | 38 } |
38 | 39 |
39 // static | 40 // static |
40 scoped_ptr<DeclarativeContentCssPredicate> | 41 std::unique_ptr<DeclarativeContentCssPredicate> |
41 DeclarativeContentCssPredicate::Create( | 42 DeclarativeContentCssPredicate::Create(ContentPredicateEvaluator* evaluator, |
42 ContentPredicateEvaluator* evaluator, | 43 const base::Value& value, |
43 const base::Value& value, | 44 std::string* error) { |
44 std::string* error) { | |
45 std::vector<std::string> css_rules; | 45 std::vector<std::string> css_rules; |
46 const base::ListValue* css_rules_value = nullptr; | 46 const base::ListValue* css_rules_value = nullptr; |
47 if (value.GetAsList(&css_rules_value)) { | 47 if (value.GetAsList(&css_rules_value)) { |
48 for (size_t i = 0; i < css_rules_value->GetSize(); ++i) { | 48 for (size_t i = 0; i < css_rules_value->GetSize(); ++i) { |
49 std::string css_rule; | 49 std::string css_rule; |
50 if (!css_rules_value->GetString(i, &css_rule)) { | 50 if (!css_rules_value->GetString(i, &css_rule)) { |
51 *error = base::StringPrintf(kInvalidTypeOfParameter, | 51 *error = base::StringPrintf(kInvalidTypeOfParameter, |
52 declarative_content_constants::kCss); | 52 declarative_content_constants::kCss); |
53 return scoped_ptr<DeclarativeContentCssPredicate>(); | 53 return std::unique_ptr<DeclarativeContentCssPredicate>(); |
54 } | 54 } |
55 css_rules.push_back(css_rule); | 55 css_rules.push_back(css_rule); |
56 } | 56 } |
57 } else { | 57 } else { |
58 *error = base::StringPrintf(kInvalidTypeOfParameter, | 58 *error = base::StringPrintf(kInvalidTypeOfParameter, |
59 declarative_content_constants::kCss); | 59 declarative_content_constants::kCss); |
60 return scoped_ptr<DeclarativeContentCssPredicate>(); | 60 return std::unique_ptr<DeclarativeContentCssPredicate>(); |
61 } | 61 } |
62 | 62 |
63 return !css_rules.empty() ? | 63 return !css_rules.empty() |
64 make_scoped_ptr( | 64 ? base::WrapUnique( |
65 new DeclarativeContentCssPredicate(evaluator, css_rules)) : | 65 new DeclarativeContentCssPredicate(evaluator, css_rules)) |
66 scoped_ptr<DeclarativeContentCssPredicate>(); | 66 : std::unique_ptr<DeclarativeContentCssPredicate>(); |
67 } | 67 } |
68 | 68 |
69 ContentPredicateEvaluator* | 69 ContentPredicateEvaluator* |
70 DeclarativeContentCssPredicate::GetEvaluator() const { | 70 DeclarativeContentCssPredicate::GetEvaluator() const { |
71 return evaluator_; | 71 return evaluator_; |
72 } | 72 } |
73 | 73 |
74 DeclarativeContentCssPredicate::DeclarativeContentCssPredicate( | 74 DeclarativeContentCssPredicate::DeclarativeContentCssPredicate( |
75 ContentPredicateEvaluator* evaluator, | 75 ContentPredicateEvaluator* evaluator, |
76 const std::vector<std::string>& css_selectors) | 76 const std::vector<std::string>& css_selectors) |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 } | 155 } |
156 | 156 |
157 DeclarativeContentCssConditionTracker:: | 157 DeclarativeContentCssConditionTracker:: |
158 ~DeclarativeContentCssConditionTracker() {} | 158 ~DeclarativeContentCssConditionTracker() {} |
159 | 159 |
160 std::string DeclarativeContentCssConditionTracker:: | 160 std::string DeclarativeContentCssConditionTracker:: |
161 GetPredicateApiAttributeName() const { | 161 GetPredicateApiAttributeName() const { |
162 return declarative_content_constants::kCss; | 162 return declarative_content_constants::kCss; |
163 } | 163 } |
164 | 164 |
165 scoped_ptr<const ContentPredicate> DeclarativeContentCssConditionTracker:: | 165 std::unique_ptr<const ContentPredicate> |
166 CreatePredicate(const Extension* extension, | 166 DeclarativeContentCssConditionTracker::CreatePredicate( |
167 const base::Value& value, | 167 const Extension* extension, |
168 std::string* error) { | 168 const base::Value& value, |
| 169 std::string* error) { |
169 return DeclarativeContentCssPredicate::Create(this, value, error); | 170 return DeclarativeContentCssPredicate::Create(this, value, error); |
170 } | 171 } |
171 | 172 |
172 void DeclarativeContentCssConditionTracker::TrackPredicates( | 173 void DeclarativeContentCssConditionTracker::TrackPredicates( |
173 const std::map<const void*, std::vector<const ContentPredicate*>>& | 174 const std::map<const void*, std::vector<const ContentPredicate*>>& |
174 predicates) { | 175 predicates) { |
175 bool watched_selectors_updated = false; | 176 bool watched_selectors_updated = false; |
176 for (const auto& group_predicates_pair : predicates) { | 177 for (const auto& group_predicates_pair : predicates) { |
177 for (const ContentPredicate* predicate : group_predicates_pair.second) { | 178 for (const ContentPredicate* predicate : group_predicates_pair.second) { |
178 DCHECK_EQ(this, predicate->GetEvaluator()); | 179 DCHECK_EQ(this, predicate->GetEvaluator()); |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
304 } | 305 } |
305 } | 306 } |
306 | 307 |
307 void DeclarativeContentCssConditionTracker::DeletePerWebContentsTracker( | 308 void DeclarativeContentCssConditionTracker::DeletePerWebContentsTracker( |
308 content::WebContents* contents) { | 309 content::WebContents* contents) { |
309 DCHECK(ContainsKey(per_web_contents_tracker_, contents)); | 310 DCHECK(ContainsKey(per_web_contents_tracker_, contents)); |
310 per_web_contents_tracker_.erase(contents); | 311 per_web_contents_tracker_.erase(contents); |
311 } | 312 } |
312 | 313 |
313 } // namespace extensions | 314 } // namespace extensions |
OLD | NEW |