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

Side by Side Diff: chrome/browser/automation/automation_provider_observers.cc

Issue 15987009: Update chrome/ to use WeakPtr<T>::get() instead of implicit "operator T*" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 months 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
« no previous file with comments | « no previous file | chrome/browser/automation/testing_automation_provider.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/automation/automation_provider_observers.h" 5 #include "chrome/browser/automation/automation_provider_observers.h"
6 6
7 #include <deque> 7 #include <deque>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 } 196 }
197 items->Append(item); 197 items->Append(item);
198 } 198 }
199 DictionaryValue* return_value = new DictionaryValue; 199 DictionaryValue* return_value = new DictionaryValue;
200 return_value->Set("tabs", items); 200 return_value->Set("tabs", items);
201 return return_value; 201 return return_value;
202 } 202 }
203 203
204 void InitialLoadObserver::ConditionMet() { 204 void InitialLoadObserver::ConditionMet() {
205 registrar_.RemoveAll(); 205 registrar_.RemoveAll();
206 if (automation_) 206 if (automation_.get())
207 automation_->OnInitialTabLoadsComplete(); 207 automation_->OnInitialTabLoadsComplete();
208 } 208 }
209 209
210 NewTabUILoadObserver::NewTabUILoadObserver(AutomationProvider* automation, 210 NewTabUILoadObserver::NewTabUILoadObserver(AutomationProvider* automation,
211 Profile* profile) 211 Profile* profile)
212 : automation_(automation->AsWeakPtr()) { 212 : automation_(automation->AsWeakPtr()) {
213 registrar_.Add(this, chrome::NOTIFICATION_INITIAL_NEW_TAB_UI_LOAD, 213 registrar_.Add(this, chrome::NOTIFICATION_INITIAL_NEW_TAB_UI_LOAD,
214 content::Source<Profile>(profile)); 214 content::Source<Profile>(profile));
215 } 215 }
216 216
217 NewTabUILoadObserver::~NewTabUILoadObserver() { 217 NewTabUILoadObserver::~NewTabUILoadObserver() {
218 } 218 }
219 219
220 void NewTabUILoadObserver::Observe(int type, 220 void NewTabUILoadObserver::Observe(int type,
221 const content::NotificationSource& source, 221 const content::NotificationSource& source,
222 const content::NotificationDetails& details) { 222 const content::NotificationDetails& details) {
223 if (type == chrome::NOTIFICATION_INITIAL_NEW_TAB_UI_LOAD) { 223 if (type == chrome::NOTIFICATION_INITIAL_NEW_TAB_UI_LOAD) {
224 content::Details<int> load_time(details); 224 content::Details<int> load_time(details);
225 if (automation_) { 225 if (automation_.get()) {
226 automation_->Send( 226 automation_->Send(
227 new AutomationMsg_InitialNewTabUILoadComplete(*load_time.ptr())); 227 new AutomationMsg_InitialNewTabUILoadComplete(*load_time.ptr()));
228 } 228 }
229 } else { 229 } else {
230 NOTREACHED(); 230 NOTREACHED();
231 } 231 }
232 } 232 }
233 233
234 NavigationControllerRestoredObserver::NavigationControllerRestoredObserver( 234 NavigationControllerRestoredObserver::NavigationControllerRestoredObserver(
235 AutomationProvider* automation, 235 AutomationProvider* automation,
(...skipping 21 matching lines...) Expand all
257 SendDone(); 257 SendDone();
258 } 258 }
259 } 259 }
260 260
261 bool NavigationControllerRestoredObserver::FinishedRestoring() { 261 bool NavigationControllerRestoredObserver::FinishedRestoring() {
262 return (!controller_->NeedsReload() && !controller_->GetPendingEntry() && 262 return (!controller_->NeedsReload() && !controller_->GetPendingEntry() &&
263 !controller_->GetWebContents()->IsLoading()); 263 !controller_->GetWebContents()->IsLoading());
264 } 264 }
265 265
266 void NavigationControllerRestoredObserver::SendDone() { 266 void NavigationControllerRestoredObserver::SendDone() {
267 if (automation_) { 267 if (automation_.get()) {
268 AutomationJSONReply(automation_, reply_message_.release()) 268 AutomationJSONReply(automation_.get(), reply_message_.release())
269 .SendSuccess(NULL); 269 .SendSuccess(NULL);
270 } 270 }
271 delete this; 271 delete this;
272 } 272 }
273 273
274 NavigationNotificationObserver::NavigationNotificationObserver( 274 NavigationNotificationObserver::NavigationNotificationObserver(
275 NavigationController* controller, 275 NavigationController* controller,
276 AutomationProvider* automation, 276 AutomationProvider* automation,
277 IPC::Message* reply_message, 277 IPC::Message* reply_message,
278 int number_of_navigations, 278 int number_of_navigations,
(...skipping 23 matching lines...) Expand all
302 if (include_current_navigation && controller->GetWebContents()->IsLoading()) 302 if (include_current_navigation && controller->GetWebContents()->IsLoading())
303 navigation_started_ = true; 303 navigation_started_ = true;
304 } 304 }
305 305
306 NavigationNotificationObserver::~NavigationNotificationObserver() { 306 NavigationNotificationObserver::~NavigationNotificationObserver() {
307 } 307 }
308 308
309 void NavigationNotificationObserver::Observe( 309 void NavigationNotificationObserver::Observe(
310 int type, const content::NotificationSource& source, 310 int type, const content::NotificationSource& source,
311 const content::NotificationDetails& details) { 311 const content::NotificationDetails& details) {
312 if (!automation_) { 312 if (!automation_.get()) {
313 delete this; 313 delete this;
314 return; 314 return;
315 } 315 }
316 316
317 // We listen for 2 events to determine when the navigation started because: 317 // We listen for 2 events to determine when the navigation started because:
318 // - when this is used by the WaitForNavigation method, we might be invoked 318 // - when this is used by the WaitForNavigation method, we might be invoked
319 // afer the load has started (but not after the entry was committed, as 319 // afer the load has started (but not after the entry was committed, as
320 // WaitForNavigation compares times of the last navigation). 320 // WaitForNavigation compares times of the last navigation).
321 // - when this is used with a page requiring authentication, we will not get 321 // - when this is used with a page requiring authentication, we will not get
322 // a chrome::NAV_ENTRY_COMMITTED until after we authenticate, so 322 // a chrome::NAV_ENTRY_COMMITTED until after we authenticate, so
(...skipping 18 matching lines...) Expand all
341 ConditionMet(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED); 341 ConditionMet(AUTOMATION_MSG_NAVIGATION_AUTH_NEEDED);
342 } else if (type == chrome::NOTIFICATION_APP_MODAL_DIALOG_SHOWN) { 342 } else if (type == chrome::NOTIFICATION_APP_MODAL_DIALOG_SHOWN) {
343 ConditionMet(AUTOMATION_MSG_NAVIGATION_BLOCKED_BY_MODAL_DIALOG); 343 ConditionMet(AUTOMATION_MSG_NAVIGATION_BLOCKED_BY_MODAL_DIALOG);
344 } else { 344 } else {
345 NOTREACHED(); 345 NOTREACHED();
346 } 346 }
347 } 347 }
348 348
349 void NavigationNotificationObserver::ConditionMet( 349 void NavigationNotificationObserver::ConditionMet(
350 AutomationMsg_NavigationResponseValues navigation_result) { 350 AutomationMsg_NavigationResponseValues navigation_result) {
351 if (automation_) { 351 if (automation_.get()) {
352 if (use_json_interface_) { 352 if (use_json_interface_) {
353 if (navigation_result == AUTOMATION_MSG_NAVIGATION_SUCCESS) { 353 if (navigation_result == AUTOMATION_MSG_NAVIGATION_SUCCESS) {
354 DictionaryValue dict; 354 DictionaryValue dict;
355 dict.SetInteger("result", navigation_result); 355 dict.SetInteger("result", navigation_result);
356 AutomationJSONReply(automation_, reply_message_.release()).SendSuccess( 356 AutomationJSONReply(automation_.get(), reply_message_.release())
357 &dict); 357 .SendSuccess(&dict);
358 } else { 358 } else {
359 AutomationJSONReply(automation_, reply_message_.release()).SendError( 359 AutomationJSONReply(automation_.get(), reply_message_.release())
360 base::StringPrintf("Navigation failed with error code=%d.", 360 .SendError(base::StringPrintf(
361 navigation_result)); 361 "Navigation failed with error code=%d.", navigation_result));
362 } 362 }
363 } else { 363 } else {
364 IPC::ParamTraits<int>::Write( 364 IPC::ParamTraits<int>::Write(
365 reply_message_.get(), navigation_result); 365 reply_message_.get(), navigation_result);
366 automation_->Send(reply_message_.release()); 366 automation_->Send(reply_message_.release());
367 } 367 }
368 } 368 }
369 369
370 delete this; 370 delete this;
371 } 371 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 automation), 405 automation),
406 parent_(parent), 406 parent_(parent),
407 reply_message_(reply_message), 407 reply_message_(reply_message),
408 use_json_interface_(use_json_interface) { 408 use_json_interface_(use_json_interface) {
409 } 409 }
410 410
411 TabAppendedNotificationObserver::~TabAppendedNotificationObserver() {} 411 TabAppendedNotificationObserver::~TabAppendedNotificationObserver() {}
412 412
413 void TabAppendedNotificationObserver::ObserveTab( 413 void TabAppendedNotificationObserver::ObserveTab(
414 NavigationController* controller) { 414 NavigationController* controller) {
415 if (!automation_ || !reply_message_.get()) 415 if (!automation_.get() || !reply_message_.get())
416 return; 416 return;
417 417
418 if (automation_->GetIndexForNavigationController(controller, parent_) == 418 if (automation_->GetIndexForNavigationController(controller, parent_) ==
419 TabStripModel::kNoTab) { 419 TabStripModel::kNoTab) {
420 // This tab notification doesn't belong to the parent_. 420 // This tab notification doesn't belong to the parent_.
421 return; 421 return;
422 } 422 }
423 423
424 new NavigationNotificationObserver(controller, automation_, 424 new NavigationNotificationObserver(controller,
425 automation_.get(),
425 reply_message_.release(), 426 reply_message_.release(),
426 1, false, use_json_interface_); 427 1,
428 false,
429 use_json_interface_);
427 } 430 }
428 431
429 IPC::Message* TabAppendedNotificationObserver::ReleaseReply() { 432 IPC::Message* TabAppendedNotificationObserver::ReleaseReply() {
430 return reply_message_.release(); 433 return reply_message_.release();
431 } 434 }
432 435
433 TabClosedNotificationObserver::TabClosedNotificationObserver( 436 TabClosedNotificationObserver::TabClosedNotificationObserver(
434 AutomationProvider* automation, 437 AutomationProvider* automation,
435 bool wait_until_closed, 438 bool wait_until_closed,
436 IPC::Message* reply_message, 439 IPC::Message* reply_message,
437 bool use_json_interface) 440 bool use_json_interface)
438 : TabStripNotificationObserver((wait_until_closed ? 441 : TabStripNotificationObserver((wait_until_closed ?
439 static_cast<int>(content::NOTIFICATION_WEB_CONTENTS_DESTROYED) : 442 static_cast<int>(content::NOTIFICATION_WEB_CONTENTS_DESTROYED) :
440 static_cast<int>(chrome::NOTIFICATION_TAB_CLOSING)), automation), 443 static_cast<int>(chrome::NOTIFICATION_TAB_CLOSING)), automation),
441 reply_message_(reply_message), 444 reply_message_(reply_message),
442 use_json_interface_(use_json_interface), 445 use_json_interface_(use_json_interface),
443 for_browser_command_(false) { 446 for_browser_command_(false) {
444 } 447 }
445 448
446 TabClosedNotificationObserver::~TabClosedNotificationObserver() {} 449 TabClosedNotificationObserver::~TabClosedNotificationObserver() {}
447 450
448 void TabClosedNotificationObserver::ObserveTab( 451 void TabClosedNotificationObserver::ObserveTab(
449 NavigationController* controller) { 452 NavigationController* controller) {
450 if (!automation_) 453 if (!automation_.get())
451 return; 454 return;
452 455
453 if (use_json_interface_) { 456 if (use_json_interface_) {
454 AutomationJSONReply(automation_, 457 AutomationJSONReply(automation_.get(), reply_message_.release())
455 reply_message_.release()).SendSuccess(NULL); 458 .SendSuccess(NULL);
456 } else { 459 } else {
457 if (for_browser_command_) { 460 if (for_browser_command_) {
458 AutomationMsg_WindowExecuteCommand::WriteReplyParams(reply_message_.get(), 461 AutomationMsg_WindowExecuteCommand::WriteReplyParams(reply_message_.get(),
459 true); 462 true);
460 } else { 463 } else {
461 AutomationMsg_CloseTab::WriteReplyParams(reply_message_.get(), true); 464 AutomationMsg_CloseTab::WriteReplyParams(reply_message_.get(), true);
462 } 465 }
463 automation_->Send(reply_message_.release()); 466 automation_->Send(reply_message_.release());
464 } 467 }
465 } 468 }
(...skipping 24 matching lines...) Expand all
490 bool foreground) { 493 bool foreground) {
491 CheckTabCount(); 494 CheckTabCount();
492 } 495 }
493 496
494 void TabCountChangeObserver::TabDetachedAt(WebContents* contents, 497 void TabCountChangeObserver::TabDetachedAt(WebContents* contents,
495 int index) { 498 int index) {
496 CheckTabCount(); 499 CheckTabCount();
497 } 500 }
498 501
499 void TabCountChangeObserver::TabStripModelDeleted() { 502 void TabCountChangeObserver::TabStripModelDeleted() {
500 if (automation_) { 503 if (automation_.get()) {
501 AutomationMsg_WaitForTabCountToBecome::WriteReplyParams( 504 AutomationMsg_WaitForTabCountToBecome::WriteReplyParams(
502 reply_message_.get(), false); 505 reply_message_.get(), false);
503 automation_->Send(reply_message_.release()); 506 automation_->Send(reply_message_.release());
504 } 507 }
505 508
506 delete this; 509 delete this;
507 } 510 }
508 511
509 void TabCountChangeObserver::CheckTabCount() { 512 void TabCountChangeObserver::CheckTabCount() {
510 if (tab_strip_model_->count() != target_tab_count_) 513 if (tab_strip_model_->count() != target_tab_count_)
511 return; 514 return;
512 515
513 if (automation_) { 516 if (automation_.get()) {
514 AutomationMsg_WaitForTabCountToBecome::WriteReplyParams( 517 AutomationMsg_WaitForTabCountToBecome::WriteReplyParams(
515 reply_message_.get(), true); 518 reply_message_.get(), true);
516 automation_->Send(reply_message_.release()); 519 automation_->Send(reply_message_.release());
517 } 520 }
518 521
519 delete this; 522 delete this;
520 } 523 }
521 524
522 bool DidExtensionViewsStopLoading(ExtensionProcessManager* manager) { 525 bool DidExtensionViewsStopLoading(ExtensionProcessManager* manager) {
523 ExtensionProcessManager::ViewSet all_views = manager->GetAllViews(); 526 ExtensionProcessManager::ViewSet all_views = manager->GetAllViews();
(...skipping 19 matching lines...) Expand all
543 content::NotificationService::AllSources()); 546 content::NotificationService::AllSources());
544 } 547 }
545 548
546 ExtensionUninstallObserver::~ExtensionUninstallObserver() { 549 ExtensionUninstallObserver::~ExtensionUninstallObserver() {
547 } 550 }
548 551
549 void ExtensionUninstallObserver::Observe( 552 void ExtensionUninstallObserver::Observe(
550 int type, 553 int type,
551 const content::NotificationSource& source, 554 const content::NotificationSource& source,
552 const content::NotificationDetails& details) { 555 const content::NotificationDetails& details) {
553 if (!automation_) { 556 if (!automation_.get()) {
554 delete this; 557 delete this;
555 return; 558 return;
556 } 559 }
557 560
558 switch (type) { 561 switch (type) {
559 case chrome::NOTIFICATION_EXTENSION_UNINSTALLED: { 562 case chrome::NOTIFICATION_EXTENSION_UNINSTALLED: {
560 if (id_ == content::Details<extensions::Extension>(details).ptr()->id()) { 563 if (id_ == content::Details<extensions::Extension>(details).ptr()->id()) {
561 scoped_ptr<DictionaryValue> return_value(new DictionaryValue); 564 scoped_ptr<DictionaryValue> return_value(new DictionaryValue);
562 return_value->SetBoolean("success", true); 565 return_value->SetBoolean("success", true);
563 AutomationJSONReply(automation_, reply_message_.release()) 566 AutomationJSONReply(automation_.get(), reply_message_.release())
564 .SendSuccess(return_value.get()); 567 .SendSuccess(return_value.get());
565 delete this; 568 delete this;
566 return; 569 return;
567 } 570 }
568 break; 571 break;
569 } 572 }
570 573
571 case chrome::NOTIFICATION_EXTENSION_UNINSTALL_NOT_ALLOWED: { 574 case chrome::NOTIFICATION_EXTENSION_UNINSTALL_NOT_ALLOWED: {
572 const extensions::Extension* extension = 575 const extensions::Extension* extension =
573 content::Details<extensions::Extension>(details).ptr(); 576 content::Details<extensions::Extension>(details).ptr();
574 if (id_ == extension->id()) { 577 if (id_ == extension->id()) {
575 scoped_ptr<DictionaryValue> return_value(new DictionaryValue); 578 scoped_ptr<DictionaryValue> return_value(new DictionaryValue);
576 return_value->SetBoolean("success", false); 579 return_value->SetBoolean("success", false);
577 AutomationJSONReply(automation_, reply_message_.release()) 580 AutomationJSONReply(automation_.get(), reply_message_.release())
578 .SendSuccess(return_value.get()); 581 .SendSuccess(return_value.get());
579 delete this; 582 delete this;
580 return; 583 return;
581 } 584 }
582 break; 585 break;
583 } 586 }
584 587
585 default: 588 default:
586 NOTREACHED(); 589 NOTREACHED();
587 } 590 }
(...skipping 22 matching lines...) Expand all
610 content::NotificationService::AllSources()); 613 content::NotificationService::AllSources());
611 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_INSTALL_ERROR, 614 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_INSTALL_ERROR,
612 content::NotificationService::AllSources()); 615 content::NotificationService::AllSources());
613 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UPDATE_DISABLED, 616 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UPDATE_DISABLED,
614 content::NotificationService::AllSources()); 617 content::NotificationService::AllSources());
615 } 618 }
616 619
617 void ExtensionReadyNotificationObserver::Observe( 620 void ExtensionReadyNotificationObserver::Observe(
618 int type, const content::NotificationSource& source, 621 int type, const content::NotificationSource& source,
619 const content::NotificationDetails& details) { 622 const content::NotificationDetails& details) {
620 if (!automation_) { 623 if (!automation_.get()) {
621 delete this; 624 delete this;
622 return; 625 return;
623 } 626 }
624 627
625 switch (type) { 628 switch (type) {
626 case content::NOTIFICATION_LOAD_STOP: 629 case content::NOTIFICATION_LOAD_STOP:
627 // Only continue on with this method if our extension has been loaded 630 // Only continue on with this method if our extension has been loaded
628 // and all the extension views have stopped loading. 631 // and all the extension views have stopped loading.
629 if (!extension_ || !DidExtensionViewsStopLoading(manager_)) 632 if (!extension_ || !DidExtensionViewsStopLoading(manager_))
630 return; 633 return;
(...skipping 19 matching lines...) Expand all
650 } 653 }
651 case chrome::NOTIFICATION_EXTENSION_INSTALL_ERROR: 654 case chrome::NOTIFICATION_EXTENSION_INSTALL_ERROR:
652 case chrome::NOTIFICATION_EXTENSION_LOAD_ERROR: 655 case chrome::NOTIFICATION_EXTENSION_LOAD_ERROR:
653 case chrome::NOTIFICATION_EXTENSION_UPDATE_DISABLED: 656 case chrome::NOTIFICATION_EXTENSION_UPDATE_DISABLED:
654 break; 657 break;
655 default: 658 default:
656 NOTREACHED(); 659 NOTREACHED();
657 break; 660 break;
658 } 661 }
659 662
660 AutomationJSONReply reply(automation_, reply_message_.release()); 663 AutomationJSONReply reply(automation_.get(), reply_message_.release());
661 if (extension_) { 664 if (extension_) {
662 DictionaryValue dict; 665 DictionaryValue dict;
663 dict.SetString("id", extension_->id()); 666 dict.SetString("id", extension_->id());
664 reply.SendSuccess(&dict); 667 reply.SendSuccess(&dict);
665 } else { 668 } else {
666 reply.SendError("Extension could not be installed"); 669 reply.SendError("Extension could not be installed");
667 } 670 }
668 delete this; 671 delete this;
669 } 672 }
670 673
(...skipping 24 matching lines...) Expand all
695 registrar_.Add(this, content::NOTIFICATION_LOAD_STOP, 698 registrar_.Add(this, content::NOTIFICATION_LOAD_STOP,
696 content::NotificationService::AllSources()); 699 content::NotificationService::AllSources());
697 } 700 }
698 701
699 ExtensionsUpdatedObserver::~ExtensionsUpdatedObserver() { 702 ExtensionsUpdatedObserver::~ExtensionsUpdatedObserver() {
700 } 703 }
701 704
702 void ExtensionsUpdatedObserver::Observe( 705 void ExtensionsUpdatedObserver::Observe(
703 int type, const content::NotificationSource& source, 706 int type, const content::NotificationSource& source,
704 const content::NotificationDetails& details) { 707 const content::NotificationDetails& details) {
705 if (!automation_) { 708 if (!automation_.get()) {
706 delete this; 709 delete this;
707 return; 710 return;
708 } 711 }
709 712
710 DCHECK(type == content::NOTIFICATION_LOAD_STOP); 713 DCHECK(type == content::NOTIFICATION_LOAD_STOP);
711 MaybeReply(); 714 MaybeReply();
712 } 715 }
713 716
714 void ExtensionsUpdatedObserver::UpdateCheckFinished() { 717 void ExtensionsUpdatedObserver::UpdateCheckFinished() {
715 if (!automation_) { 718 if (!automation_.get()) {
716 delete this; 719 delete this;
717 return; 720 return;
718 } 721 }
719 722
720 // Extension updater has completed updating all extensions. 723 // Extension updater has completed updating all extensions.
721 updater_finished_ = true; 724 updater_finished_ = true;
722 MaybeReply(); 725 MaybeReply();
723 } 726 }
724 727
725 void ExtensionsUpdatedObserver::MaybeReply() { 728 void ExtensionsUpdatedObserver::MaybeReply() {
726 // Send the reply if (1) the extension updater has finished updating all 729 // Send the reply if (1) the extension updater has finished updating all
727 // extensions; and (2) all extension views have stopped loading. 730 // extensions; and (2) all extension views have stopped loading.
728 if (updater_finished_ && DidExtensionViewsStopLoading(manager_)) { 731 if (updater_finished_ && DidExtensionViewsStopLoading(manager_)) {
729 AutomationJSONReply reply(automation_, reply_message_.release()); 732 AutomationJSONReply reply(automation_.get(), reply_message_.release());
730 reply.SendSuccess(NULL); 733 reply.SendSuccess(NULL);
731 delete this; 734 delete this;
732 } 735 }
733 } 736 }
734 737
735 BrowserOpenedNotificationObserver::BrowserOpenedNotificationObserver( 738 BrowserOpenedNotificationObserver::BrowserOpenedNotificationObserver(
736 AutomationProvider* automation, 739 AutomationProvider* automation,
737 IPC::Message* reply_message, 740 IPC::Message* reply_message,
738 bool use_json_interface) 741 bool use_json_interface)
739 : automation_(automation->AsWeakPtr()), 742 : automation_(automation->AsWeakPtr()),
740 reply_message_(reply_message), 743 reply_message_(reply_message),
741 new_window_id_(extension_misc::kUnknownWindowId), 744 new_window_id_(extension_misc::kUnknownWindowId),
742 use_json_interface_(use_json_interface), 745 use_json_interface_(use_json_interface),
743 for_browser_command_(false) { 746 for_browser_command_(false) {
744 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_OPENED, 747 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_OPENED,
745 content::NotificationService::AllBrowserContextsAndSources()); 748 content::NotificationService::AllBrowserContextsAndSources());
746 registrar_.Add(this, content::NOTIFICATION_LOAD_STOP, 749 registrar_.Add(this, content::NOTIFICATION_LOAD_STOP,
747 content::NotificationService::AllBrowserContextsAndSources()); 750 content::NotificationService::AllBrowserContextsAndSources());
748 } 751 }
749 752
750 BrowserOpenedNotificationObserver::~BrowserOpenedNotificationObserver() { 753 BrowserOpenedNotificationObserver::~BrowserOpenedNotificationObserver() {
751 } 754 }
752 755
753 void BrowserOpenedNotificationObserver::Observe( 756 void BrowserOpenedNotificationObserver::Observe(
754 int type, 757 int type,
755 const content::NotificationSource& source, 758 const content::NotificationSource& source,
756 const content::NotificationDetails& details) { 759 const content::NotificationDetails& details) {
757 if (!automation_) { 760 if (!automation_.get()) {
758 delete this; 761 delete this;
759 return; 762 return;
760 } 763 }
761 764
762 if (type == chrome::NOTIFICATION_BROWSER_OPENED) { 765 if (type == chrome::NOTIFICATION_BROWSER_OPENED) {
763 // Store the new browser ID and continue waiting for a new tab within it 766 // Store the new browser ID and continue waiting for a new tab within it
764 // to stop loading. 767 // to stop loading.
765 new_window_id_ = ExtensionTabUtil::GetWindowId( 768 new_window_id_ = ExtensionTabUtil::GetWindowId(
766 content::Source<Browser>(source).ptr()); 769 content::Source<Browser>(source).ptr());
767 } else { 770 } else {
768 DCHECK_EQ(content::NOTIFICATION_LOAD_STOP, type); 771 DCHECK_EQ(content::NOTIFICATION_LOAD_STOP, type);
769 // Only send the result if the loaded tab is in the new window. 772 // Only send the result if the loaded tab is in the new window.
770 NavigationController* controller = 773 NavigationController* controller =
771 content::Source<NavigationController>(source).ptr(); 774 content::Source<NavigationController>(source).ptr();
772 SessionTabHelper* session_tab_helper = 775 SessionTabHelper* session_tab_helper =
773 SessionTabHelper::FromWebContents(controller->GetWebContents()); 776 SessionTabHelper::FromWebContents(controller->GetWebContents());
774 int window_id = session_tab_helper ? session_tab_helper->window_id().id() 777 int window_id = session_tab_helper ? session_tab_helper->window_id().id()
775 : -1; 778 : -1;
776 if (window_id == new_window_id_) { 779 if (window_id == new_window_id_) {
777 if (use_json_interface_) { 780 if (use_json_interface_) {
778 AutomationJSONReply(automation_, 781 AutomationJSONReply(automation_.get(), reply_message_.release())
779 reply_message_.release()).SendSuccess(NULL); 782 .SendSuccess(NULL);
780 } else { 783 } else {
781 if (for_browser_command_) { 784 if (for_browser_command_) {
782 AutomationMsg_WindowExecuteCommand::WriteReplyParams( 785 AutomationMsg_WindowExecuteCommand::WriteReplyParams(
783 reply_message_.get(), true); 786 reply_message_.get(), true);
784 } 787 }
785 automation_->Send(reply_message_.release()); 788 automation_->Send(reply_message_.release());
786 } 789 }
787 delete this; 790 delete this;
788 return; 791 return;
789 } 792 }
(...skipping 18 matching lines...) Expand all
808 content::Source<Browser>(browser)); 811 content::Source<Browser>(browser));
809 } 812 }
810 813
811 BrowserClosedNotificationObserver::~BrowserClosedNotificationObserver() {} 814 BrowserClosedNotificationObserver::~BrowserClosedNotificationObserver() {}
812 815
813 void BrowserClosedNotificationObserver::Observe( 816 void BrowserClosedNotificationObserver::Observe(
814 int type, const content::NotificationSource& source, 817 int type, const content::NotificationSource& source,
815 const content::NotificationDetails& details) { 818 const content::NotificationDetails& details) {
816 DCHECK_EQ(chrome::NOTIFICATION_BROWSER_CLOSED, type); 819 DCHECK_EQ(chrome::NOTIFICATION_BROWSER_CLOSED, type);
817 820
818 if (!automation_) { 821 if (!automation_.get()) {
819 delete this; 822 delete this;
820 return; 823 return;
821 } 824 }
822 825
823 // The automation layer doesn't support non-native desktops. 826 // The automation layer doesn't support non-native desktops.
824 int browser_count = static_cast<int>(BrowserList::GetInstance( 827 int browser_count = static_cast<int>(BrowserList::GetInstance(
825 chrome::HOST_DESKTOP_TYPE_NATIVE)->size()); 828 chrome::HOST_DESKTOP_TYPE_NATIVE)->size());
826 // We get the notification before the browser is removed from the BrowserList. 829 // We get the notification before the browser is removed from the BrowserList.
827 bool app_closing = browser_count == 1; 830 bool app_closing = browser_count == 1;
828 831
829 if (use_json_interface_) { 832 if (use_json_interface_) {
830 AutomationJSONReply(automation_, 833 AutomationJSONReply(automation_.get(), reply_message_.release())
831 reply_message_.release()).SendSuccess(NULL); 834 .SendSuccess(NULL);
832 } else { 835 } else {
833 if (for_browser_command_) { 836 if (for_browser_command_) {
834 AutomationMsg_WindowExecuteCommand::WriteReplyParams(reply_message_.get(), 837 AutomationMsg_WindowExecuteCommand::WriteReplyParams(reply_message_.get(),
835 true); 838 true);
836 } else { 839 } else {
837 AutomationMsg_CloseBrowser::WriteReplyParams(reply_message_.get(), true, 840 AutomationMsg_CloseBrowser::WriteReplyParams(reply_message_.get(), true,
838 app_closing); 841 app_closing);
839 } 842 }
840 automation_->Send(reply_message_.release()); 843 automation_->Send(reply_message_.release());
841 } 844 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
873 // The automation layer doesn't support non-native desktops. 876 // The automation layer doesn't support non-native desktops.
874 int current_count = static_cast<int>(BrowserList::GetInstance( 877 int current_count = static_cast<int>(BrowserList::GetInstance(
875 chrome::HOST_DESKTOP_TYPE_NATIVE)->size()); 878 chrome::HOST_DESKTOP_TYPE_NATIVE)->size());
876 if (type == chrome::NOTIFICATION_BROWSER_CLOSED) { 879 if (type == chrome::NOTIFICATION_BROWSER_CLOSED) {
877 // At the time of the notification the browser being closed is not removed 880 // At the time of the notification the browser being closed is not removed
878 // from the list. The real count is one less than the reported count. 881 // from the list. The real count is one less than the reported count.
879 DCHECK_LT(0, current_count); 882 DCHECK_LT(0, current_count);
880 current_count--; 883 current_count--;
881 } 884 }
882 885
883 if (!automation_) { 886 if (!automation_.get()) {
884 delete this; 887 delete this;
885 return; 888 return;
886 } 889 }
887 890
888 if (current_count == target_count_) { 891 if (current_count == target_count_) {
889 AutomationMsg_WaitForBrowserWindowCountToBecome::WriteReplyParams( 892 AutomationMsg_WaitForBrowserWindowCountToBecome::WriteReplyParams(
890 reply_message_.get(), true); 893 reply_message_.get(), true);
891 automation_->Send(reply_message_.release()); 894 automation_->Send(reply_message_.release());
892 delete this; 895 delete this;
893 } 896 }
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
978 break; 981 break;
979 } 982 }
980 } 983 }
981 return result; 984 return result;
982 } 985 }
983 986
984 void ExecuteBrowserCommandObserver::Observe( 987 void ExecuteBrowserCommandObserver::Observe(
985 int type, const content::NotificationSource& source, 988 int type, const content::NotificationSource& source,
986 const content::NotificationDetails& details) { 989 const content::NotificationDetails& details) {
987 if (type == notification_type_) { 990 if (type == notification_type_) {
988 if (automation_) { 991 if (automation_.get()) {
989 if (use_json_interface_) { 992 if (use_json_interface_) {
990 AutomationJSONReply(automation_, 993 AutomationJSONReply(automation_.get(), reply_message_.release())
991 reply_message_.release()).SendSuccess(NULL); 994 .SendSuccess(NULL);
992 } else { 995 } else {
993 AutomationMsg_WindowExecuteCommand::WriteReplyParams( 996 AutomationMsg_WindowExecuteCommand::WriteReplyParams(
994 reply_message_.get(), true); 997 reply_message_.get(), true);
995 automation_->Send(reply_message_.release()); 998 automation_->Send(reply_message_.release());
996 } 999 }
997 } 1000 }
998 delete this; 1001 delete this;
999 } else { 1002 } else {
1000 NOTREACHED(); 1003 NOTREACHED();
1001 } 1004 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1054 1057
1055 void FindInPageNotificationObserver::Observe( 1058 void FindInPageNotificationObserver::Observe(
1056 int type, const content::NotificationSource& source, 1059 int type, const content::NotificationSource& source,
1057 const content::NotificationDetails& details) { 1060 const content::NotificationDetails& details) {
1058 content::Details<FindNotificationDetails> find_details(details); 1061 content::Details<FindNotificationDetails> find_details(details);
1059 if (!(find_details->final_update() && reply_message_ != NULL)) { 1062 if (!(find_details->final_update() && reply_message_ != NULL)) {
1060 DVLOG(1) << "Ignoring, since we only care about the final message"; 1063 DVLOG(1) << "Ignoring, since we only care about the final message";
1061 return; 1064 return;
1062 } 1065 }
1063 1066
1064 if (!automation_) { 1067 if (!automation_.get()) {
1065 delete this; 1068 delete this;
1066 return; 1069 return;
1067 } 1070 }
1068 1071
1069 // We get multiple responses and one of those will contain the ordinal. 1072 // We get multiple responses and one of those will contain the ordinal.
1070 // This message comes to us before the final update is sent. 1073 // This message comes to us before the final update is sent.
1071 if (find_details->request_id() == kFindInPageRequestId) { 1074 if (find_details->request_id() == kFindInPageRequestId) {
1072 if (reply_with_json_) { 1075 if (reply_with_json_) {
1073 scoped_ptr<DictionaryValue> return_value(new DictionaryValue); 1076 scoped_ptr<DictionaryValue> return_value(new DictionaryValue);
1074 return_value->SetInteger("match_count", 1077 return_value->SetInteger("match_count",
1075 find_details->number_of_matches()); 1078 find_details->number_of_matches());
1076 gfx::Rect rect = find_details->selection_rect(); 1079 gfx::Rect rect = find_details->selection_rect();
1077 // If MatchCount is > 0, then rect should not be Empty. 1080 // If MatchCount is > 0, then rect should not be Empty.
1078 // We dont guard it here because we want to let the test 1081 // We dont guard it here because we want to let the test
1079 // code catch this invalid case if needed. 1082 // code catch this invalid case if needed.
1080 if (!rect.IsEmpty()) { 1083 if (!rect.IsEmpty()) {
1081 return_value->SetInteger("match_left", rect.x()); 1084 return_value->SetInteger("match_left", rect.x());
1082 return_value->SetInteger("match_top", rect.y()); 1085 return_value->SetInteger("match_top", rect.y());
1083 return_value->SetInteger("match_right", rect.right()); 1086 return_value->SetInteger("match_right", rect.right());
1084 return_value->SetInteger("match_bottom", rect.bottom()); 1087 return_value->SetInteger("match_bottom", rect.bottom());
1085 } 1088 }
1086 AutomationJSONReply(automation_, reply_message_.release()) 1089 AutomationJSONReply(automation_.get(), reply_message_.release())
1087 .SendSuccess(return_value.get()); 1090 .SendSuccess(return_value.get());
1088 delete this; 1091 delete this;
1089 } else { 1092 } else {
1090 if (find_details->active_match_ordinal() > -1) { 1093 if (find_details->active_match_ordinal() > -1) {
1091 active_match_ordinal_ = find_details->active_match_ordinal(); 1094 active_match_ordinal_ = find_details->active_match_ordinal();
1092 AutomationMsg_Find::WriteReplyParams(reply_message_.get(), 1095 AutomationMsg_Find::WriteReplyParams(reply_message_.get(),
1093 active_match_ordinal_, find_details->number_of_matches()); 1096 active_match_ordinal_, find_details->number_of_matches());
1094 automation_->Send(reply_message_.release()); 1097 automation_->Send(reply_message_.release());
1095 } 1098 }
1096 } 1099 }
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1142 : DomOperationObserver(0), 1145 : DomOperationObserver(0),
1143 automation_(automation->AsWeakPtr()), 1146 automation_(automation->AsWeakPtr()),
1144 reply_message_(reply_message), 1147 reply_message_(reply_message),
1145 use_json_interface_(use_json_interface) { 1148 use_json_interface_(use_json_interface) {
1146 } 1149 }
1147 1150
1148 DomOperationMessageSender::~DomOperationMessageSender() {} 1151 DomOperationMessageSender::~DomOperationMessageSender() {}
1149 1152
1150 void DomOperationMessageSender::OnDomOperationCompleted( 1153 void DomOperationMessageSender::OnDomOperationCompleted(
1151 const std::string& json) { 1154 const std::string& json) {
1152 if (automation_) { 1155 if (automation_.get()) {
1153 if (use_json_interface_) { 1156 if (use_json_interface_) {
1154 DictionaryValue dict; 1157 DictionaryValue dict;
1155 dict.SetString("result", json); 1158 dict.SetString("result", json);
1156 AutomationJSONReply(automation_, reply_message_.release()) 1159 AutomationJSONReply(automation_.get(), reply_message_.release())
1157 .SendSuccess(&dict); 1160 .SendSuccess(&dict);
1158 } else { 1161 } else {
1159 AutomationMsg_DomOperation::WriteReplyParams(reply_message_.get(), json); 1162 AutomationMsg_DomOperation::WriteReplyParams(reply_message_.get(), json);
1160 automation_->Send(reply_message_.release()); 1163 automation_->Send(reply_message_.release());
1161 } 1164 }
1162 } 1165 }
1163 delete this; 1166 delete this;
1164 } 1167 }
1165 1168
1166 void DomOperationMessageSender::OnModalDialogShown() { 1169 void DomOperationMessageSender::OnModalDialogShown() {
1167 if (automation_ && use_json_interface_) { 1170 if (automation_.get() && use_json_interface_) {
1168 AutomationJSONReply(automation_, reply_message_.release()) 1171 AutomationJSONReply(automation_.get(), reply_message_.release())
1169 .SendErrorCode(automation::kBlockedByModalDialog); 1172 .SendErrorCode(automation::kBlockedByModalDialog);
1170 delete this; 1173 delete this;
1171 } 1174 }
1172 } 1175 }
1173 1176
1174 void DomOperationMessageSender::OnJavascriptBlocked() { 1177 void DomOperationMessageSender::OnJavascriptBlocked() {
1175 if (automation_ && use_json_interface_) { 1178 if (automation_.get() && use_json_interface_) {
1176 AutomationJSONReply(automation_, reply_message_.release()) 1179 AutomationJSONReply(automation_.get(), reply_message_.release())
1177 .SendError("Javascript execution was blocked"); 1180 .SendError("Javascript execution was blocked");
1178 delete this; 1181 delete this;
1179 } 1182 }
1180 } 1183 }
1181 1184
1182 MetricEventDurationObserver::MetricEventDurationObserver() { 1185 MetricEventDurationObserver::MetricEventDurationObserver() {
1183 registrar_.Add(this, chrome::NOTIFICATION_METRIC_EVENT_DURATION, 1186 registrar_.Add(this, chrome::NOTIFICATION_METRIC_EVENT_DURATION,
1184 content::NotificationService::AllSources()); 1187 content::NotificationService::AllSources());
1185 } 1188 }
1186 1189
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1235 type == chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED); 1238 type == chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED);
1236 CheckCount(); 1239 CheckCount();
1237 } 1240 }
1238 1241
1239 void InfoBarCountObserver::CheckCount() { 1242 void InfoBarCountObserver::CheckCount() {
1240 InfoBarService* infobar_service = 1243 InfoBarService* infobar_service =
1241 InfoBarService::FromWebContents(web_contents_); 1244 InfoBarService::FromWebContents(web_contents_);
1242 if (infobar_service->infobar_count() != target_count_) 1245 if (infobar_service->infobar_count() != target_count_)
1243 return; 1246 return;
1244 1247
1245 if (automation_) { 1248 if (automation_.get()) {
1246 AutomationMsg_WaitForInfoBarCount::WriteReplyParams(reply_message_.get(), 1249 AutomationMsg_WaitForInfoBarCount::WriteReplyParams(reply_message_.get(),
1247 true); 1250 true);
1248 automation_->Send(reply_message_.release()); 1251 automation_->Send(reply_message_.release());
1249 } 1252 }
1250 delete this; 1253 delete this;
1251 } 1254 }
1252 1255
1253 AutomationProviderBookmarkModelObserver:: 1256 AutomationProviderBookmarkModelObserver::
1254 AutomationProviderBookmarkModelObserver( 1257 AutomationProviderBookmarkModelObserver(
1255 AutomationProvider* provider, 1258 AutomationProvider* provider,
(...skipping 20 matching lines...) Expand all
1276 void AutomationProviderBookmarkModelObserver::BookmarkModelBeingDeleted( 1279 void AutomationProviderBookmarkModelObserver::BookmarkModelBeingDeleted(
1277 BookmarkModel* model) { 1280 BookmarkModel* model) {
1278 ReplyAndDelete(false); 1281 ReplyAndDelete(false);
1279 } 1282 }
1280 1283
1281 IPC::Message* AutomationProviderBookmarkModelObserver::ReleaseReply() { 1284 IPC::Message* AutomationProviderBookmarkModelObserver::ReleaseReply() {
1282 return reply_message_.release(); 1285 return reply_message_.release();
1283 } 1286 }
1284 1287
1285 void AutomationProviderBookmarkModelObserver::ReplyAndDelete(bool success) { 1288 void AutomationProviderBookmarkModelObserver::ReplyAndDelete(bool success) {
1286 if (automation_provider_) { 1289 if (automation_provider_.get()) {
1287 if (use_json_interface_) { 1290 if (use_json_interface_) {
1288 AutomationJSONReply(automation_provider_, 1291 AutomationJSONReply(automation_provider_.get(), reply_message_.release())
1289 reply_message_.release()).SendSuccess(NULL); 1292 .SendSuccess(NULL);
1290 } else { 1293 } else {
1291 AutomationMsg_WaitForBookmarkModelToLoad::WriteReplyParams( 1294 AutomationMsg_WaitForBookmarkModelToLoad::WriteReplyParams(
1292 reply_message_.get(), success); 1295 reply_message_.get(), success);
1293 automation_provider_->Send(reply_message_.release()); 1296 automation_provider_->Send(reply_message_.release());
1294 } 1297 }
1295 } 1298 }
1296 delete this; 1299 delete this;
1297 } 1300 }
1298 1301
1299 AutomationProviderDownloadUpdatedObserver:: 1302 AutomationProviderDownloadUpdatedObserver::
(...skipping 13 matching lines...) Expand all
1313 1316
1314 void AutomationProviderDownloadUpdatedObserver::OnDownloadUpdated( 1317 void AutomationProviderDownloadUpdatedObserver::OnDownloadUpdated(
1315 DownloadItem* download) { 1318 DownloadItem* download) {
1316 // If this observer is watching for open, only send the reply if the download 1319 // If this observer is watching for open, only send the reply if the download
1317 // has been auto-opened. 1320 // has been auto-opened.
1318 if (wait_for_open_ && !download->GetAutoOpened()) 1321 if (wait_for_open_ && !download->GetAutoOpened())
1319 return; 1322 return;
1320 1323
1321 download->RemoveObserver(this); 1324 download->RemoveObserver(this);
1322 1325
1323 if (provider_) { 1326 if (provider_.get()) {
1324 scoped_ptr<DictionaryValue> return_value( 1327 scoped_ptr<DictionaryValue> return_value(
1325 provider_->GetDictionaryFromDownloadItem(download, incognito_)); 1328 provider_->GetDictionaryFromDownloadItem(download, incognito_));
1326 AutomationJSONReply(provider_, reply_message_.release()).SendSuccess( 1329 AutomationJSONReply(provider_.get(), reply_message_.release())
1327 return_value.get()); 1330 .SendSuccess(return_value.get());
1328 } 1331 }
1329 delete this; 1332 delete this;
1330 } 1333 }
1331 1334
1332 void AutomationProviderDownloadUpdatedObserver::OnDownloadOpened( 1335 void AutomationProviderDownloadUpdatedObserver::OnDownloadOpened(
1333 DownloadItem* download) { 1336 DownloadItem* download) {
1334 download->RemoveObserver(this); 1337 download->RemoveObserver(this);
1335 1338
1336 if (provider_) { 1339 if (provider_.get()) {
1337 scoped_ptr<DictionaryValue> return_value( 1340 scoped_ptr<DictionaryValue> return_value(
1338 provider_->GetDictionaryFromDownloadItem(download, incognito_)); 1341 provider_->GetDictionaryFromDownloadItem(download, incognito_));
1339 AutomationJSONReply(provider_, reply_message_.release()).SendSuccess( 1342 AutomationJSONReply(provider_.get(), reply_message_.release())
1340 return_value.get()); 1343 .SendSuccess(return_value.get());
1341 } 1344 }
1342 delete this; 1345 delete this;
1343 } 1346 }
1344 1347
1345 AutomationProviderDownloadModelChangedObserver:: 1348 AutomationProviderDownloadModelChangedObserver::
1346 AutomationProviderDownloadModelChangedObserver( 1349 AutomationProviderDownloadModelChangedObserver(
1347 AutomationProvider* provider, 1350 AutomationProvider* provider,
1348 IPC::Message* reply_message, 1351 IPC::Message* reply_message,
1349 DownloadManager* download_manager) 1352 DownloadManager* download_manager)
1350 : provider_(provider->AsWeakPtr()), 1353 : provider_(provider->AsWeakPtr()),
1351 reply_message_(reply_message), 1354 reply_message_(reply_message),
1352 notifier_(download_manager, this) { 1355 notifier_(download_manager, this) {
1353 } 1356 }
1354 1357
1355 AutomationProviderDownloadModelChangedObserver:: 1358 AutomationProviderDownloadModelChangedObserver::
1356 ~AutomationProviderDownloadModelChangedObserver() {} 1359 ~AutomationProviderDownloadModelChangedObserver() {}
1357 1360
1358 void AutomationProviderDownloadModelChangedObserver::ModelChanged() { 1361 void AutomationProviderDownloadModelChangedObserver::ModelChanged() {
1359 if (provider_) 1362 if (provider_.get())
1360 AutomationJSONReply(provider_, reply_message_.release()).SendSuccess(NULL); 1363 AutomationJSONReply(provider_.get(), reply_message_.release())
1364 .SendSuccess(NULL);
1361 delete this; 1365 delete this;
1362 } 1366 }
1363 1367
1364 void AutomationProviderDownloadModelChangedObserver::OnDownloadCreated( 1368 void AutomationProviderDownloadModelChangedObserver::OnDownloadCreated(
1365 DownloadManager* manager, DownloadItem* item) { 1369 DownloadManager* manager, DownloadItem* item) {
1366 ModelChanged(); 1370 ModelChanged();
1367 } 1371 }
1368 1372
1369 void AutomationProviderDownloadModelChangedObserver::OnDownloadRemoved( 1373 void AutomationProviderDownloadModelChangedObserver::OnDownloadRemoved(
1370 DownloadManager* manager, DownloadItem* item) { 1374 DownloadManager* manager, DownloadItem* item) {
1371 ModelChanged(); 1375 ModelChanged();
1372 } 1376 }
1373 1377
1374 AllDownloadsCompleteObserver::AllDownloadsCompleteObserver( 1378 AllDownloadsCompleteObserver::AllDownloadsCompleteObserver(
1375 AutomationProvider* provider, 1379 AutomationProvider* provider,
1376 IPC::Message* reply_message, 1380 IPC::Message* reply_message,
1377 DownloadManager* download_manager, 1381 DownloadManager* download_manager,
1378 ListValue* pre_download_ids) 1382 ListValue* pre_download_ids)
1379 : provider_(provider->AsWeakPtr()), 1383 : provider_(provider->AsWeakPtr()),
1380 reply_message_(reply_message), 1384 reply_message_(reply_message),
1381 download_manager_(download_manager) { 1385 download_manager_(download_manager) {
1382 for (ListValue::iterator it = pre_download_ids->begin(); 1386 for (ListValue::iterator it = pre_download_ids->begin();
1383 it != pre_download_ids->end(); ++it) { 1387 it != pre_download_ids->end(); ++it) {
1384 int val = 0; 1388 int val = 0;
1385 if ((*it)->GetAsInteger(&val)) { 1389 if ((*it)->GetAsInteger(&val)) {
1386 pre_download_ids_.insert(val); 1390 pre_download_ids_.insert(val);
1387 } else { 1391 } else {
1388 AutomationJSONReply(provider_, reply_message_.release()) 1392 AutomationJSONReply(provider_.get(), reply_message_.release())
1389 .SendError("Cannot convert ID of prior download to integer."); 1393 .SendError("Cannot convert ID of prior download to integer.");
1390 delete this; 1394 delete this;
1391 return; 1395 return;
1392 } 1396 }
1393 } 1397 }
1394 download_manager_->AddObserver(this); 1398 download_manager_->AddObserver(this);
1395 DownloadManager::DownloadVector all_items; 1399 DownloadManager::DownloadVector all_items;
1396 download_manager->GetAllDownloads(&all_items); 1400 download_manager->GetAllDownloads(&all_items);
1397 for (DownloadManager::DownloadVector::const_iterator 1401 for (DownloadManager::DownloadVector::const_iterator
1398 it = all_items.begin(); it != all_items.end(); ++it) { 1402 it = all_items.begin(); it != all_items.end(); ++it) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1437 pending_downloads_.erase(download); 1441 pending_downloads_.erase(download);
1438 ReplyIfNecessary(); 1442 ReplyIfNecessary();
1439 } 1443 }
1440 } 1444 }
1441 1445
1442 void AllDownloadsCompleteObserver::ReplyIfNecessary() { 1446 void AllDownloadsCompleteObserver::ReplyIfNecessary() {
1443 if (!pending_downloads_.empty()) 1447 if (!pending_downloads_.empty())
1444 return; 1448 return;
1445 1449
1446 download_manager_->RemoveObserver(this); 1450 download_manager_->RemoveObserver(this);
1447 if (provider_) 1451 if (provider_.get())
1448 AutomationJSONReply(provider_, reply_message_.release()).SendSuccess(NULL); 1452 AutomationJSONReply(provider_.get(), reply_message_.release())
1453 .SendSuccess(NULL);
1449 delete this; 1454 delete this;
1450 } 1455 }
1451 1456
1452 AutomationProviderSearchEngineObserver::AutomationProviderSearchEngineObserver( 1457 AutomationProviderSearchEngineObserver::AutomationProviderSearchEngineObserver(
1453 AutomationProvider* provider, 1458 AutomationProvider* provider,
1454 Profile* profile, 1459 Profile* profile,
1455 IPC::Message* reply_message) 1460 IPC::Message* reply_message)
1456 : provider_(provider->AsWeakPtr()), 1461 : provider_(provider->AsWeakPtr()),
1457 profile_(profile), 1462 profile_(profile),
1458 reply_message_(reply_message) { 1463 reply_message_(reply_message) {
1459 } 1464 }
1460 1465
1461 AutomationProviderSearchEngineObserver:: 1466 AutomationProviderSearchEngineObserver::
1462 ~AutomationProviderSearchEngineObserver() {} 1467 ~AutomationProviderSearchEngineObserver() {}
1463 1468
1464 void AutomationProviderSearchEngineObserver::OnTemplateURLServiceChanged() { 1469 void AutomationProviderSearchEngineObserver::OnTemplateURLServiceChanged() {
1465 if (provider_) { 1470 if (provider_.get()) {
1466 TemplateURLService* url_service = 1471 TemplateURLService* url_service =
1467 TemplateURLServiceFactory::GetForProfile(profile_); 1472 TemplateURLServiceFactory::GetForProfile(profile_);
1468 url_service->RemoveObserver(this); 1473 url_service->RemoveObserver(this);
1469 AutomationJSONReply(provider_, reply_message_.release()).SendSuccess(NULL); 1474 AutomationJSONReply(provider_.get(), reply_message_.release())
1475 .SendSuccess(NULL);
1470 } 1476 }
1471 delete this; 1477 delete this;
1472 } 1478 }
1473 1479
1474 AutomationProviderHistoryObserver::AutomationProviderHistoryObserver( 1480 AutomationProviderHistoryObserver::AutomationProviderHistoryObserver(
1475 AutomationProvider* provider, 1481 AutomationProvider* provider,
1476 IPC::Message* reply_message) 1482 IPC::Message* reply_message)
1477 : provider_(provider->AsWeakPtr()), 1483 : provider_(provider->AsWeakPtr()),
1478 reply_message_(reply_message) { 1484 reply_message_(reply_message) {
1479 } 1485 }
1480 1486
1481 AutomationProviderHistoryObserver::~AutomationProviderHistoryObserver() {} 1487 AutomationProviderHistoryObserver::~AutomationProviderHistoryObserver() {}
1482 1488
1483 void AutomationProviderHistoryObserver::HistoryQueryComplete( 1489 void AutomationProviderHistoryObserver::HistoryQueryComplete(
1484 HistoryService::Handle request_handle, 1490 HistoryService::Handle request_handle,
1485 history::QueryResults* results) { 1491 history::QueryResults* results) {
1486 if (!provider_) { 1492 if (!provider_.get()) {
1487 delete this; 1493 delete this;
1488 return; 1494 return;
1489 } 1495 }
1490 1496
1491 scoped_ptr<DictionaryValue> return_value(new DictionaryValue); 1497 scoped_ptr<DictionaryValue> return_value(new DictionaryValue);
1492 1498
1493 ListValue* history_list = new ListValue; 1499 ListValue* history_list = new ListValue;
1494 for (size_t i = 0; i < results->size(); ++i) { 1500 for (size_t i = 0; i < results->size(); ++i) {
1495 DictionaryValue* page_value = new DictionaryValue; 1501 DictionaryValue* page_value = new DictionaryValue;
1496 history::URLResult const &page = (*results)[i]; 1502 history::URLResult const &page = (*results)[i];
1497 page_value->SetString("title", page.title()); 1503 page_value->SetString("title", page.title());
1498 page_value->SetString("url", page.url().spec()); 1504 page_value->SetString("url", page.url().spec());
1499 page_value->SetDouble("time", 1505 page_value->SetDouble("time",
1500 static_cast<double>(page.visit_time().ToDoubleT())); 1506 static_cast<double>(page.visit_time().ToDoubleT()));
1501 page_value->SetString("snippet", page.snippet().text()); 1507 page_value->SetString("snippet", page.snippet().text());
1502 page_value->SetBoolean( 1508 page_value->SetBoolean(
1503 "starred", 1509 "starred",
1504 BookmarkModelFactory::GetForProfile( 1510 BookmarkModelFactory::GetForProfile(
1505 provider_->profile())->IsBookmarked(page.url())); 1511 provider_->profile())->IsBookmarked(page.url()));
1506 history_list->Append(page_value); 1512 history_list->Append(page_value);
1507 } 1513 }
1508 1514
1509 return_value->Set("history", history_list); 1515 return_value->Set("history", history_list);
1510 // Return history info. 1516 // Return history info.
1511 AutomationJSONReply reply(provider_, reply_message_.release()); 1517 AutomationJSONReply reply(provider_.get(), reply_message_.release());
1512 reply.SendSuccess(return_value.get()); 1518 reply.SendSuccess(return_value.get());
1513 delete this; 1519 delete this;
1514 } 1520 }
1515 1521
1516 AutomationProviderImportSettingsObserver:: 1522 AutomationProviderImportSettingsObserver::
1517 AutomationProviderImportSettingsObserver( 1523 AutomationProviderImportSettingsObserver(
1518 AutomationProvider* provider, 1524 AutomationProvider* provider,
1519 IPC::Message* reply_message) 1525 IPC::Message* reply_message)
1520 : provider_(provider->AsWeakPtr()), 1526 : provider_(provider->AsWeakPtr()),
1521 reply_message_(reply_message) { 1527 reply_message_(reply_message) {
1522 } 1528 }
1523 1529
1524 AutomationProviderImportSettingsObserver:: 1530 AutomationProviderImportSettingsObserver::
1525 ~AutomationProviderImportSettingsObserver() {} 1531 ~AutomationProviderImportSettingsObserver() {}
1526 1532
1527 void AutomationProviderImportSettingsObserver::ImportStarted() { 1533 void AutomationProviderImportSettingsObserver::ImportStarted() {
1528 } 1534 }
1529 1535
1530 void AutomationProviderImportSettingsObserver::ImportItemStarted( 1536 void AutomationProviderImportSettingsObserver::ImportItemStarted(
1531 importer::ImportItem item) { 1537 importer::ImportItem item) {
1532 } 1538 }
1533 1539
1534 void AutomationProviderImportSettingsObserver::ImportItemEnded( 1540 void AutomationProviderImportSettingsObserver::ImportItemEnded(
1535 importer::ImportItem item) { 1541 importer::ImportItem item) {
1536 } 1542 }
1537 1543
1538 void AutomationProviderImportSettingsObserver::ImportEnded() { 1544 void AutomationProviderImportSettingsObserver::ImportEnded() {
1539 if (provider_) 1545 if (provider_.get())
1540 AutomationJSONReply(provider_, reply_message_.release()).SendSuccess(NULL); 1546 AutomationJSONReply(provider_.get(), reply_message_.release())
1547 .SendSuccess(NULL);
1541 delete this; 1548 delete this;
1542 } 1549 }
1543 1550
1544 AutomationProviderGetPasswordsObserver::AutomationProviderGetPasswordsObserver( 1551 AutomationProviderGetPasswordsObserver::AutomationProviderGetPasswordsObserver(
1545 AutomationProvider* provider, 1552 AutomationProvider* provider,
1546 IPC::Message* reply_message) 1553 IPC::Message* reply_message)
1547 : provider_(provider->AsWeakPtr()), 1554 : provider_(provider->AsWeakPtr()),
1548 reply_message_(reply_message) { 1555 reply_message_(reply_message) {
1549 } 1556 }
1550 1557
1551 AutomationProviderGetPasswordsObserver:: 1558 AutomationProviderGetPasswordsObserver::
1552 ~AutomationProviderGetPasswordsObserver() {} 1559 ~AutomationProviderGetPasswordsObserver() {}
1553 1560
1554 void AutomationProviderGetPasswordsObserver::OnPasswordStoreRequestDone( 1561 void AutomationProviderGetPasswordsObserver::OnPasswordStoreRequestDone(
1555 CancelableRequestProvider::Handle handle, 1562 CancelableRequestProvider::Handle handle,
1556 const std::vector<content::PasswordForm*>& result) { 1563 const std::vector<content::PasswordForm*>& result) {
1557 if (!provider_) { 1564 if (!provider_.get()) {
1558 delete this; 1565 delete this;
1559 return; 1566 return;
1560 } 1567 }
1561 1568
1562 scoped_ptr<DictionaryValue> return_value(new DictionaryValue); 1569 scoped_ptr<DictionaryValue> return_value(new DictionaryValue);
1563 1570
1564 ListValue* passwords = new ListValue; 1571 ListValue* passwords = new ListValue;
1565 for (std::vector<content::PasswordForm*>::const_iterator it = 1572 for (std::vector<content::PasswordForm*>::const_iterator it =
1566 result.begin(); it != result.end(); ++it) { 1573 result.begin(); it != result.end(); ++it) {
1567 DictionaryValue* password_val = new DictionaryValue; 1574 DictionaryValue* password_val = new DictionaryValue;
1568 content::PasswordForm* password_form = *it; 1575 content::PasswordForm* password_form = *it;
1569 password_val->SetString("username_value", password_form->username_value); 1576 password_val->SetString("username_value", password_form->username_value);
1570 password_val->SetString("password_value", password_form->password_value); 1577 password_val->SetString("password_value", password_form->password_value);
1571 password_val->SetString("signon_realm", password_form->signon_realm); 1578 password_val->SetString("signon_realm", password_form->signon_realm);
1572 password_val->SetDouble( 1579 password_val->SetDouble(
1573 "time", static_cast<double>(password_form->date_created.ToDoubleT())); 1580 "time", static_cast<double>(password_form->date_created.ToDoubleT()));
1574 password_val->SetString("origin_url", password_form->origin.spec()); 1581 password_val->SetString("origin_url", password_form->origin.spec());
1575 password_val->SetString("username_element", 1582 password_val->SetString("username_element",
1576 password_form->username_element); 1583 password_form->username_element);
1577 password_val->SetString("password_element", 1584 password_val->SetString("password_element",
1578 password_form->password_element); 1585 password_form->password_element);
1579 password_val->SetString("submit_element", password_form->submit_element); 1586 password_val->SetString("submit_element", password_form->submit_element);
1580 password_val->SetString("action_target", password_form->action.spec()); 1587 password_val->SetString("action_target", password_form->action.spec());
1581 password_val->SetBoolean("blacklist", password_form->blacklisted_by_user); 1588 password_val->SetBoolean("blacklist", password_form->blacklisted_by_user);
1582 passwords->Append(password_val); 1589 passwords->Append(password_val);
1583 } 1590 }
1584 1591
1585 return_value->Set("passwords", passwords); 1592 return_value->Set("passwords", passwords);
1586 AutomationJSONReply(provider_, reply_message_.release()).SendSuccess( 1593 AutomationJSONReply(provider_.get(), reply_message_.release())
1587 return_value.get()); 1594 .SendSuccess(return_value.get());
1588 delete this; 1595 delete this;
1589 } 1596 }
1590 1597
1591 void AutomationProviderGetPasswordsObserver::OnGetPasswordStoreResults( 1598 void AutomationProviderGetPasswordsObserver::OnGetPasswordStoreResults(
1592 const std::vector<content::PasswordForm*>& results) { 1599 const std::vector<content::PasswordForm*>& results) {
1593 // TODO(kaiwang): Implement when I refactor 1600 // TODO(kaiwang): Implement when I refactor
1594 // PasswordManager::GetAutofillableLogins. 1601 // PasswordManager::GetAutofillableLogins.
1595 NOTIMPLEMENTED(); 1602 NOTIMPLEMENTED();
1596 } 1603 }
1597 1604
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1653 1660
1654 // Notify the UI thread that we're done listening. 1661 // Notify the UI thread that we're done listening.
1655 BrowserThread::PostTask( 1662 BrowserThread::PostTask(
1656 BrowserThread::UI, 1663 BrowserThread::UI,
1657 FROM_HERE, 1664 FROM_HERE,
1658 base::Bind(&PasswordStoreLoginsChangedObserver::IndicateDone, this)); 1665 base::Bind(&PasswordStoreLoginsChangedObserver::IndicateDone, this));
1659 } 1666 }
1660 1667
1661 void PasswordStoreLoginsChangedObserver::IndicateDone() { 1668 void PasswordStoreLoginsChangedObserver::IndicateDone() {
1662 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 1669 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1663 if (automation_) { 1670 if (automation_.get()) {
1664 if (result_key_.empty()) { 1671 if (result_key_.empty()) {
1665 AutomationJSONReply(automation_, reply_message_.release()) 1672 AutomationJSONReply(automation_.get(), reply_message_.release())
1666 .SendSuccess(NULL); 1673 .SendSuccess(NULL);
1667 } else { 1674 } else {
1668 scoped_ptr<DictionaryValue> return_value(new DictionaryValue); 1675 scoped_ptr<DictionaryValue> return_value(new DictionaryValue);
1669 return_value->SetBoolean(result_key_, true); 1676 return_value->SetBoolean(result_key_, true);
1670 AutomationJSONReply(automation_, reply_message_.release()) 1677 AutomationJSONReply(automation_.get(), reply_message_.release())
1671 .SendSuccess(return_value.get()); 1678 .SendSuccess(return_value.get());
1672 } 1679 }
1673 } 1680 }
1674 Release(); 1681 Release();
1675 } 1682 }
1676 1683
1677 void PasswordStoreLoginsChangedObserver::IndicateError( 1684 void PasswordStoreLoginsChangedObserver::IndicateError(
1678 const std::string& error) { 1685 const std::string& error) {
1679 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 1686 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1680 if (automation_) 1687 if (automation_.get())
1681 AutomationJSONReply(automation_, reply_message_.release()).SendError(error); 1688 AutomationJSONReply(automation_.get(), reply_message_.release())
1689 .SendError(error);
1682 Release(); 1690 Release();
1683 } 1691 }
1684 1692
1685 OmniboxAcceptNotificationObserver::OmniboxAcceptNotificationObserver( 1693 OmniboxAcceptNotificationObserver::OmniboxAcceptNotificationObserver(
1686 NavigationController* controller, 1694 NavigationController* controller,
1687 AutomationProvider* automation, 1695 AutomationProvider* automation,
1688 IPC::Message* reply_message) 1696 IPC::Message* reply_message)
1689 : automation_(automation->AsWeakPtr()), 1697 : automation_(automation->AsWeakPtr()),
1690 reply_message_(reply_message), 1698 reply_message_(reply_message),
1691 controller_(controller) { 1699 controller_(controller) {
1692 content::Source<NavigationController> source(controller_); 1700 content::Source<NavigationController> source(controller_);
1693 registrar_.Add(this, content::NOTIFICATION_LOAD_STOP, source); 1701 registrar_.Add(this, content::NOTIFICATION_LOAD_STOP, source);
1694 // Pages requiring auth don't send LOAD_STOP. 1702 // Pages requiring auth don't send LOAD_STOP.
1695 registrar_.Add(this, chrome::NOTIFICATION_AUTH_NEEDED, source); 1703 registrar_.Add(this, chrome::NOTIFICATION_AUTH_NEEDED, source);
1696 } 1704 }
1697 1705
1698 OmniboxAcceptNotificationObserver::~OmniboxAcceptNotificationObserver() { 1706 OmniboxAcceptNotificationObserver::~OmniboxAcceptNotificationObserver() {
1699 } 1707 }
1700 1708
1701 void OmniboxAcceptNotificationObserver::Observe( 1709 void OmniboxAcceptNotificationObserver::Observe(
1702 int type, 1710 int type,
1703 const content::NotificationSource& source, 1711 const content::NotificationSource& source,
1704 const content::NotificationDetails& details) { 1712 const content::NotificationDetails& details) {
1705 if (type == content::NOTIFICATION_LOAD_STOP || 1713 if (type == content::NOTIFICATION_LOAD_STOP ||
1706 type == chrome::NOTIFICATION_AUTH_NEEDED) { 1714 type == chrome::NOTIFICATION_AUTH_NEEDED) {
1707 if (automation_) { 1715 if (automation_.get()) {
1708 AutomationJSONReply(automation_, 1716 AutomationJSONReply(automation_.get(), reply_message_.release())
1709 reply_message_.release()).SendSuccess(NULL); 1717 .SendSuccess(NULL);
1710 } 1718 }
1711 delete this; 1719 delete this;
1712 } else { 1720 } else {
1713 NOTREACHED(); 1721 NOTREACHED();
1714 } 1722 }
1715 } 1723 }
1716 1724
1717 SavePackageNotificationObserver::SavePackageNotificationObserver( 1725 SavePackageNotificationObserver::SavePackageNotificationObserver(
1718 content::DownloadManager* download_manager, 1726 content::DownloadManager* download_manager,
1719 AutomationProvider* automation, 1727 AutomationProvider* automation,
1720 IPC::Message* reply_message) 1728 IPC::Message* reply_message)
1721 : download_manager_(download_manager), 1729 : download_manager_(download_manager),
1722 automation_(automation->AsWeakPtr()), 1730 automation_(automation->AsWeakPtr()),
1723 reply_message_(reply_message) { 1731 reply_message_(reply_message) {
1724 download_manager_->AddObserver(this); 1732 download_manager_->AddObserver(this);
1725 } 1733 }
1726 1734
1727 SavePackageNotificationObserver::~SavePackageNotificationObserver() { 1735 SavePackageNotificationObserver::~SavePackageNotificationObserver() {
1728 download_manager_->RemoveObserver(this); 1736 download_manager_->RemoveObserver(this);
1729 } 1737 }
1730 1738
1731 void SavePackageNotificationObserver::OnSavePackageSuccessfullyFinished( 1739 void SavePackageNotificationObserver::OnSavePackageSuccessfullyFinished(
1732 content::DownloadManager* manager, content::DownloadItem* item) { 1740 content::DownloadManager* manager, content::DownloadItem* item) {
1733 if (automation_) { 1741 if (automation_.get()) {
1734 AutomationJSONReply(automation_, 1742 AutomationJSONReply(automation_.get(), reply_message_.release())
1735 reply_message_.release()).SendSuccess(NULL); 1743 .SendSuccess(NULL);
1736 } 1744 }
1737 delete this; 1745 delete this;
1738 } 1746 }
1739 1747
1740 void SavePackageNotificationObserver::ManagerGoingDown( 1748 void SavePackageNotificationObserver::ManagerGoingDown(
1741 content::DownloadManager* manager) { 1749 content::DownloadManager* manager) {
1742 delete this; 1750 delete this;
1743 } 1751 }
1744 1752
1745 namespace { 1753 namespace {
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1789 } // namespace 1797 } // namespace
1790 1798
1791 NTPInfoObserver::NTPInfoObserver(AutomationProvider* automation, 1799 NTPInfoObserver::NTPInfoObserver(AutomationProvider* automation,
1792 IPC::Message* reply_message) 1800 IPC::Message* reply_message)
1793 : automation_(automation->AsWeakPtr()), 1801 : automation_(automation->AsWeakPtr()),
1794 reply_message_(reply_message), 1802 reply_message_(reply_message),
1795 request_(0), 1803 request_(0),
1796 ntp_info_(new DictionaryValue) { 1804 ntp_info_(new DictionaryValue) {
1797 top_sites_ = automation_->profile()->GetTopSites(); 1805 top_sites_ = automation_->profile()->GetTopSites();
1798 if (!top_sites_) { 1806 if (!top_sites_) {
1799 AutomationJSONReply(automation_, reply_message_.release()) 1807 AutomationJSONReply(automation_.get(), reply_message_.release())
1800 .SendError("Profile does not have service for querying the top sites."); 1808 .SendError("Profile does not have service for querying the top sites.");
1801 return; 1809 return;
1802 } 1810 }
1803 TabRestoreService* service = 1811 TabRestoreService* service =
1804 TabRestoreServiceFactory::GetForProfile(automation_->profile()); 1812 TabRestoreServiceFactory::GetForProfile(automation_->profile());
1805 if (!service) { 1813 if (!service) {
1806 AutomationJSONReply(automation_, reply_message_.release()) 1814 AutomationJSONReply(automation_.get(), reply_message_.release())
1807 .SendError("No TabRestoreService."); 1815 .SendError("No TabRestoreService.");
1808 return; 1816 return;
1809 } 1817 }
1810 1818
1811 // Collect information about the apps in the new tab page. 1819 // Collect information about the apps in the new tab page.
1812 ExtensionService* ext_service = extensions::ExtensionSystem::Get( 1820 ExtensionService* ext_service = extensions::ExtensionSystem::Get(
1813 automation_->profile())->extension_service(); 1821 automation_->profile())->extension_service();
1814 if (!ext_service) { 1822 if (!ext_service) {
1815 AutomationJSONReply(automation_, reply_message_.release()) 1823 AutomationJSONReply(automation_.get(), reply_message_.release())
1816 .SendError("No ExtensionService."); 1824 .SendError("No ExtensionService.");
1817 return; 1825 return;
1818 } 1826 }
1819 // Process enabled extensions. 1827 // Process enabled extensions.
1820 ListValue* apps_list = new ListValue(); 1828 ListValue* apps_list = new ListValue();
1821 const ExtensionSet* extensions = ext_service->extensions(); 1829 const ExtensionSet* extensions = ext_service->extensions();
1822 std::vector<DictionaryValue*>* enabled_apps = GetAppInfoFromExtensions( 1830 std::vector<DictionaryValue*>* enabled_apps = GetAppInfoFromExtensions(
1823 extensions, ext_service); 1831 extensions, ext_service);
1824 for (std::vector<DictionaryValue*>::const_iterator app = 1832 for (std::vector<DictionaryValue*>::const_iterator app =
1825 enabled_apps->begin(); app != enabled_apps->end(); ++app) { 1833 enabled_apps->begin(); app != enabled_apps->end(); ++app) {
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1892 } 1900 }
1893 } 1901 }
1894 } 1902 }
1895 1903
1896 void NTPInfoObserver::OnTopSitesLoaded() { 1904 void NTPInfoObserver::OnTopSitesLoaded() {
1897 request_ = top_sites_->StartQueryForMostVisited(); 1905 request_ = top_sites_->StartQueryForMostVisited();
1898 } 1906 }
1899 1907
1900 void NTPInfoObserver::OnTopSitesReceived( 1908 void NTPInfoObserver::OnTopSitesReceived(
1901 const history::MostVisitedURLList& visited_list) { 1909 const history::MostVisitedURLList& visited_list) {
1902 if (!automation_) { 1910 if (!automation_.get()) {
1903 delete this; 1911 delete this;
1904 return; 1912 return;
1905 } 1913 }
1906 1914
1907 ListValue* list_value = new ListValue; 1915 ListValue* list_value = new ListValue;
1908 for (size_t i = 0; i < visited_list.size(); ++i) { 1916 for (size_t i = 0; i < visited_list.size(); ++i) {
1909 const history::MostVisitedURL& visited = visited_list[i]; 1917 const history::MostVisitedURL& visited = visited_list[i];
1910 if (visited.url.spec().empty()) 1918 if (visited.url.spec().empty())
1911 break; // This is the signal that there are no more real visited sites. 1919 break; // This is the signal that there are no more real visited sites.
1912 DictionaryValue* dict = new DictionaryValue; 1920 DictionaryValue* dict = new DictionaryValue;
1913 dict->SetString("url", visited.url.spec()); 1921 dict->SetString("url", visited.url.spec());
1914 dict->SetString("title", visited.title); 1922 dict->SetString("title", visited.title);
1915 list_value->Append(dict); 1923 list_value->Append(dict);
1916 } 1924 }
1917 ntp_info_->Set("most_visited", list_value); 1925 ntp_info_->Set("most_visited", list_value);
1918 AutomationJSONReply(automation_, 1926 AutomationJSONReply(automation_.get(), reply_message_.release())
1919 reply_message_.release()).SendSuccess(ntp_info_.get()); 1927 .SendSuccess(ntp_info_.get());
1920 delete this; 1928 delete this;
1921 } 1929 }
1922 1930
1923 AppLaunchObserver::AppLaunchObserver( 1931 AppLaunchObserver::AppLaunchObserver(
1924 NavigationController* controller, 1932 NavigationController* controller,
1925 AutomationProvider* automation, 1933 AutomationProvider* automation,
1926 IPC::Message* reply_message, 1934 IPC::Message* reply_message,
1927 extension_misc::LaunchContainer launch_container) 1935 extension_misc::LaunchContainer launch_container)
1928 : controller_(controller), 1936 : controller_(controller),
1929 automation_(automation->AsWeakPtr()), 1937 automation_(automation->AsWeakPtr()),
(...skipping 23 matching lines...) Expand all
1953 ExtensionTabUtil::GetWindowId(content::Source<Browser>(source).ptr()); 1961 ExtensionTabUtil::GetWindowId(content::Source<Browser>(source).ptr());
1954 return; 1962 return;
1955 } 1963 }
1956 1964
1957 DCHECK_EQ(content::NOTIFICATION_LOAD_STOP, type); 1965 DCHECK_EQ(content::NOTIFICATION_LOAD_STOP, type);
1958 SessionTabHelper* session_tab_helper = SessionTabHelper::FromWebContents( 1966 SessionTabHelper* session_tab_helper = SessionTabHelper::FromWebContents(
1959 content::Source<NavigationController>(source)->GetWebContents()); 1967 content::Source<NavigationController>(source)->GetWebContents());
1960 if ((launch_container_ == extension_misc::LAUNCH_TAB) || 1968 if ((launch_container_ == extension_misc::LAUNCH_TAB) ||
1961 (session_tab_helper && 1969 (session_tab_helper &&
1962 (session_tab_helper->window_id().id() == new_window_id_))) { 1970 (session_tab_helper->window_id().id() == new_window_id_))) {
1963 if (automation_) { 1971 if (automation_.get()) {
1964 AutomationJSONReply(automation_, 1972 AutomationJSONReply(automation_.get(), reply_message_.release())
1965 reply_message_.release()).SendSuccess(NULL); 1973 .SendSuccess(NULL);
1966 } 1974 }
1967 delete this; 1975 delete this;
1968 } 1976 }
1969 } 1977 }
1970 1978
1971 namespace { 1979 namespace {
1972 1980
1973 // Returns whether all active notifications have an associated process ID. 1981 // Returns whether all active notifications have an associated process ID.
1974 bool AreActiveNotificationProcessesReady() { 1982 bool AreActiveNotificationProcessesReady() {
1975 BalloonNotificationUIManager* manager = 1983 BalloonNotificationUIManager* manager =
(...skipping 23 matching lines...) Expand all
1999 content::NotificationService::AllSources()); 2007 content::NotificationService::AllSources());
2000 } 2008 }
2001 } 2009 }
2002 2010
2003 GetAllNotificationsObserver::~GetAllNotificationsObserver() {} 2011 GetAllNotificationsObserver::~GetAllNotificationsObserver() {}
2004 2012
2005 void GetAllNotificationsObserver::Observe( 2013 void GetAllNotificationsObserver::Observe(
2006 int type, 2014 int type,
2007 const content::NotificationSource& source, 2015 const content::NotificationSource& source,
2008 const content::NotificationDetails& details) { 2016 const content::NotificationDetails& details) {
2009 if (!automation_) { 2017 if (!automation_.get()) {
2010 delete this; 2018 delete this;
2011 return; 2019 return;
2012 } 2020 }
2013 if (AreActiveNotificationProcessesReady()) 2021 if (AreActiveNotificationProcessesReady())
2014 SendMessage(); 2022 SendMessage();
2015 } 2023 }
2016 2024
2017 base::DictionaryValue* GetAllNotificationsObserver::NotificationToJson( 2025 base::DictionaryValue* GetAllNotificationsObserver::NotificationToJson(
2018 const Notification* note) { 2026 const Notification* note) {
2019 DictionaryValue* dict = new base::DictionaryValue(); 2027 DictionaryValue* dict = new base::DictionaryValue();
(...skipping 25 matching lines...) Expand all
2045 } 2053 }
2046 list->Append(note); 2054 list->Append(note);
2047 } 2055 }
2048 std::vector<const Notification*> queued_notes; 2056 std::vector<const Notification*> queued_notes;
2049 manager->GetQueuedNotificationsForTesting(&queued_notes); 2057 manager->GetQueuedNotificationsForTesting(&queued_notes);
2050 std::vector<const Notification*>::const_iterator queued_iter; 2058 std::vector<const Notification*>::const_iterator queued_iter;
2051 for (queued_iter = queued_notes.begin(); queued_iter != queued_notes.end(); 2059 for (queued_iter = queued_notes.begin(); queued_iter != queued_notes.end();
2052 ++queued_iter) { 2060 ++queued_iter) {
2053 list->Append(NotificationToJson(*queued_iter)); 2061 list->Append(NotificationToJson(*queued_iter));
2054 } 2062 }
2055 AutomationJSONReply(automation_, 2063 AutomationJSONReply(automation_.get(), reply_message_.release())
2056 reply_message_.release()).SendSuccess(&return_value); 2064 .SendSuccess(&return_value);
2057 delete this; 2065 delete this;
2058 } 2066 }
2059 2067
2060 NewNotificationBalloonObserver::NewNotificationBalloonObserver( 2068 NewNotificationBalloonObserver::NewNotificationBalloonObserver(
2061 AutomationProvider* provider, 2069 AutomationProvider* provider,
2062 IPC::Message* reply_message) 2070 IPC::Message* reply_message)
2063 : automation_(provider->AsWeakPtr()), 2071 : automation_(provider->AsWeakPtr()),
2064 reply_message_(reply_message) { 2072 reply_message_(reply_message) {
2065 registrar_.Add(this, chrome::NOTIFICATION_NOTIFY_BALLOON_CONNECTED, 2073 registrar_.Add(this, chrome::NOTIFICATION_NOTIFY_BALLOON_CONNECTED,
2066 content::NotificationService::AllSources()); 2074 content::NotificationService::AllSources());
2067 } 2075 }
2068 2076
2069 NewNotificationBalloonObserver::~NewNotificationBalloonObserver() { } 2077 NewNotificationBalloonObserver::~NewNotificationBalloonObserver() { }
2070 2078
2071 void NewNotificationBalloonObserver::Observe( 2079 void NewNotificationBalloonObserver::Observe(
2072 int type, 2080 int type,
2073 const content::NotificationSource& source, 2081 const content::NotificationSource& source,
2074 const content::NotificationDetails& details) { 2082 const content::NotificationDetails& details) {
2075 if (automation_) { 2083 if (automation_.get()) {
2076 AutomationJSONReply(automation_, 2084 AutomationJSONReply(automation_.get(), reply_message_.release())
2077 reply_message_.release()).SendSuccess(NULL); 2085 .SendSuccess(NULL);
2078 } 2086 }
2079 delete this; 2087 delete this;
2080 } 2088 }
2081 2089
2082 OnNotificationBalloonCountObserver::OnNotificationBalloonCountObserver( 2090 OnNotificationBalloonCountObserver::OnNotificationBalloonCountObserver(
2083 AutomationProvider* provider, 2091 AutomationProvider* provider,
2084 IPC::Message* reply_message, 2092 IPC::Message* reply_message,
2085 int count) 2093 int count)
2086 : automation_(provider->AsWeakPtr()), 2094 : automation_(provider->AsWeakPtr()),
2087 reply_message_(reply_message), 2095 reply_message_(reply_message),
(...skipping 15 matching lines...) Expand all
2103 int type, 2111 int type,
2104 const content::NotificationSource& source, 2112 const content::NotificationSource& source,
2105 const content::NotificationDetails& details) { 2113 const content::NotificationDetails& details) {
2106 CheckBalloonCount(); 2114 CheckBalloonCount();
2107 } 2115 }
2108 2116
2109 void OnNotificationBalloonCountObserver::CheckBalloonCount() { 2117 void OnNotificationBalloonCountObserver::CheckBalloonCount() {
2110 bool balloon_count_met = AreActiveNotificationProcessesReady() && 2118 bool balloon_count_met = AreActiveNotificationProcessesReady() &&
2111 static_cast<int>(collection_->GetActiveBalloons().size()) == count_; 2119 static_cast<int>(collection_->GetActiveBalloons().size()) == count_;
2112 2120
2113 if (balloon_count_met && automation_) { 2121 if (balloon_count_met && automation_.get()) {
2114 AutomationJSONReply(automation_, 2122 AutomationJSONReply(automation_.get(), reply_message_.release())
2115 reply_message_.release()).SendSuccess(NULL); 2123 .SendSuccess(NULL);
2116 } 2124 }
2117 2125
2118 if (balloon_count_met || !automation_) { 2126 if (balloon_count_met || !automation_.get()) {
2119 collection_->set_on_collection_changed_callback(base::Closure()); 2127 collection_->set_on_collection_changed_callback(base::Closure());
2120 delete this; 2128 delete this;
2121 } 2129 }
2122 } 2130 }
2123 2131
2124 RendererProcessClosedObserver::RendererProcessClosedObserver( 2132 RendererProcessClosedObserver::RendererProcessClosedObserver(
2125 AutomationProvider* automation, 2133 AutomationProvider* automation,
2126 IPC::Message* reply_message) 2134 IPC::Message* reply_message)
2127 : automation_(automation->AsWeakPtr()), 2135 : automation_(automation->AsWeakPtr()),
2128 reply_message_(reply_message) { 2136 reply_message_(reply_message) {
2129 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED, 2137 registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CLOSED,
2130 content::NotificationService::AllSources()); 2138 content::NotificationService::AllSources());
2131 } 2139 }
2132 2140
2133 RendererProcessClosedObserver::~RendererProcessClosedObserver() {} 2141 RendererProcessClosedObserver::~RendererProcessClosedObserver() {}
2134 2142
2135 void RendererProcessClosedObserver::Observe( 2143 void RendererProcessClosedObserver::Observe(
2136 int type, 2144 int type,
2137 const content::NotificationSource& source, 2145 const content::NotificationSource& source,
2138 const content::NotificationDetails& details) { 2146 const content::NotificationDetails& details) {
2139 if (automation_) { 2147 if (automation_.get()) {
2140 AutomationJSONReply(automation_, 2148 AutomationJSONReply(automation_.get(), reply_message_.release())
2141 reply_message_.release()).SendSuccess(NULL); 2149 .SendSuccess(NULL);
2142 } 2150 }
2143 delete this; 2151 delete this;
2144 } 2152 }
2145 2153
2146 InputEventAckNotificationObserver::InputEventAckNotificationObserver( 2154 InputEventAckNotificationObserver::InputEventAckNotificationObserver(
2147 AutomationProvider* automation, 2155 AutomationProvider* automation,
2148 IPC::Message* reply_message, 2156 IPC::Message* reply_message,
2149 int event_type, 2157 int event_type,
2150 int count) 2158 int count)
2151 : automation_(automation->AsWeakPtr()), 2159 : automation_(automation->AsWeakPtr()),
(...skipping 11 matching lines...) Expand all
2163 content::NotificationService::AllSources()); 2171 content::NotificationService::AllSources());
2164 } 2172 }
2165 2173
2166 InputEventAckNotificationObserver::~InputEventAckNotificationObserver() {} 2174 InputEventAckNotificationObserver::~InputEventAckNotificationObserver() {}
2167 2175
2168 void InputEventAckNotificationObserver::Observe( 2176 void InputEventAckNotificationObserver::Observe(
2169 int type, 2177 int type,
2170 const content::NotificationSource& source, 2178 const content::NotificationSource& source,
2171 const content::NotificationDetails& details) { 2179 const content::NotificationDetails& details) {
2172 if (type == chrome::NOTIFICATION_APP_MODAL_DIALOG_SHOWN) { 2180 if (type == chrome::NOTIFICATION_APP_MODAL_DIALOG_SHOWN) {
2173 AutomationJSONReply(automation_, 2181 AutomationJSONReply(automation_.get(), reply_message_.release())
2174 reply_message_.release()).SendSuccess(NULL); 2182 .SendSuccess(NULL);
2175 delete this; 2183 delete this;
2176 return; 2184 return;
2177 } 2185 }
2178 2186
2179 content::Details<int> request_details(details); 2187 content::Details<int> request_details(details);
2180 // If the event type matches for |count_| times, replies with a JSON message. 2188 // If the event type matches for |count_| times, replies with a JSON message.
2181 if (event_type_ == *request_details.ptr()) { 2189 if (event_type_ == *request_details.ptr()) {
2182 if (--count_ == 0 && automation_) { 2190 if (--count_ == 0 && automation_.get()) {
2183 AutomationJSONReply(automation_, 2191 AutomationJSONReply(automation_.get(), reply_message_.release())
2184 reply_message_.release()).SendSuccess(NULL); 2192 .SendSuccess(NULL);
2185 delete this; 2193 delete this;
2186 } 2194 }
2187 } else { 2195 } else {
2188 LOG(WARNING) << "Ignoring unexpected event type: " 2196 LOG(WARNING) << "Ignoring unexpected event type: "
2189 << *request_details.ptr() << " (expected: " << event_type_ 2197 << *request_details.ptr() << " (expected: " << event_type_
2190 << ")"; 2198 << ")";
2191 } 2199 }
2192 } 2200 }
2193 2201
2194 NewTabObserver::NewTabObserver(AutomationProvider* automation, 2202 NewTabObserver::NewTabObserver(AutomationProvider* automation,
2195 IPC::Message* reply_message, 2203 IPC::Message* reply_message,
2196 bool use_json_interface) 2204 bool use_json_interface)
2197 : automation_(automation->AsWeakPtr()), 2205 : automation_(automation->AsWeakPtr()),
2198 reply_message_(reply_message), 2206 reply_message_(reply_message),
2199 use_json_interface_(use_json_interface) { 2207 use_json_interface_(use_json_interface) {
2200 // Use TAB_PARENTED to detect the new tab. 2208 // Use TAB_PARENTED to detect the new tab.
2201 registrar_.Add(this, 2209 registrar_.Add(this,
2202 chrome::NOTIFICATION_TAB_PARENTED, 2210 chrome::NOTIFICATION_TAB_PARENTED,
2203 content::NotificationService::AllSources()); 2211 content::NotificationService::AllSources());
2204 } 2212 }
2205 2213
2206 void NewTabObserver::Observe(int type, 2214 void NewTabObserver::Observe(int type,
2207 const content::NotificationSource& source, 2215 const content::NotificationSource& source,
2208 const content::NotificationDetails& details) { 2216 const content::NotificationDetails& details) {
2209 DCHECK_EQ(chrome::NOTIFICATION_TAB_PARENTED, type); 2217 DCHECK_EQ(chrome::NOTIFICATION_TAB_PARENTED, type);
2210 NavigationController* controller = 2218 NavigationController* controller =
2211 &(content::Source<content::WebContents>(source).ptr()->GetController()); 2219 &(content::Source<content::WebContents>(source).ptr()->GetController());
2212 if (automation_) { 2220 if (automation_.get()) {
2213 // TODO(phajdan.jr): Clean up this hack. We write the correct return type 2221 // TODO(phajdan.jr): Clean up this hack. We write the correct return type
2214 // here, but don't send the message. NavigationNotificationObserver 2222 // here, but don't send the message. NavigationNotificationObserver
2215 // will wait properly for the load to finish, and send the message, 2223 // will wait properly for the load to finish, and send the message,
2216 // but it will also append its own return value at the end of the reply. 2224 // but it will also append its own return value at the end of the reply.
2217 if (!use_json_interface_) 2225 if (!use_json_interface_)
2218 AutomationMsg_WindowExecuteCommand::WriteReplyParams(reply_message_.get(), 2226 AutomationMsg_WindowExecuteCommand::WriteReplyParams(reply_message_.get(),
2219 true); 2227 true);
2220 new NavigationNotificationObserver(controller, automation_, 2228 new NavigationNotificationObserver(controller,
2229 automation_.get(),
2221 reply_message_.release(), 2230 reply_message_.release(),
2222 1, false, use_json_interface_); 2231 1,
2232 false,
2233 use_json_interface_);
2223 } 2234 }
2224 delete this; 2235 delete this;
2225 } 2236 }
2226 2237
2227 NewTabObserver::~NewTabObserver() { 2238 NewTabObserver::~NewTabObserver() {
2228 } 2239 }
2229 2240
2230 WaitForProcessLauncherThreadToGoIdleObserver:: 2241 WaitForProcessLauncherThreadToGoIdleObserver::
2231 WaitForProcessLauncherThreadToGoIdleObserver( 2242 WaitForProcessLauncherThreadToGoIdleObserver(
2232 AutomationProvider* automation, IPC::Message* reply_message) 2243 AutomationProvider* automation, IPC::Message* reply_message)
(...skipping 28 matching lines...) Expand all
2261 RunOnProcessLauncherThread2() { 2272 RunOnProcessLauncherThread2() {
2262 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::PROCESS_LAUNCHER)); 2273 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::PROCESS_LAUNCHER));
2263 BrowserThread::PostTask( 2274 BrowserThread::PostTask(
2264 BrowserThread::UI, FROM_HERE, 2275 BrowserThread::UI, FROM_HERE,
2265 base::Bind(&WaitForProcessLauncherThreadToGoIdleObserver::RunOnUIThread, 2276 base::Bind(&WaitForProcessLauncherThreadToGoIdleObserver::RunOnUIThread,
2266 this)); 2277 this));
2267 } 2278 }
2268 2279
2269 void WaitForProcessLauncherThreadToGoIdleObserver::RunOnUIThread() { 2280 void WaitForProcessLauncherThreadToGoIdleObserver::RunOnUIThread() {
2270 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 2281 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
2271 if (automation_) 2282 if (automation_.get())
2272 automation_->Send(reply_message_.release()); 2283 automation_->Send(reply_message_.release());
2273 Release(); 2284 Release();
2274 } 2285 }
2275 2286
2276 DragTargetDropAckNotificationObserver::DragTargetDropAckNotificationObserver( 2287 DragTargetDropAckNotificationObserver::DragTargetDropAckNotificationObserver(
2277 AutomationProvider* automation, 2288 AutomationProvider* automation,
2278 IPC::Message* reply_message) 2289 IPC::Message* reply_message)
2279 : automation_(automation->AsWeakPtr()), 2290 : automation_(automation->AsWeakPtr()),
2280 reply_message_(reply_message) { 2291 reply_message_(reply_message) {
2281 registrar_.Add( 2292 registrar_.Add(
2282 this, 2293 this,
2283 content::NOTIFICATION_RENDER_VIEW_HOST_DID_RECEIVE_DRAG_TARGET_DROP_ACK, 2294 content::NOTIFICATION_RENDER_VIEW_HOST_DID_RECEIVE_DRAG_TARGET_DROP_ACK,
2284 content::NotificationService::AllSources()); 2295 content::NotificationService::AllSources());
2285 registrar_.Add( 2296 registrar_.Add(
2286 this, 2297 this,
2287 chrome::NOTIFICATION_APP_MODAL_DIALOG_SHOWN, 2298 chrome::NOTIFICATION_APP_MODAL_DIALOG_SHOWN,
2288 content::NotificationService::AllSources()); 2299 content::NotificationService::AllSources());
2289 } 2300 }
2290 2301
2291 DragTargetDropAckNotificationObserver:: 2302 DragTargetDropAckNotificationObserver::
2292 ~DragTargetDropAckNotificationObserver() {} 2303 ~DragTargetDropAckNotificationObserver() {}
2293 2304
2294 void DragTargetDropAckNotificationObserver::Observe( 2305 void DragTargetDropAckNotificationObserver::Observe(
2295 int type, 2306 int type,
2296 const content::NotificationSource& source, 2307 const content::NotificationSource& source,
2297 const content::NotificationDetails& details) { 2308 const content::NotificationDetails& details) {
2298 if (automation_) { 2309 if (automation_.get()) {
2299 AutomationJSONReply(automation_, 2310 AutomationJSONReply(automation_.get(), reply_message_.release())
2300 reply_message_.release()).SendSuccess(NULL); 2311 .SendSuccess(NULL);
2301 } 2312 }
2302 delete this; 2313 delete this;
2303 } 2314 }
2304 2315
2305 ProcessInfoObserver::ProcessInfoObserver( 2316 ProcessInfoObserver::ProcessInfoObserver(
2306 AutomationProvider* automation, 2317 AutomationProvider* automation,
2307 IPC::Message* reply_message) 2318 IPC::Message* reply_message)
2308 : automation_(automation->AsWeakPtr()), 2319 : automation_(automation->AsWeakPtr()),
2309 reply_message_(reply_message) {} 2320 reply_message_(reply_message) {}
2310 2321
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
2373 proc_data->Set("titles", titles); 2384 proc_data->Set("titles", titles);
2374 2385
2375 proc_list->Append(proc_data); 2386 proc_list->Append(proc_data);
2376 } 2387 }
2377 browser_data->Set("processes", proc_list); 2388 browser_data->Set("processes", proc_list);
2378 2389
2379 browser_proc_list->Append(browser_data); 2390 browser_proc_list->Append(browser_data);
2380 } 2391 }
2381 return_value->Set("browsers", browser_proc_list); 2392 return_value->Set("browsers", browser_proc_list);
2382 2393
2383 if (automation_) { 2394 if (automation_.get()) {
2384 AutomationJSONReply(automation_, reply_message_.release()) 2395 AutomationJSONReply(automation_.get(), reply_message_.release())
2385 .SendSuccess(return_value.get()); 2396 .SendSuccess(return_value.get());
2386 } 2397 }
2387 } 2398 }
2388 2399
2389 V8HeapStatsObserver::V8HeapStatsObserver( 2400 V8HeapStatsObserver::V8HeapStatsObserver(
2390 AutomationProvider* automation, 2401 AutomationProvider* automation,
2391 IPC::Message* reply_message, 2402 IPC::Message* reply_message,
2392 base::ProcessId renderer_id) 2403 base::ProcessId renderer_id)
2393 : automation_(automation->AsWeakPtr()), 2404 : automation_(automation->AsWeakPtr()),
2394 reply_message_(reply_message), 2405 reply_message_(reply_message),
(...skipping 21 matching lines...) Expand all
2416 ChromeRenderMessageFilter::V8HeapStatsDetails* v8_heap_details = 2427 ChromeRenderMessageFilter::V8HeapStatsDetails* v8_heap_details =
2417 content::Details<ChromeRenderMessageFilter::V8HeapStatsDetails>(details) 2428 content::Details<ChromeRenderMessageFilter::V8HeapStatsDetails>(details)
2418 .ptr(); 2429 .ptr();
2419 scoped_ptr<DictionaryValue> return_value(new DictionaryValue); 2430 scoped_ptr<DictionaryValue> return_value(new DictionaryValue);
2420 return_value->SetInteger("renderer_id", updated_renderer_id); 2431 return_value->SetInteger("renderer_id", updated_renderer_id);
2421 return_value->SetInteger("v8_memory_allocated", 2432 return_value->SetInteger("v8_memory_allocated",
2422 v8_heap_details->v8_memory_allocated()); 2433 v8_heap_details->v8_memory_allocated());
2423 return_value->SetInteger("v8_memory_used", 2434 return_value->SetInteger("v8_memory_used",
2424 v8_heap_details->v8_memory_used()); 2435 v8_heap_details->v8_memory_used());
2425 2436
2426 if (automation_) { 2437 if (automation_.get()) {
2427 AutomationJSONReply(automation_, reply_message_.release()) 2438 AutomationJSONReply(automation_.get(), reply_message_.release())
2428 .SendSuccess(return_value.get()); 2439 .SendSuccess(return_value.get());
2429 } 2440 }
2430 delete this; 2441 delete this;
2431 } 2442 }
2432 2443
2433 FPSObserver::FPSObserver( 2444 FPSObserver::FPSObserver(
2434 AutomationProvider* automation, 2445 AutomationProvider* automation,
2435 IPC::Message* reply_message, 2446 IPC::Message* reply_message,
2436 base::ProcessId renderer_id, 2447 base::ProcessId renderer_id,
2437 int routing_id) 2448 int routing_id)
(...skipping 25 matching lines...) Expand all
2463 content::Details<ChromeRenderMessageFilter::FPSDetails>(details).ptr(); 2474 content::Details<ChromeRenderMessageFilter::FPSDetails>(details).ptr();
2464 // Only return information for the routing id of the host render view we're 2475 // Only return information for the routing id of the host render view we're
2465 // interested in. 2476 // interested in.
2466 if (routing_id_ != fps_details->routing_id()) 2477 if (routing_id_ != fps_details->routing_id())
2467 return; 2478 return;
2468 2479
2469 scoped_ptr<DictionaryValue> return_value(new DictionaryValue); 2480 scoped_ptr<DictionaryValue> return_value(new DictionaryValue);
2470 return_value->SetInteger("renderer_id", updated_renderer_id); 2481 return_value->SetInteger("renderer_id", updated_renderer_id);
2471 return_value->SetInteger("routing_id", fps_details->routing_id()); 2482 return_value->SetInteger("routing_id", fps_details->routing_id());
2472 return_value->SetDouble("fps", fps_details->fps()); 2483 return_value->SetDouble("fps", fps_details->fps());
2473 if (automation_) { 2484 if (automation_.get()) {
2474 AutomationJSONReply(automation_, reply_message_.release()) 2485 AutomationJSONReply(automation_.get(), reply_message_.release())
2475 .SendSuccess(return_value.get()); 2486 .SendSuccess(return_value.get());
2476 } 2487 }
2477 delete this; 2488 delete this;
2478 } 2489 }
2479 2490
2480 BrowserOpenedWithNewProfileNotificationObserver:: 2491 BrowserOpenedWithNewProfileNotificationObserver::
2481 BrowserOpenedWithNewProfileNotificationObserver( 2492 BrowserOpenedWithNewProfileNotificationObserver(
2482 AutomationProvider* automation, 2493 AutomationProvider* automation,
2483 IPC::Message* reply_message) 2494 IPC::Message* reply_message)
2484 : automation_(automation->AsWeakPtr()), 2495 : automation_(automation->AsWeakPtr()),
2485 reply_message_(reply_message), 2496 reply_message_(reply_message),
2486 new_window_id_(extension_misc::kUnknownWindowId) { 2497 new_window_id_(extension_misc::kUnknownWindowId) {
2487 registrar_.Add(this, chrome::NOTIFICATION_PROFILE_CREATED, 2498 registrar_.Add(this, chrome::NOTIFICATION_PROFILE_CREATED,
2488 content::NotificationService::AllBrowserContextsAndSources()); 2499 content::NotificationService::AllBrowserContextsAndSources());
2489 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_OPENED, 2500 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_OPENED,
2490 content::NotificationService::AllBrowserContextsAndSources()); 2501 content::NotificationService::AllBrowserContextsAndSources());
2491 registrar_.Add(this, content::NOTIFICATION_LOAD_STOP, 2502 registrar_.Add(this, content::NOTIFICATION_LOAD_STOP,
2492 content::NotificationService::AllBrowserContextsAndSources()); 2503 content::NotificationService::AllBrowserContextsAndSources());
2493 } 2504 }
2494 2505
2495 BrowserOpenedWithNewProfileNotificationObserver:: 2506 BrowserOpenedWithNewProfileNotificationObserver::
2496 ~BrowserOpenedWithNewProfileNotificationObserver() { 2507 ~BrowserOpenedWithNewProfileNotificationObserver() {
2497 } 2508 }
2498 2509
2499 void BrowserOpenedWithNewProfileNotificationObserver::Observe( 2510 void BrowserOpenedWithNewProfileNotificationObserver::Observe(
2500 int type, 2511 int type,
2501 const content::NotificationSource& source, 2512 const content::NotificationSource& source,
2502 const content::NotificationDetails& details) { 2513 const content::NotificationDetails& details) {
2503 if (!automation_) { 2514 if (!automation_.get()) {
2504 delete this; 2515 delete this;
2505 return; 2516 return;
2506 } 2517 }
2507 2518
2508 if (type == chrome::NOTIFICATION_PROFILE_CREATED) { 2519 if (type == chrome::NOTIFICATION_PROFILE_CREATED) {
2509 // As part of multi-profile creation, a new browser window will 2520 // As part of multi-profile creation, a new browser window will
2510 // automatically be opened. 2521 // automatically be opened.
2511 Profile* profile = content::Source<Profile>(source).ptr(); 2522 Profile* profile = content::Source<Profile>(source).ptr();
2512 if (!profile) { 2523 if (!profile) {
2513 AutomationJSONReply(automation_, 2524 AutomationJSONReply(automation_.get(), reply_message_.release())
2514 reply_message_.release()).SendError("Profile could not be created."); 2525 .SendError("Profile could not be created.");
2515 return; 2526 return;
2516 } 2527 }
2517 } else if (type == chrome::NOTIFICATION_BROWSER_OPENED) { 2528 } else if (type == chrome::NOTIFICATION_BROWSER_OPENED) {
2518 // Store the new browser ID and continue waiting for a new tab within it 2529 // Store the new browser ID and continue waiting for a new tab within it
2519 // to stop loading. 2530 // to stop loading.
2520 new_window_id_ = ExtensionTabUtil::GetWindowId( 2531 new_window_id_ = ExtensionTabUtil::GetWindowId(
2521 content::Source<Browser>(source).ptr()); 2532 content::Source<Browser>(source).ptr());
2522 } else { 2533 } else {
2523 DCHECK_EQ(content::NOTIFICATION_LOAD_STOP, type); 2534 DCHECK_EQ(content::NOTIFICATION_LOAD_STOP, type);
2524 // Only send the result if the loaded tab is in the new window. 2535 // Only send the result if the loaded tab is in the new window.
2525 NavigationController* controller = 2536 NavigationController* controller =
2526 content::Source<NavigationController>(source).ptr(); 2537 content::Source<NavigationController>(source).ptr();
2527 SessionTabHelper* session_tab_helper = 2538 SessionTabHelper* session_tab_helper =
2528 SessionTabHelper::FromWebContents(controller->GetWebContents()); 2539 SessionTabHelper::FromWebContents(controller->GetWebContents());
2529 int window_id = session_tab_helper ? session_tab_helper->window_id().id() 2540 int window_id = session_tab_helper ? session_tab_helper->window_id().id()
2530 : -1; 2541 : -1;
2531 if (window_id == new_window_id_) { 2542 if (window_id == new_window_id_) {
2532 if (automation_) { 2543 if (automation_.get()) {
2533 AutomationJSONReply(automation_, reply_message_.release()) 2544 AutomationJSONReply(automation_.get(), reply_message_.release())
2534 .SendSuccess(NULL); 2545 .SendSuccess(NULL);
2535 } 2546 }
2536 delete this; 2547 delete this;
2537 } 2548 }
2538 } 2549 }
2539 } 2550 }
2540 2551
2541 ExtensionPopupObserver::ExtensionPopupObserver( 2552 ExtensionPopupObserver::ExtensionPopupObserver(
2542 AutomationProvider* automation, 2553 AutomationProvider* automation,
2543 IPC::Message* reply_message, 2554 IPC::Message* reply_message,
2544 const std::string& extension_id) 2555 const std::string& extension_id)
2545 : automation_(automation->AsWeakPtr()), 2556 : automation_(automation->AsWeakPtr()),
2546 reply_message_(reply_message), 2557 reply_message_(reply_message),
2547 extension_id_(extension_id) { 2558 extension_id_(extension_id) {
2548 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_HOST_DID_STOP_LOADING, 2559 registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_HOST_DID_STOP_LOADING,
2549 content::NotificationService::AllSources()); 2560 content::NotificationService::AllSources());
2550 } 2561 }
2551 2562
2552 ExtensionPopupObserver::~ExtensionPopupObserver() { 2563 ExtensionPopupObserver::~ExtensionPopupObserver() {
2553 } 2564 }
2554 2565
2555 void ExtensionPopupObserver::Observe( 2566 void ExtensionPopupObserver::Observe(
2556 int type, 2567 int type,
2557 const content::NotificationSource& source, 2568 const content::NotificationSource& source,
2558 const content::NotificationDetails& details) { 2569 const content::NotificationDetails& details) {
2559 if (!automation_) { 2570 if (!automation_.get()) {
2560 delete this; 2571 delete this;
2561 return; 2572 return;
2562 } 2573 }
2563 2574
2564 extensions::ExtensionHost* host = 2575 extensions::ExtensionHost* host =
2565 content::Details<extensions::ExtensionHost>(details).ptr(); 2576 content::Details<extensions::ExtensionHost>(details).ptr();
2566 if (host->extension_id() == extension_id_ && 2577 if (host->extension_id() == extension_id_ &&
2567 host->extension_host_type() == extensions::VIEW_TYPE_EXTENSION_POPUP) { 2578 host->extension_host_type() == extensions::VIEW_TYPE_EXTENSION_POPUP) {
2568 AutomationJSONReply(automation_, reply_message_.release()) 2579 AutomationJSONReply(automation_.get(), reply_message_.release())
2569 .SendSuccess(NULL); 2580 .SendSuccess(NULL);
2570 delete this; 2581 delete this;
2571 } 2582 }
2572 } 2583 }
2573 2584
2574 #if defined(OS_LINUX) 2585 #if defined(OS_LINUX)
2575 WindowMaximizedObserver::WindowMaximizedObserver( 2586 WindowMaximizedObserver::WindowMaximizedObserver(
2576 AutomationProvider* automation, 2587 AutomationProvider* automation,
2577 IPC::Message* reply_message) 2588 IPC::Message* reply_message)
2578 : automation_(automation->AsWeakPtr()), 2589 : automation_(automation->AsWeakPtr()),
2579 reply_message_(reply_message) { 2590 reply_message_(reply_message) {
2580 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_WINDOW_MAXIMIZED, 2591 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_WINDOW_MAXIMIZED,
2581 content::NotificationService::AllSources()); 2592 content::NotificationService::AllSources());
2582 } 2593 }
2583 2594
2584 WindowMaximizedObserver::~WindowMaximizedObserver() {} 2595 WindowMaximizedObserver::~WindowMaximizedObserver() {}
2585 2596
2586 void WindowMaximizedObserver::Observe( 2597 void WindowMaximizedObserver::Observe(
2587 int type, 2598 int type,
2588 const content::NotificationSource& source, 2599 const content::NotificationSource& source,
2589 const content::NotificationDetails& details) { 2600 const content::NotificationDetails& details) {
2590 DCHECK_EQ(chrome::NOTIFICATION_BROWSER_WINDOW_MAXIMIZED, type); 2601 DCHECK_EQ(chrome::NOTIFICATION_BROWSER_WINDOW_MAXIMIZED, type);
2591 2602
2592 if (automation_) { 2603 if (automation_.get()) {
2593 AutomationJSONReply(automation_, reply_message_.release()) 2604 AutomationJSONReply(automation_.get(), reply_message_.release())
2594 .SendSuccess(NULL); 2605 .SendSuccess(NULL);
2595 } 2606 }
2596 delete this; 2607 delete this;
2597 } 2608 }
2598 #endif // defined(OS_LINUX) 2609 #endif // defined(OS_LINUX)
2599 2610
2600 BrowserOpenedWithExistingProfileNotificationObserver:: 2611 BrowserOpenedWithExistingProfileNotificationObserver::
2601 BrowserOpenedWithExistingProfileNotificationObserver( 2612 BrowserOpenedWithExistingProfileNotificationObserver(
2602 AutomationProvider* automation, 2613 AutomationProvider* automation,
2603 IPC::Message* reply_message, 2614 IPC::Message* reply_message,
2604 int num_loads) 2615 int num_loads)
2605 : automation_(automation->AsWeakPtr()), 2616 : automation_(automation->AsWeakPtr()),
2606 reply_message_(reply_message), 2617 reply_message_(reply_message),
2607 new_window_id_(extension_misc::kUnknownWindowId), 2618 new_window_id_(extension_misc::kUnknownWindowId),
2608 num_loads_(num_loads) { 2619 num_loads_(num_loads) {
2609 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_OPENED, 2620 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_OPENED,
2610 content::NotificationService::AllBrowserContextsAndSources()); 2621 content::NotificationService::AllBrowserContextsAndSources());
2611 registrar_.Add(this, content::NOTIFICATION_LOAD_STOP, 2622 registrar_.Add(this, content::NOTIFICATION_LOAD_STOP,
2612 content::NotificationService::AllBrowserContextsAndSources()); 2623 content::NotificationService::AllBrowserContextsAndSources());
2613 } 2624 }
2614 2625
2615 BrowserOpenedWithExistingProfileNotificationObserver:: 2626 BrowserOpenedWithExistingProfileNotificationObserver::
2616 ~BrowserOpenedWithExistingProfileNotificationObserver() { 2627 ~BrowserOpenedWithExistingProfileNotificationObserver() {
2617 } 2628 }
2618 2629
2619 void BrowserOpenedWithExistingProfileNotificationObserver::Observe( 2630 void BrowserOpenedWithExistingProfileNotificationObserver::Observe(
2620 int type, 2631 int type,
2621 const content::NotificationSource& source, 2632 const content::NotificationSource& source,
2622 const content::NotificationDetails& details) { 2633 const content::NotificationDetails& details) {
2623 if (!automation_) { 2634 if (!automation_.get()) {
2624 delete this; 2635 delete this;
2625 return; 2636 return;
2626 } 2637 }
2627 2638
2628 if (type == chrome::NOTIFICATION_BROWSER_OPENED) { 2639 if (type == chrome::NOTIFICATION_BROWSER_OPENED) {
2629 // Store the new browser ID and continue waiting for NOTIFICATION_LOAD_STOP. 2640 // Store the new browser ID and continue waiting for NOTIFICATION_LOAD_STOP.
2630 new_window_id_ = ExtensionTabUtil::GetWindowId( 2641 new_window_id_ = ExtensionTabUtil::GetWindowId(
2631 content::Source<Browser>(source).ptr()); 2642 content::Source<Browser>(source).ptr());
2632 } else if (type == content::NOTIFICATION_LOAD_STOP) { 2643 } else if (type == content::NOTIFICATION_LOAD_STOP) {
2633 // Only consider if the loaded tab is in the new window. 2644 // Only consider if the loaded tab is in the new window.
2634 NavigationController* controller = 2645 NavigationController* controller =
2635 content::Source<NavigationController>(source).ptr(); 2646 content::Source<NavigationController>(source).ptr();
2636 SessionTabHelper* session_tab_helper = 2647 SessionTabHelper* session_tab_helper =
2637 SessionTabHelper::FromWebContents(controller->GetWebContents()); 2648 SessionTabHelper::FromWebContents(controller->GetWebContents());
2638 int window_id = session_tab_helper ? session_tab_helper->window_id().id() 2649 int window_id = session_tab_helper ? session_tab_helper->window_id().id()
2639 : -1; 2650 : -1;
2640 if (window_id == new_window_id_ && --num_loads_ == 0) { 2651 if (window_id == new_window_id_ && --num_loads_ == 0) {
2641 if (automation_) { 2652 if (automation_.get()) {
2642 AutomationJSONReply(automation_, reply_message_.release()) 2653 AutomationJSONReply(automation_.get(), reply_message_.release())
2643 .SendSuccess(NULL); 2654 .SendSuccess(NULL);
2644 } 2655 }
2645 delete this; 2656 delete this;
2646 } 2657 }
2647 } else { 2658 } else {
2648 NOTREACHED(); 2659 NOTREACHED();
2649 } 2660 }
2650 } 2661 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/automation/testing_automation_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698