OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/net/predictor_api.h" | 5 #include "chrome/browser/net/predictor_api.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/metrics/field_trial.h" | 10 #include "base/metrics/field_trial.h" |
11 #include "base/singleton.h" | 11 #include "base/lazy_instance.h" |
12 #include "base/stl_util-inl.h" | 12 #include "base/stl_util-inl.h" |
13 #include "base/string_number_conversions.h" | 13 #include "base/string_number_conversions.h" |
14 #include "base/thread.h" | 14 #include "base/thread.h" |
15 #include "base/values.h" | 15 #include "base/values.h" |
16 #include "base/waitable_event.h" | 16 #include "base/waitable_event.h" |
17 #include "chrome/browser/browser_process.h" | 17 #include "chrome/browser/browser_process.h" |
18 #include "chrome/browser/browser_thread.h" | 18 #include "chrome/browser/browser_thread.h" |
19 #include "chrome/browser/io_thread.h" | 19 #include "chrome/browser/io_thread.h" |
20 #include "chrome/browser/net/preconnect.h" | 20 #include "chrome/browser/net/preconnect.h" |
21 #include "chrome/browser/net/referrer.h" | 21 #include "chrome/browser/net/referrer.h" |
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 break; // Still some windows are incognito. | 323 break; // Still some windows are incognito. |
324 OnTheRecord(true); | 324 OnTheRecord(true); |
325 break; | 325 break; |
326 | 326 |
327 default: | 327 default: |
328 break; | 328 break; |
329 } | 329 } |
330 } | 330 } |
331 | 331 |
332 private: | 332 private: |
333 friend struct DefaultSingletonTraits<OffTheRecordObserver>; | 333 friend struct base::DefaultLazyInstanceTraits<OffTheRecordObserver>; |
| 334 |
334 OffTheRecordObserver() : count_off_the_record_windows_(0) {} | 335 OffTheRecordObserver() : count_off_the_record_windows_(0) {} |
335 ~OffTheRecordObserver() {} | 336 ~OffTheRecordObserver() {} |
336 | 337 |
337 NotificationRegistrar registrar_; | 338 NotificationRegistrar registrar_; |
338 int count_off_the_record_windows_; | 339 int count_off_the_record_windows_; |
339 | 340 |
340 DISALLOW_COPY_AND_ASSIGN(OffTheRecordObserver); | 341 DISALLOW_COPY_AND_ASSIGN(OffTheRecordObserver); |
341 }; | 342 }; |
342 | 343 |
| 344 static base::LazyInstance<OffTheRecordObserver> g_off_the_record_observer( |
| 345 base::LINKER_INITIALIZED); |
| 346 |
343 //------------------------------------------------------------------------------ | 347 //------------------------------------------------------------------------------ |
344 // This section supports the about:dns page. | 348 // This section supports the about:dns page. |
345 //------------------------------------------------------------------------------ | 349 //------------------------------------------------------------------------------ |
346 | 350 |
347 // Provide global support for the about:dns page. | 351 // Provide global support for the about:dns page. |
348 void PredictorGetHtmlInfo(std::string* output) { | 352 void PredictorGetHtmlInfo(std::string* output) { |
349 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 353 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
350 | 354 |
351 output->append("<html><head><title>About DNS</title>" | 355 output->append("<html><head><title>About DNS</title>" |
352 // We'd like the following no-cache... but it doesn't work. | 356 // We'd like the following no-cache... but it doesn't work. |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
569 int max_4_concurrent_prefetch = trial_->AppendGroup( | 573 int max_4_concurrent_prefetch = trial_->AppendGroup( |
570 "max_4 concurrent_prefetch", kProbabilityPerGroup); | 574 "max_4 concurrent_prefetch", kProbabilityPerGroup); |
571 int max_6_concurrent_prefetch = trial_->AppendGroup( | 575 int max_6_concurrent_prefetch = trial_->AppendGroup( |
572 "max_6 concurrent_prefetch", kProbabilityPerGroup); | 576 "max_6 concurrent_prefetch", kProbabilityPerGroup); |
573 | 577 |
574 trial_->AppendGroup("default_enabled_prefetch", | 578 trial_->AppendGroup("default_enabled_prefetch", |
575 base::FieldTrial::kAllRemainingProbability); | 579 base::FieldTrial::kAllRemainingProbability); |
576 | 580 |
577 // We will register the incognito observer regardless of whether prefetching | 581 // We will register the incognito observer regardless of whether prefetching |
578 // is enabled, as it is also used to clear the host cache. | 582 // is enabled, as it is also used to clear the host cache. |
579 Singleton<OffTheRecordObserver>::get()->Register(); | 583 g_off_the_record_observer.Get().Register(); |
580 | 584 |
581 if (trial_->group() != disabled_prefetch) { | 585 if (trial_->group() != disabled_prefetch) { |
582 // Initialize the DNS prefetch system. | 586 // Initialize the DNS prefetch system. |
583 size_t max_parallel_resolves = kMaxSpeculativeParallelResolves; | 587 size_t max_parallel_resolves = kMaxSpeculativeParallelResolves; |
584 int max_queueing_delay_ms = kMaxSpeculativeResolveQueueDelayMs; | 588 int max_queueing_delay_ms = kMaxSpeculativeResolveQueueDelayMs; |
585 | 589 |
586 if (trial_->group() == max_2_concurrent_prefetch) | 590 if (trial_->group() == max_2_concurrent_prefetch) |
587 max_parallel_resolves = 2; | 591 max_parallel_resolves = 2; |
588 else if (trial_->group() == max_4_concurrent_prefetch) | 592 else if (trial_->group() == max_4_concurrent_prefetch) |
589 max_parallel_resolves = 4; | 593 max_parallel_resolves = 4; |
(...skipping 20 matching lines...) Expand all Loading... |
610 DCHECK(!g_predictor); | 614 DCHECK(!g_predictor); |
611 InitNetworkPredictor(max_queueing_delay, max_parallel_resolves, user_prefs, | 615 InitNetworkPredictor(max_queueing_delay, max_parallel_resolves, user_prefs, |
612 local_state, preconnect_enabled); | 616 local_state, preconnect_enabled); |
613 } | 617 } |
614 } | 618 } |
615 | 619 |
616 PredictorInit::~PredictorInit() { | 620 PredictorInit::~PredictorInit() { |
617 } | 621 } |
618 | 622 |
619 } // namespace chrome_browser_net | 623 } // namespace chrome_browser_net |
OLD | NEW |