OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/ui/search_engines/template_url_table_model.h" | 5 #include "chrome/browser/ui/search_engines/template_url_table_model.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/i18n/rtl.h" | 10 #include "base/i18n/rtl.h" |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
240 return kMainGroupID; | 240 return kMainGroupID; |
241 return row < last_other_engine_index_ ? kOtherGroupID : kExtensionGroupID; | 241 return row < last_other_engine_index_ ? kOtherGroupID : kExtensionGroupID; |
242 } | 242 } |
243 | 243 |
244 void TemplateURLTableModel::Remove(int index) { | 244 void TemplateURLTableModel::Remove(int index) { |
245 // Remove the observer while we modify the model, that way we don't need to | 245 // Remove the observer while we modify the model, that way we don't need to |
246 // worry about the model calling us back when we mutate it. | 246 // worry about the model calling us back when we mutate it. |
247 template_url_service_->RemoveObserver(this); | 247 template_url_service_->RemoveObserver(this); |
248 TemplateURL* template_url = GetTemplateURL(index); | 248 TemplateURL* template_url = GetTemplateURL(index); |
249 | 249 |
250 scoped_ptr<ModelEntry> entry(RemoveEntry(index)); | 250 std::unique_ptr<ModelEntry> entry(RemoveEntry(index)); |
251 | 251 |
252 // Make sure to remove from the table model first, otherwise the | 252 // Make sure to remove from the table model first, otherwise the |
253 // TemplateURL would be freed. | 253 // TemplateURL would be freed. |
254 template_url_service_->Remove(template_url); | 254 template_url_service_->Remove(template_url); |
255 template_url_service_->AddObserver(this); | 255 template_url_service_->AddObserver(this); |
256 } | 256 } |
257 | 257 |
258 void TemplateURLTableModel::Add(int index, | 258 void TemplateURLTableModel::Add(int index, |
259 const base::string16& short_name, | 259 const base::string16& short_name, |
260 const base::string16& keyword, | 260 const base::string16& keyword, |
261 const std::string& url) { | 261 const std::string& url) { |
262 DCHECK(index >= 0 && index <= RowCount()); | 262 DCHECK(index >= 0 && index <= RowCount()); |
263 DCHECK(!url.empty()); | 263 DCHECK(!url.empty()); |
264 template_url_service_->RemoveObserver(this); | 264 template_url_service_->RemoveObserver(this); |
265 TemplateURLData data; | 265 TemplateURLData data; |
266 data.SetShortName(short_name); | 266 data.SetShortName(short_name); |
267 data.SetKeyword(keyword); | 267 data.SetKeyword(keyword); |
268 data.SetURL(url); | 268 data.SetURL(url); |
269 TemplateURL* turl = new TemplateURL(data); | 269 TemplateURL* turl = new TemplateURL(data); |
270 template_url_service_->Add(turl); | 270 template_url_service_->Add(turl); |
271 scoped_ptr<ModelEntry> entry(new ModelEntry(this, turl)); | 271 std::unique_ptr<ModelEntry> entry(new ModelEntry(this, turl)); |
272 template_url_service_->AddObserver(this); | 272 template_url_service_->AddObserver(this); |
273 AddEntry(index, std::move(entry)); | 273 AddEntry(index, std::move(entry)); |
274 } | 274 } |
275 | 275 |
276 void TemplateURLTableModel::ModifyTemplateURL(int index, | 276 void TemplateURLTableModel::ModifyTemplateURL(int index, |
277 const base::string16& title, | 277 const base::string16& title, |
278 const base::string16& keyword, | 278 const base::string16& keyword, |
279 const std::string& url) { | 279 const std::string& url) { |
280 DCHECK(index >= 0 && index <= RowCount()); | 280 DCHECK(index >= 0 && index <= RowCount()); |
281 DCHECK(!url.empty()); | 281 DCHECK(!url.empty()); |
(...skipping 28 matching lines...) Expand all Loading... |
310 if (entry->template_url() == template_url) | 310 if (entry->template_url() == template_url) |
311 return static_cast<int>(i - entries_.begin()); | 311 return static_cast<int>(i - entries_.begin()); |
312 } | 312 } |
313 return -1; | 313 return -1; |
314 } | 314 } |
315 | 315 |
316 int TemplateURLTableModel::MoveToMainGroup(int index) { | 316 int TemplateURLTableModel::MoveToMainGroup(int index) { |
317 if (index < last_search_engine_index_) | 317 if (index < last_search_engine_index_) |
318 return index; // Already in the main group. | 318 return index; // Already in the main group. |
319 | 319 |
320 scoped_ptr<ModelEntry> current_entry(RemoveEntry(index)); | 320 std::unique_ptr<ModelEntry> current_entry(RemoveEntry(index)); |
321 const int new_index = last_search_engine_index_++; | 321 const int new_index = last_search_engine_index_++; |
322 AddEntry(new_index, std::move(current_entry)); | 322 AddEntry(new_index, std::move(current_entry)); |
323 return new_index; | 323 return new_index; |
324 } | 324 } |
325 | 325 |
326 int TemplateURLTableModel::MakeDefaultTemplateURL(int index) { | 326 int TemplateURLTableModel::MakeDefaultTemplateURL(int index) { |
327 if (index < 0 || index >= RowCount()) { | 327 if (index < 0 || index >= RowCount()) { |
328 NOTREACHED(); | 328 NOTREACHED(); |
329 return -1; | 329 return -1; |
330 } | 330 } |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 std::vector<ModelEntry*>::iterator i = | 366 std::vector<ModelEntry*>::iterator i = |
367 std::find(entries_.begin(), entries_.end(), entry); | 367 std::find(entries_.begin(), entries_.end(), entry); |
368 DCHECK(i != entries_.end()); | 368 DCHECK(i != entries_.end()); |
369 NotifyChanged(static_cast<int>(i - entries_.begin())); | 369 NotifyChanged(static_cast<int>(i - entries_.begin())); |
370 } | 370 } |
371 | 371 |
372 void TemplateURLTableModel::OnTemplateURLServiceChanged() { | 372 void TemplateURLTableModel::OnTemplateURLServiceChanged() { |
373 Reload(); | 373 Reload(); |
374 } | 374 } |
375 | 375 |
376 scoped_ptr<TemplateURLTableModel::ModelEntry> | 376 std::unique_ptr<TemplateURLTableModel::ModelEntry> |
377 TemplateURLTableModel::RemoveEntry(int index) { | 377 TemplateURLTableModel::RemoveEntry(int index) { |
378 scoped_ptr<ModelEntry> entry(entries_[index]); | 378 std::unique_ptr<ModelEntry> entry(entries_[index]); |
379 entries_.erase(index + entries_.begin()); | 379 entries_.erase(index + entries_.begin()); |
380 if (index < last_search_engine_index_) | 380 if (index < last_search_engine_index_) |
381 --last_search_engine_index_; | 381 --last_search_engine_index_; |
382 if (index < last_other_engine_index_) | 382 if (index < last_other_engine_index_) |
383 --last_other_engine_index_; | 383 --last_other_engine_index_; |
384 if (observer_) | 384 if (observer_) |
385 observer_->OnItemsRemoved(index, 1); | 385 observer_->OnItemsRemoved(index, 1); |
386 return entry; | 386 return entry; |
387 } | 387 } |
388 | 388 |
389 void TemplateURLTableModel::AddEntry(int index, scoped_ptr<ModelEntry> entry) { | 389 void TemplateURLTableModel::AddEntry(int index, |
| 390 std::unique_ptr<ModelEntry> entry) { |
390 entries_.insert(entries_.begin() + index, entry.release()); | 391 entries_.insert(entries_.begin() + index, entry.release()); |
391 if (index <= last_other_engine_index_) | 392 if (index <= last_other_engine_index_) |
392 ++last_other_engine_index_; | 393 ++last_other_engine_index_; |
393 if (observer_) | 394 if (observer_) |
394 observer_->OnItemsAdded(index, 1); | 395 observer_->OnItemsAdded(index, 1); |
395 } | 396 } |
OLD | NEW |