1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_TAB_OBSERVER_H_ 6#define CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_TAB_OBSERVER_H_ 7 8#include "base/memory/scoped_ptr.h" 9#include "base/prefs/pref_change_registrar.h" 10#include "content/public/browser/web_contents_user_data.h" 11 12namespace content { 13class WebContents; 14} 15 16namespace safe_browsing { 17 18class ClientSideDetectionHost; 19 20// Per-tab class to handle safe-browsing functionality. 21class SafeBrowsingTabObserver 22 : public content::WebContentsUserData<SafeBrowsingTabObserver> { 23 public: 24 virtual ~SafeBrowsingTabObserver(); 25 26 ClientSideDetectionHost* detection_host() { 27 return safebrowsing_detection_host_.get(); 28 } 29 30 private: 31 explicit SafeBrowsingTabObserver(content::WebContents* web_contents); 32 friend class content::WebContentsUserData<SafeBrowsingTabObserver>; 33 34 // Internal helpers ---------------------------------------------------------- 35 36 // Create or destroy SafebrowsingDetectionHost as needed if the user's 37 // safe browsing preference has changed. 38 void UpdateSafebrowsingDetectionHost(); 39 40 // Handles IPCs. 41 scoped_ptr<ClientSideDetectionHost> safebrowsing_detection_host_; 42 43 // Our owning WebContents. 44 content::WebContents* web_contents_; 45 46 PrefChangeRegistrar pref_change_registrar_; 47 48 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingTabObserver); 49}; 50 51} // namespace safe_browsing 52 53#endif // CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_TAB_OBSERVER_H_ 54