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

Side by Side Diff: blimp/engine/app/blimp_browser_main_parts.cc

Issue 2091023006: Adds EngineGeolocationFeature for Blimp Geolocation project. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge Created 4 years, 5 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "blimp/engine/app/blimp_browser_main_parts.h" 5 #include "blimp/engine/app/blimp_browser_main_parts.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/threading/thread_restrictions.h" 9 #include "base/threading/thread_restrictions.h"
10 #include "blimp/common/proto/blimp_message.pb.h" 10 #include "blimp/common/proto/blimp_message.pb.h"
11 #include "blimp/engine/app/blimp_engine_config.h" 11 #include "blimp/engine/app/blimp_engine_config.h"
12 #include "blimp/engine/app/settings_manager.h" 12 #include "blimp/engine/app/settings_manager.h"
13 #include "blimp/engine/common/blimp_browser_context.h" 13 #include "blimp/engine/common/blimp_browser_context.h"
14 #include "blimp/engine/feature/geolocation/blimp_location_provider.h" 14 #include "blimp/engine/feature/geolocation/blimp_location_provider.h"
15 #include "blimp/engine/session/blimp_engine_session.h" 15 #include "blimp/engine/session/blimp_engine_session.h"
16 #include "blimp/net/blimp_connection.h" 16 #include "blimp/net/blimp_connection.h"
17 #include "content/public/browser/browser_thread.h" 17 #include "content/public/browser/browser_thread.h"
18 #include "content/public/browser/geolocation_delegate.h"
19 #include "content/public/browser/geolocation_provider.h"
20 #include "content/public/common/main_function_params.h" 18 #include "content/public/common/main_function_params.h"
21 #include "net/base/net_module.h" 19 #include "net/base/net_module.h"
22 #include "net/log/net_log.h" 20 #include "net/log/net_log.h"
23 21
24 namespace blimp { 22 namespace blimp {
25 namespace engine { 23 namespace engine {
26 24
27 namespace {
28 // A provider of services needed by Geolocation.
29 class BlimpGeolocationDelegate : public content::GeolocationDelegate {
30 public:
31 BlimpGeolocationDelegate() = default;
32
33 bool UseNetworkLocationProviders() final { return false; }
34
35 std::unique_ptr<content::LocationProvider> OverrideSystemLocationProvider()
36 final {
37 return base::WrapUnique(new BlimpLocationProvider());
38 }
39
40 private:
41 DISALLOW_COPY_AND_ASSIGN(BlimpGeolocationDelegate);
42 };
43
44 } // anonymous namespace
45
46 BlimpBrowserMainParts::BlimpBrowserMainParts( 25 BlimpBrowserMainParts::BlimpBrowserMainParts(
47 const content::MainFunctionParams& parameters) {} 26 const content::MainFunctionParams& parameters) {}
48 27
49 BlimpBrowserMainParts::~BlimpBrowserMainParts() {} 28 BlimpBrowserMainParts::~BlimpBrowserMainParts() {}
50 29
51 void BlimpBrowserMainParts::PreEarlyInitialization() { 30 void BlimpBrowserMainParts::PreEarlyInitialization() {
52 // Fetch the engine config from the command line, and crash if invalid. Allow 31 // Fetch the engine config from the command line, and crash if invalid. Allow
53 // IO operations even though this is not in the FILE thread as this is 32 // IO operations even though this is not in the FILE thread as this is
54 // necessary for Blimp startup and occurs before any user interaction. 33 // necessary for Blimp startup and occurs before any user interaction.
55 { 34 {
56 const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); 35 const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
57 base::ThreadRestrictions::ScopedAllowIO allow_io; 36 base::ThreadRestrictions::ScopedAllowIO allow_io;
58 engine_config_ = BlimpEngineConfig::Create(*cmd_line); 37 engine_config_ = BlimpEngineConfig::Create(*cmd_line);
59 CHECK(engine_config_); 38 CHECK(engine_config_);
60 } 39 }
61 } 40 }
62 41
63 void BlimpBrowserMainParts::PreMainMessageLoopRun() { 42 void BlimpBrowserMainParts::PreMainMessageLoopRun() {
64 net_log_.reset(new net::NetLog()); 43 net_log_.reset(new net::NetLog());
65 settings_manager_.reset(new SettingsManager); 44 settings_manager_.reset(new SettingsManager);
66 std::unique_ptr<BlimpBrowserContext> browser_context( 45 std::unique_ptr<BlimpBrowserContext> browser_context(
67 new BlimpBrowserContext(false, net_log_.get())); 46 new BlimpBrowserContext(false, net_log_.get()));
68 content::GeolocationProvider::SetGeolocationDelegate(
69 new BlimpGeolocationDelegate());
70 engine_session_.reset( 47 engine_session_.reset(
71 new BlimpEngineSession(std::move(browser_context), net_log_.get(), 48 new BlimpEngineSession(std::move(browser_context), net_log_.get(),
72 engine_config_.get(), settings_manager_.get())); 49 engine_config_.get(), settings_manager_.get()));
73 engine_session_->Initialize(); 50 engine_session_->Initialize();
74 } 51 }
75 52
76 void BlimpBrowserMainParts::PostMainMessageLoopRun() { 53 void BlimpBrowserMainParts::PostMainMessageLoopRun() {
77 engine_session_.reset(); 54 engine_session_.reset();
78 } 55 }
79 56
80 BlimpBrowserContext* BlimpBrowserMainParts::GetBrowserContext() { 57 BlimpBrowserContext* BlimpBrowserMainParts::GetBrowserContext() {
81 return engine_session_->browser_context(); 58 return engine_session_->browser_context();
82 } 59 }
83 60
84 SettingsManager* BlimpBrowserMainParts::GetSettingsManager() { 61 SettingsManager* BlimpBrowserMainParts::GetSettingsManager() {
85 return settings_manager_.get(); 62 return settings_manager_.get();
86 } 63 }
87 64
88 BlobChannelSender* BlimpBrowserMainParts::GetBlobChannelSender() { 65 BlobChannelSender* BlimpBrowserMainParts::GetBlobChannelSender() {
89 return engine_session_->blob_channel_sender(); 66 return engine_session_->blob_channel_sender();
90 } 67 }
91 68
92 BlimpEngineSession* BlimpBrowserMainParts::GetBlimpEngineSession() { 69 BlimpEngineSession* BlimpBrowserMainParts::GetBlimpEngineSession() {
93 return engine_session_.get(); 70 return engine_session_.get();
94 } 71 }
95 72
96 } // namespace engine 73 } // namespace engine
97 } // namespace blimp 74 } // namespace blimp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698