1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_AUTOMATION_AUTOMATION_TAB_TRACKER_H_ 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_AUTOMATION_AUTOMATION_TAB_TRACKER_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <map> 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/time.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/automation/automation_resource_tracker.h" 133345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 143345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickclass NavigationController; 153345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickclass NotificationType; 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass AutomationTabTracker 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch : public AutomationResourceTracker<NavigationController*> { 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 203345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick explicit AutomationTabTracker(IPC::Message::Sender* automation); 213345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual ~AutomationTabTracker(); 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 233345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual void AddObserver(NavigationController* resource); 243345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual void RemoveObserver(NavigationController* resource); 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void Observe(NotificationType type, 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const NotificationSource& source, 283345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick const NotificationDetails& details); 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 303345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick base::Time GetLastNavigationTime(int handle); 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Last time a navigation occurred. 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::map<NavigationController*, base::Time> last_navigation_times_; 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DISALLOW_COPY_AND_ASSIGN(AutomationTabTracker); 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // CHROME_BROWSER_AUTOMATION_AUTOMATION_TAB_TRACKER_H_ 40