15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/test_notification_tracker.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_service.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_types.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TestNotificationTracker::Event::Event()
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : type(NOTIFICATION_ALL),
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      source(NotificationService::AllSources()),
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      details(NotificationService::NoDetails()) {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TestNotificationTracker::Event::Event(int t,
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      NotificationSource s,
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                      NotificationDetails d)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : type(t),
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      source(s),
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      details(d) {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TestNotificationTracker::TestNotificationTracker() {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TestNotificationTracker::~TestNotificationTracker() {
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TestNotificationTracker::ListenFor(
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int type,
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const NotificationSource& source) {
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  registrar_.Add(this, type, source);
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TestNotificationTracker::Reset() {
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  events_.clear();
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestNotificationTracker::Check1AndReset(int type) {
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (size() != 1) {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    Reset();
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return false;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool success = events_[0].type == type;
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Reset();
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return success;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestNotificationTracker::Check2AndReset(int type1,
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                             int type2) {
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (size() != 2) {
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    Reset();
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return false;
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool success = events_[0].type == type1 && events_[1].type == type2;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Reset();
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return success;
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestNotificationTracker::Check3AndReset(int type1,
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                             int type2,
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                             int type3) {
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (size() != 3) {
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    Reset();
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return false;
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool success = events_[0].type == type1 &&
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 events_[1].type == type2 &&
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                 events_[2].type == type3;
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Reset();
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return success;
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TestNotificationTracker::Observe(
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int type,
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const NotificationSource& source,
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const NotificationDetails& details) {
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  events_.push_back(Event(type, source, details));
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
84