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

Side by Side Diff: webkit/glue/plugins/plugin_group.cc

Issue 5783005: PluginList: Unit tests and bugfixes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address comments; rebase Created 10 years 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 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "webkit/glue/plugins/plugin_group.h" 5 #include "webkit/glue/plugins/plugin_group.h"
6 6
7 #include "base/linked_ptr.h" 7 #include "base/linked_ptr.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "base/sys_string_conversions.h" 9 #include "base/sys_string_conversions.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 92
93 PluginGroup::PluginGroup(const string16& group_name, 93 PluginGroup::PluginGroup(const string16& group_name,
94 const string16& name_matcher, 94 const string16& name_matcher,
95 const std::string& update_url, 95 const std::string& update_url,
96 const std::string& identifier) 96 const std::string& identifier)
97 : identifier_(identifier), 97 : identifier_(identifier),
98 group_name_(group_name), 98 group_name_(group_name),
99 name_matcher_(name_matcher), 99 name_matcher_(name_matcher),
100 update_url_(update_url), 100 update_url_(update_url),
101 enabled_(false), 101 enabled_(false),
102 version_(Version::GetVersionFromString("0")) { 102 version_(Version::GetVersionFromString("0")),
103 plugin_list_(NULL) {
103 } 104 }
104 105
105 void PluginGroup::InitFrom(const PluginGroup& other) { 106 void PluginGroup::InitFrom(const PluginGroup& other) {
106 enabled_ = false;
107 identifier_ = other.identifier_; 107 identifier_ = other.identifier_;
108 group_name_ = other.group_name_; 108 group_name_ = other.group_name_;
109 name_matcher_ = other.name_matcher_; 109 name_matcher_ = other.name_matcher_;
110 description_ = other.description_;
110 update_url_ = other.update_url_; 111 update_url_ = other.update_url_;
111 for (size_t i = 0; i < other.version_ranges_.size(); ++i)
112 version_ranges_.push_back(other.version_ranges_[i]);
113 DCHECK_EQ(other.web_plugin_infos_.size(), other.web_plugin_positions_.size());
114 std::list<WebPluginInfo>::const_iterator it = other.web_plugin_infos_.begin();
115 std::vector<int>::const_iterator itprio = other.web_plugin_positions_.begin();
116 for (; it != other.web_plugin_infos_.end(); ++it, ++itprio)
117 AddPlugin(*it, *itprio, NULL);
118 if (!version_.get())
119 version_.reset(Version::GetVersionFromString("0"));
120 enabled_ = other.enabled_; 112 enabled_ = other.enabled_;
113 version_ranges_ = other.version_ranges_;
114 version_.reset(other.version_->Clone());
115 web_plugin_infos_ = other.web_plugin_infos_;
116 web_plugin_positions_ = other.web_plugin_positions_;
117 plugin_list_ = other.plugin_list_;
121 } 118 }
122 119
123 PluginGroup::PluginGroup(const PluginGroup& other) { 120 PluginGroup::PluginGroup(const PluginGroup& other) {
124 InitFrom(other); 121 InitFrom(other);
125 } 122 }
126 123
127 PluginGroup& PluginGroup::operator=(const PluginGroup& other) { 124 PluginGroup& PluginGroup::operator=(const PluginGroup& other) {
128 version_ranges_.clear();
129 InitFrom(other); 125 InitFrom(other);
130 return *this; 126 return *this;
131 } 127 }
132 128
133 /*static*/ 129 /*static*/
134 PluginGroup* PluginGroup::FromPluginGroupDefinition( 130 PluginGroup* PluginGroup::FromPluginGroupDefinition(
135 const PluginGroupDefinition& definition) { 131 const PluginGroupDefinition& definition) {
136 PluginGroup* group = new PluginGroup(ASCIIToUTF16(definition.name), 132 PluginGroup* group = new PluginGroup(ASCIIToUTF16(definition.name),
137 ASCIIToUTF16(definition.name_matcher), 133 ASCIIToUTF16(definition.name_matcher),
138 definition.update_url, 134 definition.update_url,
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 } 259 }
264 260
265 std::list<WebPluginInfo>& PluginGroup::GetPlugins() { 261 std::list<WebPluginInfo>& PluginGroup::GetPlugins() {
266 return web_plugin_infos_; 262 return web_plugin_infos_;
267 } 263 }
268 264
269 std::vector<int>& PluginGroup::GetPluginPositions() { 265 std::vector<int>& PluginGroup::GetPluginPositions() {
270 return web_plugin_positions_; 266 return web_plugin_positions_;
271 } 267 }
272 268
269 bool PluginGroup::IsEmpty() const {
270 return web_plugin_infos_.empty();
271 }
272
273 string16 PluginGroup::GetGroupName() const { 273 string16 PluginGroup::GetGroupName() const {
274 if (!group_name_.empty()) 274 if (!group_name_.empty())
275 return group_name_; 275 return group_name_;
276 DCHECK_EQ(1u, web_plugin_infos_.size()); 276 DCHECK_EQ(1u, web_plugin_infos_.size());
277 FilePath::StringType path = 277 FilePath::StringType path =
278 web_plugin_infos_.front().path.BaseName().RemoveExtension().value(); 278 web_plugin_infos_.front().path.BaseName().RemoveExtension().value();
279 #if defined(OS_POSIX) 279 #if defined(OS_POSIX)
280 return UTF8ToUTF16(path); 280 return UTF8ToUTF16(path);
281 #elif defined(OS_WIN) 281 #elif defined(OS_WIN)
282 return WideToUTF16(path); 282 return WideToUTF16(path);
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 void PluginGroup::DisableOutdatedPlugins() { 392 void PluginGroup::DisableOutdatedPlugins() {
393 bool first_enabled = true; 393 bool first_enabled = true;
394 394
395 for (std::list<WebPluginInfo>::iterator it = web_plugin_infos_.begin(); 395 for (std::list<WebPluginInfo>::iterator it = web_plugin_infos_.begin();
396 it != web_plugin_infos_.end(); ++it) { 396 it != web_plugin_infos_.end(); ++it) {
397 scoped_ptr<Version> version(CreateVersionFromString(it->version)); 397 scoped_ptr<Version> version(CreateVersionFromString(it->version));
398 if (version.get()) { 398 if (version.get()) {
399 bool plugin_is_outdated = false; 399 bool plugin_is_outdated = false;
400 for (size_t i = 0; i < version_ranges_.size(); ++i) { 400 for (size_t i = 0; i < version_ranges_.size(); ++i) {
401 if (IsPluginOutdated(*version, version_ranges_[i])) { 401 if (IsPluginOutdated(*version, version_ranges_[i])) {
402 NPAPI::PluginList::Singleton()->DisablePlugin(it->path, false); 402 GetPluginList()->DisablePlugin(it->path, false);
403 plugin_is_outdated = true; 403 plugin_is_outdated = true;
404 break; 404 break;
405 } 405 }
406 } 406 }
407 if (!plugin_is_outdated && first_enabled) { 407 if (!plugin_is_outdated && first_enabled) {
408 first_enabled = false; 408 first_enabled = false;
409 UpdateDescriptionAndVersion(*it); 409 UpdateDescriptionAndVersion(*it);
410 } 410 }
411 } 411 }
412 } 412 }
413 } 413 }
414 414
415 void PluginGroup::Enable(bool enable) { 415 void PluginGroup::Enable(bool enable) {
416 bool enabled_plugin_exists = false; 416 bool enabled_plugin_exists = false;
417 for (std::list<WebPluginInfo>::iterator it = web_plugin_infos_.begin(); 417 for (std::list<WebPluginInfo>::iterator it = web_plugin_infos_.begin();
418 it != web_plugin_infos_.end(); ++it) { 418 it != web_plugin_infos_.end(); ++it) {
419 bool policy_disabled = IsPluginNameDisabledByPolicy(it->name); 419 bool policy_disabled = IsPluginNameDisabledByPolicy(it->name);
420 if (enable && !policy_disabled) { 420 if (enable && !policy_disabled) {
421 NPAPI::PluginList::Singleton()->EnablePlugin(it->path); 421 GetPluginList()->EnablePlugin(it->path);
422 enabled_plugin_exists = true; 422 enabled_plugin_exists = true;
423 } else { 423 } else {
424 NPAPI::PluginList::Singleton()->DisablePlugin(it->path, policy_disabled); 424 GetPluginList()->DisablePlugin(it->path, policy_disabled);
425 } 425 }
426 } 426 }
427 enabled_ = enabled_plugin_exists; 427 enabled_ = enabled_plugin_exists;
428 } 428 }
429 429
430 void PluginGroup::RefreshEnabledState() { 430 void PluginGroup::RefreshEnabledState() {
431 bool enabled_plugin_exists = false; 431 bool enabled_plugin_exists = false;
432 for (std::list<WebPluginInfo>::iterator it = web_plugin_infos_.begin(); 432 for (std::list<WebPluginInfo>::iterator it = web_plugin_infos_.begin();
433 it != web_plugin_infos_.end(); ++it) { 433 it != web_plugin_infos_.end(); ++it) {
434 if (it->enabled) { 434 if (it->enabled) {
435 enabled_plugin_exists = true; 435 enabled_plugin_exists = true;
436 break; 436 break;
437 } 437 }
438 } 438 }
439 enabled_ = enabled_plugin_exists; 439 enabled_ = enabled_plugin_exists;
440 } 440 }
441
442 NPAPI::PluginList* PluginGroup::GetPluginList() const {
443 if (plugin_list_)
444 return plugin_list_;
445 return NPAPI::PluginList::Singleton();
446 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698