| Index: chrome/browser/extensions/extension_shelf_model.cc
|
| ===================================================================
|
| --- chrome/browser/extensions/extension_shelf_model.cc (revision 22246)
|
| +++ chrome/browser/extensions/extension_shelf_model.cc (working copy)
|
| @@ -39,13 +39,11 @@
|
| }
|
|
|
| ExtensionShelfModel::~ExtensionShelfModel() {
|
| - FOR_EACH_OBSERVER(ExtensionShelfModelObserver, observers_,
|
| - ShelfModelDeleting());
|
| -
|
| while (observers_.size())
|
| observers_.RemoveObserver(observers_.GetElementAt(0));
|
|
|
| - for (iterator t = toolstrips_.begin(); t != toolstrips_.end(); ++t)
|
| + ExtensionToolstrips::iterator t;
|
| + for (t = toolstrips_.begin(); t != toolstrips_.end(); ++t)
|
| delete t->host;
|
| toolstrips_.clear();
|
| }
|
| @@ -73,7 +71,7 @@
|
| }
|
|
|
| void ExtensionShelfModel::RemoveToolstripAt(int index) {
|
| - ExtensionHost* host = ToolstripAt(index).host;
|
| + ExtensionHost* host = ToolstripAt(index);
|
| FOR_EACH_OBSERVER(ExtensionShelfModelObserver, observers_,
|
| ToolstripRemovingAt(host, index));
|
| toolstrips_.erase(toolstrips_.begin() + index);
|
| @@ -96,54 +94,35 @@
|
| UpdatePrefs();
|
| }
|
|
|
| -int ExtensionShelfModel::IndexOfHost(ExtensionHost* host) {
|
| - for (iterator i = toolstrips_.begin(); i != toolstrips_.end(); ++i) {
|
| - if (i->host == host)
|
| +int ExtensionShelfModel::IndexOfToolstrip(ExtensionHost* toolstrip) {
|
| + ExtensionToolstrips::iterator i;
|
| + for (i = toolstrips_.begin(); i != toolstrips_.end(); ++i) {
|
| + if (i->host == toolstrip)
|
| return i - toolstrips_.begin();
|
| }
|
| return -1;
|
| }
|
|
|
| -ExtensionShelfModel::iterator ExtensionShelfModel::ToolstripForHost(
|
| - ExtensionHost* host) {
|
| - for (iterator i = toolstrips_.begin(); i != toolstrips_.end(); ++i) {
|
| - if (i->host == host)
|
| - return i;
|
| - }
|
| - return toolstrips_.end();
|
| +ExtensionHost* ExtensionShelfModel::ToolstripAt(int index) {
|
| + DCHECK(index >= 0);
|
| + return toolstrips_[index].host;
|
| }
|
|
|
| -const ExtensionShelfModel::ToolstripItem& ExtensionShelfModel::ToolstripAt(
|
| - int index) {
|
| +Extension::ToolstripInfo& ExtensionShelfModel::ToolstripInfoAt(int index) {
|
| DCHECK(index >= 0);
|
| - return toolstrips_[index];
|
| + return toolstrips_[index].info;
|
| }
|
|
|
| +void* ExtensionShelfModel::ToolstripDataAt(int index) {
|
| + DCHECK(index >= 0);
|
| + return toolstrips_[index].data;
|
| +}
|
| +
|
| void ExtensionShelfModel::SetToolstripDataAt(int index, void* data) {
|
| DCHECK(index >= 0);
|
| toolstrips_[index].data = data;
|
| }
|
|
|
| -void ExtensionShelfModel::ExpandToolstrip(iterator toolstrip,
|
| - const GURL& url, int height) {
|
| - if (toolstrip == end())
|
| - return;
|
| - toolstrip->height = height;
|
| - toolstrip->url = url;
|
| - FOR_EACH_OBSERVER(ExtensionShelfModelObserver, observers_,
|
| - ToolstripChanged(toolstrip));
|
| -}
|
| -
|
| -void ExtensionShelfModel::CollapseToolstrip(iterator toolstrip,
|
| - const GURL& url) {
|
| - if (toolstrip == end())
|
| - return;
|
| - toolstrip->height = 0;
|
| - toolstrip->url = url;
|
| - FOR_EACH_OBSERVER(ExtensionShelfModelObserver, observers_,
|
| - ToolstripChanged(toolstrip));
|
| -}
|
| -
|
| void ExtensionShelfModel::Observe(NotificationType type,
|
| const NotificationSource& source,
|
| const NotificationDetails& details) {
|
| @@ -157,8 +136,7 @@
|
| break;
|
| case NotificationType::EXTENSIONS_READY:
|
| if (browser_->profile()->GetExtensionsService()) {
|
| - AddExtensions(
|
| - browser_->profile()->GetExtensionsService()->extensions());
|
| + AddExtensions(browser_->profile()->GetExtensionsService()->extensions());
|
| SortToolstrips();
|
| }
|
| ready_ = true;
|
| @@ -189,7 +167,6 @@
|
| item.host = manager->CreateView(extension, url, browser_);
|
| item.info = *toolstrip;
|
| item.data = NULL;
|
| - item.height = 0;
|
| AppendToolstrip(item);
|
| }
|
| }
|
| @@ -205,7 +182,7 @@
|
| void ExtensionShelfModel::RemoveExtension(Extension* extension) {
|
| bool changed = false;
|
| for (int i = count() - 1; i >= 0; --i) {
|
| - ExtensionHost* t = ToolstripAt(i).host;
|
| + ExtensionHost* t = ToolstripAt(i);
|
| if (t->extension()->id() == extension->id()) {
|
| changed = true;
|
| RemoveToolstripAt(i);
|
| @@ -225,7 +202,7 @@
|
| // It's easiest to just rebuild the list each time.
|
| ExtensionPrefs::URLList urls;
|
| for (int i = 0; i < count(); ++i)
|
| - urls.push_back(ToolstripAt(i).host->GetURL());
|
| + urls.push_back(ToolstripAt(i)->GetURL());
|
| prefs_->SetShelfToolstripOrder(urls);
|
|
|
| NotificationService::current()->Notify(
|
| @@ -236,15 +213,15 @@
|
|
|
| void ExtensionShelfModel::SortToolstrips() {
|
| ExtensionPrefs::URLList urls = prefs_->GetShelfToolstripOrder();
|
| - ToolstripList copy =
|
| - ToolstripList(toolstrips_.begin(), toolstrips_.end());
|
| + ExtensionToolstrips copy =
|
| + ExtensionToolstrips(toolstrips_.begin(), toolstrips_.end());
|
| toolstrips_.clear();
|
|
|
| // Go through the urls and find the matching toolstrip, re-adding it to the
|
| // new list in the proper order.
|
| for (size_t i = 0; i < urls.size(); ++i) {
|
| GURL& url = urls[i];
|
| - for (iterator toolstrip = copy.begin();
|
| + for (ExtensionToolstrips::iterator toolstrip = copy.begin();
|
| toolstrip != copy.end(); ++toolstrip) {
|
| if (url == toolstrip->host->GetURL()) {
|
| // Note that it's technically possible for the same URL to appear in
|
| @@ -261,7 +238,7 @@
|
|
|
| // Any toolstrips remaining in |copy| were somehow missing from the prefs,
|
| // so just append them to the end.
|
| - for (iterator toolstrip = copy.begin();
|
| + for (ExtensionToolstrips::iterator toolstrip = copy.begin();
|
| toolstrip != copy.end(); ++toolstrip) {
|
| toolstrips_.push_back(*toolstrip);
|
| }
|
|
|