Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(86)

Side by Side Diff: components/subresource_filter/content/browser/content_subresource_filter_driver_factory.cc

Issue 2022783002: Skeleton of the Safe Browsing Subresource Filter. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Implement RenderFrameObserver::OnDestruct introduced by rebase. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 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 #include "components/subresource_filter/content/browser/content_subresource_filt er_driver_factory.h"
6
7 #include "components/subresource_filter/content/browser/content_subresource_filt er_driver.h"
8 #include "components/subresource_filter/core/browser/subresource_filter_features .h"
9 #include "content/public/browser/render_frame_host.h"
10 #include "content/public/browser/web_contents.h"
11 #include "url/gurl.h"
12
13 namespace subresource_filter {
14
15 // static
16 const char ContentSubresourceFilterDriverFactory::kWebContentsUserDataKey[] =
17 "web_contents_subresource_filter_driver_factory";
18
19 // static
20 void ContentSubresourceFilterDriverFactory::CreateForWebContents(
21 content::WebContents* web_contents) {
22 if (FromWebContents(web_contents))
23 return;
24 web_contents->SetUserData(
25 kWebContentsUserDataKey,
26 new ContentSubresourceFilterDriverFactory(web_contents));
27 }
28
29 // static
30 ContentSubresourceFilterDriverFactory*
31 ContentSubresourceFilterDriverFactory::FromWebContents(
32 content::WebContents* web_contents) {
33 return static_cast<ContentSubresourceFilterDriverFactory*>(
34 web_contents->GetUserData(kWebContentsUserDataKey));
35 }
36
37 ContentSubresourceFilterDriverFactory::ContentSubresourceFilterDriverFactory(
38 content::WebContents* web_contents)
39 : content::WebContentsObserver(web_contents) {
40 content::RenderFrameHost* main_frame_host = web_contents->GetMainFrame();
41 if (main_frame_host && main_frame_host->IsRenderFrameLive())
42 CreateDriverForFrameHostIfNeeded(main_frame_host);
43 }
44
45 ContentSubresourceFilterDriverFactory::
46 ~ContentSubresourceFilterDriverFactory() {}
47
48 void ContentSubresourceFilterDriverFactory::CreateDriverForFrameHostIfNeeded(
49 content::RenderFrameHost* render_frame_host) {
50 auto iterator_and_inserted =
51 frame_drivers_.insert(std::make_pair(render_frame_host, nullptr));
52 if (iterator_and_inserted.second) {
53 iterator_and_inserted.first->second.reset(
54 new ContentSubresourceFilterDriver(render_frame_host));
55 }
56 }
57
58 ContentSubresourceFilterDriver*
59 ContentSubresourceFilterDriverFactory::DriverFromFrameHost(
60 content::RenderFrameHost* render_frame_host) {
61 auto iterator = frame_drivers_.find(render_frame_host);
62 return iterator == frame_drivers_.end() ? nullptr : iterator->second.get();
63 }
64
65 void ContentSubresourceFilterDriverFactory::RenderFrameCreated(
66 content::RenderFrameHost* render_frame_host) {
67 CreateDriverForFrameHostIfNeeded(render_frame_host);
68 }
69
70 void ContentSubresourceFilterDriverFactory::RenderFrameDeleted(
71 content::RenderFrameHost* render_frame_host) {
72 frame_drivers_.erase(render_frame_host);
73 }
74
75 void ContentSubresourceFilterDriverFactory::DidStartProvisionalLoadForFrame(
76 content::RenderFrameHost* render_frame_host,
77 const GURL& validated_url,
78 bool is_error_page,
79 bool is_iframe_srcdoc) {
80 // TODO(melandory): Replace placeholder with actual activation logic.
81 DriverFromFrameHost(render_frame_host)
82 ->ActivateForProvisionalLoad(GetMaximumActivationState());
83 }
84
85 } // namespace subresource_filter
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698