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 12 namespace content { 13 class WebContents; 14 } 15 16 namespace safe_browsing { 17 18 class ClientSideDetectionHost; 19 20 // Per-tab class to handle safe-browsing functionality. 21 class SafeBrowsingTabObserver 22 : public content::WebContentsUserData<SafeBrowsingTabObserver> { 23 public: 24 virtual ~SafeBrowsingTabObserver(); 25 26 // Forwards to detection host is client-side detection is enabled. 27 bool DidPageReceiveSafeBrowsingMatch() const; 28 29 private: 30 explicit SafeBrowsingTabObserver(content::WebContents* web_contents); 31 friend class content::WebContentsUserData<SafeBrowsingTabObserver>; 32 33 // Internal helpers ---------------------------------------------------------- 34 35 // Create or destroy SafebrowsingDetectionHost as needed if the user's 36 // safe browsing preference has changed. 37 void UpdateSafebrowsingDetectionHost(); 38 39 // Handles IPCs. 40 scoped_ptr<ClientSideDetectionHost> safebrowsing_detection_host_; 41 42 // Our owning WebContents. 43 content::WebContents* web_contents_; 44 45 PrefChangeRegistrar pref_change_registrar_; 46 47 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingTabObserver); 48 }; 49 50 } // namespace safe_browsing 51 52 #endif // CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_TAB_OBSERVER_H_ 53