1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Copyright 2014 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)
5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#ifndef COMPONENTS_GOOGLE_CORE_BROWSER_GOOGLE_URL_TRACKER_MAP_ENTRY_H_
6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#define COMPONENTS_GOOGLE_CORE_BROWSER_GOOGLE_URL_TRACKER_MAP_ENTRY_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "components/google/core/browser/google_url_tracker_infobar_delegate.h"
10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "components/google/core/browser/google_url_tracker_navigation_helper.h"
1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "components/infobars/core/infobar_manager.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GoogleURLTracker;
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace infobars {
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class InfoBarManager;
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class GoogleURLTrackerMapEntry : public infobars::InfoBarManager::Observer {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GoogleURLTrackerMapEntry(
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      GoogleURLTracker* google_url_tracker,
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      infobars::InfoBarManager* infobar_manager,
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      scoped_ptr<GoogleURLTrackerNavigationHelper> navigation_helper);
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)
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  GoogleURLTrackerNavigationHelper* navigation_helper() {
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    // This object gives ownership of |navigation_helper_| to the infobar
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    // delegate in SetInfoBarDelegate().
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return has_infobar_delegate() ?
37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        infobar_delegate_->navigation_helper() : navigation_helper_.get();
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  const infobars::InfoBarManager* infobar_manager() const {
4146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    return infobar_manager_;
4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  }
4346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void Close(bool redo_search);
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  friend class GoogleURLTrackerTest;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // infobars::InfoBarManager::Observer:
5046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual void OnInfoBarRemoved(infobars::InfoBar* infobar,
5146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                                bool animate) OVERRIDE;
5246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual void OnManagerShuttingDown(
5346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      infobars::InfoBarManager* manager) OVERRIDE;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GoogleURLTracker* const google_url_tracker_;
5646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  infobars::InfoBarManager* const infobar_manager_;
577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  GoogleURLTrackerInfoBarDelegate* infobar_delegate_;
58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  scoped_ptr<GoogleURLTrackerNavigationHelper> navigation_helper_;
5946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  bool observing_;
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(GoogleURLTrackerMapEntry);
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#endif  // COMPONENTS_GOOGLE_CORE_BROWSER_GOOGLE_URL_TRACKER_MAP_ENTRY_H_
65