15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 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)#ifndef CHROME_BROWSER_GOOGLE_GOOGLE_URL_TRACKER_MAP_ENTRY_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_GOOGLE_GOOGLE_URL_TRACKER_MAP_ENTRY_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_observer.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_registrar.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GoogleURLTracker;
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GoogleURLTrackerInfoBarDelegate;
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class InfoBarService;
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace content {
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class NavigationController;
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GoogleURLTrackerMapEntry : public content::NotificationObserver {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GoogleURLTrackerMapEntry(
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      GoogleURLTracker* google_url_tracker,
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      InfoBarService* infobar_service,
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const content::NavigationController* navigation_controller);
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~GoogleURLTrackerMapEntry();
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  bool has_infobar_delegate() const { return !!infobar_delegate_; }
287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  GoogleURLTrackerInfoBarDelegate* infobar_delegate() {
297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    return infobar_delegate_;
307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  }
317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  void SetInfoBarDelegate(GoogleURLTrackerInfoBarDelegate* infobar_delegate);
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const content::NavigationController* navigation_controller() const {
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return navigation_controller_;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void Close(bool redo_search);
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  friend class GoogleURLTrackerTest;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // content::NotificationObserver:
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Observe(int type,
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const content::NotificationSource& source,
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const content::NotificationDetails& details) OVERRIDE;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content::NotificationRegistrar registrar_;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GoogleURLTracker* const google_url_tracker_;
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const InfoBarService* const infobar_service_;
507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  GoogleURLTrackerInfoBarDelegate* infobar_delegate_;
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const content::NavigationController* const navigation_controller_;
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(GoogleURLTrackerMapEntry);
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_GOOGLE_GOOGLE_URL_TRACKER_MAP_ENTRY_H_
57