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 // 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