Home | History | Annotate | Download | only in automation
      1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/automation/automation_provider_list.h"
      6 
      7 #include <algorithm>
      8 
      9 #include "base/logging.h"
     10 #include "chrome/browser/automation/automation_provider.h"
     11 
     12 AutomationProviderList* AutomationProviderList::instance_ = NULL;
     13 
     14 AutomationProviderList::AutomationProviderList() {
     15 }
     16 
     17 AutomationProviderList::~AutomationProviderList() {
     18   iterator iter = automation_providers_.begin();
     19   while (iter != automation_providers_.end()) {
     20     (*iter)->Release();
     21     iter = automation_providers_.erase(iter);
     22   }
     23   instance_ = NULL;
     24 }
     25 
     26 bool AutomationProviderList::AddProvider(AutomationProvider* provider) {
     27   provider->AddRef();
     28   automation_providers_.push_back(provider);
     29   return true;
     30 }
     31 
     32 bool AutomationProviderList::RemoveProvider(AutomationProvider* provider) {
     33   const iterator remove_provider =
     34     find(automation_providers_.begin(), automation_providers_.end(), provider);
     35   if (remove_provider != automation_providers_.end()) {
     36     (*remove_provider)->Release();
     37     automation_providers_.erase(remove_provider);
     38     if (automation_providers_.empty())
     39       OnLastProviderRemoved();
     40     return true;
     41   }
     42   return false;
     43 }
     44 
     45 AutomationProviderList* AutomationProviderList::GetInstance() {
     46   if (!instance_) {
     47     instance_ = new AutomationProviderList;
     48   }
     49   DCHECK(NULL != instance_);
     50   return instance_;
     51 }
     52