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