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

Side by Side Diff: chrome/browser/safe_browsing/safe_browsing_navigation_observer_manager.cc

Issue 2724433002: Remove the retargeting notification (Closed)
Patch Set: Remove comments in safe browsing tests Created 3 years, 9 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
1 // Copyright 2016 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/safe_browsing/safe_browsing_navigation_observer_manager .h" 5 #include "chrome/browser/safe_browsing/safe_browsing_navigation_observer_manager .h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/metrics/histogram_macros.h" 8 #include "base/metrics/histogram_macros.h"
9 #include "base/strings/stringprintf.h" 9 #include "base/strings/stringprintf.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
11 #include "base/timer/timer.h" 11 #include "base/timer/timer.h"
12 #include "chrome/browser/browser_process.h" 12 #include "chrome/browser/browser_process.h"
13 #include "chrome/browser/chrome_notification_types.h"
14 #include "chrome/browser/profiles/profile.h" 13 #include "chrome/browser/profiles/profile.h"
15 #include "chrome/browser/safe_browsing/safe_browsing_navigation_observer.h" 14 #include "chrome/browser/safe_browsing/safe_browsing_navigation_observer.h"
16 #include "chrome/browser/safe_browsing/safe_browsing_service.h" 15 #include "chrome/browser/safe_browsing/safe_browsing_service.h"
17 #include "chrome/browser/sessions/session_tab_helper.h" 16 #include "chrome/browser/sessions/session_tab_helper.h"
18 #include "chrome/browser/tab_contents/retargeting_details.h"
19 #include "chrome/common/pref_names.h" 17 #include "chrome/common/pref_names.h"
20 #include "components/prefs/pref_service.h" 18 #include "components/prefs/pref_service.h"
21 #include "content/public/browser/navigation_details.h" 19 #include "content/public/browser/navigation_details.h"
22 #include "content/public/browser/notification_service.h"
23 #include "content/public/browser/notification_types.h"
24 #include "content/public/browser/render_frame_host.h" 20 #include "content/public/browser/render_frame_host.h"
25 #include "content/public/browser/render_process_host.h" 21 #include "content/public/browser/render_process_host.h"
26 #include "content/public/browser/web_contents.h" 22 #include "content/public/browser/web_contents.h"
27 23
28 using content::WebContents; 24 using content::WebContents;
29 25
30 namespace safe_browsing { 26 namespace safe_browsing {
31 27
32 namespace { 28 namespace {
33 29
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 Profile* profile) { 216 Profile* profile) {
221 return base::FeatureList::IsEnabled( 217 return base::FeatureList::IsEnabled(
222 SafeBrowsingNavigationObserverManager::kDownloadAttribution) && 218 SafeBrowsingNavigationObserverManager::kDownloadAttribution) &&
223 profile->GetPrefs()->GetBoolean(prefs::kSafeBrowsingEnabled) && 219 profile->GetPrefs()->GetBoolean(prefs::kSafeBrowsingEnabled) &&
224 g_browser_process->safe_browsing_service() && 220 g_browser_process->safe_browsing_service() &&
225 g_browser_process->safe_browsing_service()->navigation_observer_manager(); 221 g_browser_process->safe_browsing_service()->navigation_observer_manager();
226 } 222 }
227 223
228 SafeBrowsingNavigationObserverManager::SafeBrowsingNavigationObserverManager() 224 SafeBrowsingNavigationObserverManager::SafeBrowsingNavigationObserverManager()
229 : navigation_event_list_(kNavigationRecordMaxSize) { 225 : navigation_event_list_(kNavigationRecordMaxSize) {
230 registrar_.Add(this, chrome::NOTIFICATION_RETARGETING,
231 content::NotificationService::AllSources());
232 226
233 // Schedule clean up in 2 minutes. 227 // Schedule clean up in 2 minutes.
234 ScheduleNextCleanUpAfterInterval( 228 ScheduleNextCleanUpAfterInterval(
235 base::TimeDelta::FromSecondsD(kNavigationFootprintTTLInSecond)); 229 base::TimeDelta::FromSecondsD(kNavigationFootprintTTLInSecond));
236 } 230 }
237 231
238 void SafeBrowsingNavigationObserverManager::RecordNavigationEvent( 232 void SafeBrowsingNavigationObserverManager::RecordNavigationEvent(
239 std::unique_ptr<NavigationEvent> nav_event) { 233 std::unique_ptr<NavigationEvent> nav_event) {
240 navigation_event_list_.RecordNavigationEvent(std::move(nav_event)); 234 navigation_event_list_.RecordNavigationEvent(std::move(nav_event));
241 } 235 }
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 user_gesture_count, 383 user_gesture_count,
390 user_gesture_count_limit, 384 user_gesture_count_limit,
391 out_referrer_chain, 385 out_referrer_chain,
392 &result); 386 &result);
393 return result; 387 return result;
394 } 388 }
395 389
396 SafeBrowsingNavigationObserverManager:: 390 SafeBrowsingNavigationObserverManager::
397 ~SafeBrowsingNavigationObserverManager() {} 391 ~SafeBrowsingNavigationObserverManager() {}
398 392
399 void SafeBrowsingNavigationObserverManager::Observe( 393 void SafeBrowsingNavigationObserverManager::RecordNewWebContents(
400 int type, 394 content::WebContents* source_web_contents,
401 const content::NotificationSource& source, 395 int source_render_process_id,
402 const content::NotificationDetails& details) { 396 int source_render_frame_id,
403 if (type == chrome::NOTIFICATION_RETARGETING) 397 GURL target_url,
404 RecordRetargeting(details); 398 content::WebContents* target_web_contents,
405 } 399 bool not_yet_in_tabstrip) {
406 400 DCHECK(source_web_contents);
407 void SafeBrowsingNavigationObserverManager::RecordRetargeting( 401 DCHECK(target_web_contents);
408 const content::NotificationDetails& details) {
409 const RetargetingDetails* retargeting_detail =
410 content::Details<const RetargetingDetails>(details).ptr();
411 DCHECK(retargeting_detail);
412 content::WebContents* source_contents =
413 retargeting_detail->source_web_contents;
414 content::WebContents* target_contents =
415 retargeting_detail->target_web_contents;
416 DCHECK(source_contents);
417 DCHECK(target_contents);
418 402
419 content::RenderFrameHost* rfh = content::RenderFrameHost::FromID( 403 content::RenderFrameHost* rfh = content::RenderFrameHost::FromID(
420 retargeting_detail->source_render_process_id, 404 source_render_process_id, source_render_frame_id);
421 retargeting_detail->source_render_frame_id);
422 // Remove the "#" at the end of URL, since it does not point to any actual 405 // Remove the "#" at the end of URL, since it does not point to any actual
423 // page fragment ID. 406 // page fragment ID.
424 GURL target_url = SafeBrowsingNavigationObserverManager::ClearEmptyRef( 407 GURL cleaned_target_url =
425 retargeting_detail->target_url); 408 SafeBrowsingNavigationObserverManager::ClearEmptyRef(target_url);
426 409
427 std::unique_ptr<NavigationEvent> nav_event = 410 std::unique_ptr<NavigationEvent> nav_event =
428 base::MakeUnique<NavigationEvent>(); 411 base::MakeUnique<NavigationEvent>();
429 if (rfh) { 412 if (rfh) {
430 nav_event->source_url = 413 nav_event->source_url =
431 SafeBrowsingNavigationObserverManager::ClearEmptyRef( 414 SafeBrowsingNavigationObserverManager::ClearEmptyRef(
432 rfh->GetLastCommittedURL()); 415 rfh->GetLastCommittedURL());
433 } 416 }
434 nav_event->source_tab_id = SessionTabHelper::IdForTab(source_contents); 417 nav_event->source_tab_id = SessionTabHelper::IdForTab(source_web_contents);
435 nav_event->source_main_frame_url = 418 nav_event->source_main_frame_url =
436 SafeBrowsingNavigationObserverManager::ClearEmptyRef( 419 SafeBrowsingNavigationObserverManager::ClearEmptyRef(
437 source_contents->GetLastCommittedURL()); 420 source_web_contents->GetLastCommittedURL());
438 nav_event->original_request_url = target_url; 421 nav_event->original_request_url = cleaned_target_url;
439 nav_event->target_tab_id = SessionTabHelper::IdForTab(target_contents); 422 nav_event->target_tab_id = SessionTabHelper::IdForTab(target_web_contents);
440 nav_event->frame_id = rfh ? rfh->GetFrameTreeNodeId() : -1; 423 nav_event->frame_id = rfh ? rfh->GetFrameTreeNodeId() : -1;
441 auto it = user_gesture_map_.find(source_contents); 424 auto it = user_gesture_map_.find(source_web_contents);
442 if (it != user_gesture_map_.end() && 425 if (it != user_gesture_map_.end() &&
443 !SafeBrowsingNavigationObserverManager::IsUserGestureExpired( 426 !SafeBrowsingNavigationObserverManager::IsUserGestureExpired(
444 it->second)) { 427 it->second)) {
445 nav_event->is_user_initiated = true; 428 nav_event->is_user_initiated = true;
446 OnUserGestureConsumed(it->first, it->second); 429 OnUserGestureConsumed(it->first, it->second);
447 } else { 430 } else {
448 nav_event->is_user_initiated = false; 431 nav_event->is_user_initiated = false;
449 } 432 }
450 433
451 navigation_event_list_.RecordNavigationEvent(std::move(nav_event)); 434 navigation_event_list_.RecordNavigationEvent(std::move(nav_event));
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
604 out_result)); 587 out_result));
605 // Stop searching if the size of out_referrer_chain already reached its 588 // Stop searching if the size of out_referrer_chain already reached its
606 // limit. 589 // limit.
607 if (out_referrer_chain->size() == kReferrerChainMaxLength) 590 if (out_referrer_chain->size() == kReferrerChainMaxLength)
608 return; 591 return;
609 last_main_frame_url_traced = last_nav_event_traced->source_main_frame_url; 592 last_main_frame_url_traced = last_nav_event_traced->source_main_frame_url;
610 } 593 }
611 } 594 }
612 595
613 } // namespace safe_browsing 596 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698