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

Side by Side Diff: content/shell/shell_browser_main_parts.cc

Issue 23316003: [content shell] move browser process stuff into browser/ subdir (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « content/shell/shell_browser_main_parts.h ('k') | content/shell/shell_browser_main_parts_mac.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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 #include "content/shell/shell_browser_main_parts.h"
6
7 #include "base/bind.h"
8 #include "base/command_line.h"
9 #include "base/files/file_path.h"
10 #include "base/message_loop/message_loop.h"
11 #include "base/threading/thread.h"
12 #include "base/threading/thread_restrictions.h"
13 #include "cc/base/switches.h"
14 #include "content/public/browser/browser_thread.h"
15 #include "content/public/browser/storage_partition.h"
16 #include "content/public/common/content_switches.h"
17 #include "content/public/common/main_function_params.h"
18 #include "content/public/common/url_constants.h"
19 #include "content/shell/common/shell_switches.h"
20 #include "content/shell/shell.h"
21 #include "content/shell/shell_browser_context.h"
22 #include "content/shell/shell_devtools_delegate.h"
23 #include "content/shell/shell_net_log.h"
24 #include "grit/net_resources.h"
25 #include "net/base/net_module.h"
26 #include "net/base/net_util.h"
27 #include "ui/base/resource/resource_bundle.h"
28 #include "url/gurl.h"
29 #include "webkit/browser/quota/quota_manager.h"
30
31 #if defined(ENABLE_PLUGINS)
32 #include "content/public/browser/plugin_service.h"
33 #include "content/shell/shell_plugin_service_filter.h"
34 #endif
35
36 #if defined(OS_ANDROID)
37 #include "net/android/network_change_notifier_factory_android.h"
38 #include "net/base/network_change_notifier.h"
39 #endif
40
41 #if defined(USE_AURA) && defined(USE_X11)
42 #include "ui/base/touch/touch_factory_x11.h"
43 #endif
44
45 namespace content {
46
47 namespace {
48
49 // Default quota for each origin is 5MB.
50 const int kDefaultLayoutTestQuotaBytes = 5 * 1024 * 1024;
51
52 GURL GetStartupURL() {
53 CommandLine* command_line = CommandLine::ForCurrentProcess();
54 if (command_line->HasSwitch(switches::kContentBrowserTest))
55 return GURL();
56 const CommandLine::StringVector& args = command_line->GetArgs();
57
58 #if defined(OS_ANDROID)
59 // Delay renderer creation on Android until surface is ready.
60 return GURL();
61 #endif
62
63 if (args.empty())
64 return GURL("http://www.google.com/");
65
66 GURL url(args[0]);
67 if (url.is_valid() && url.has_scheme())
68 return url;
69
70 return net::FilePathToFileURL(base::FilePath(args[0]));
71 }
72
73 base::StringPiece PlatformResourceProvider(int key) {
74 if (key == IDR_DIR_HEADER_HTML) {
75 base::StringPiece html_data =
76 ui::ResourceBundle::GetSharedInstance().GetRawDataResource(
77 IDR_DIR_HEADER_HTML);
78 return html_data;
79 }
80 return base::StringPiece();
81 }
82
83 } // namespace
84
85 ShellBrowserMainParts::ShellBrowserMainParts(
86 const MainFunctionParams& parameters)
87 : BrowserMainParts(), parameters_(parameters), run_message_loop_(true) {}
88
89 ShellBrowserMainParts::~ShellBrowserMainParts() {
90 }
91
92 #if !defined(OS_MACOSX)
93 void ShellBrowserMainParts::PreMainMessageLoopStart() {
94 #if defined(USE_AURA) && defined(USE_X11)
95 ui::TouchFactory::SetTouchDeviceListFromCommandLine();
96 #endif
97 }
98 #endif
99
100 void ShellBrowserMainParts::PostMainMessageLoopStart() {
101 #if defined(OS_ANDROID)
102 base::MessageLoopForUI::current()->Start();
103 #endif
104 }
105
106 void ShellBrowserMainParts::PreEarlyInitialization() {
107 #if defined(OS_ANDROID)
108 net::NetworkChangeNotifier::SetFactory(
109 new net::NetworkChangeNotifierFactoryAndroid());
110
111 CommandLine::ForCurrentProcess()->AppendSwitch(
112 cc::switches::kCompositeToMailbox);
113 #endif
114 }
115
116 void ShellBrowserMainParts::PreMainMessageLoopRun() {
117 net_log_.reset(new ShellNetLog());
118 browser_context_.reset(new ShellBrowserContext(false, net_log_.get()));
119 off_the_record_browser_context_.reset(
120 new ShellBrowserContext(true, net_log_.get()));
121
122 Shell::Initialize();
123 net::NetModule::SetResourceProvider(PlatformResourceProvider);
124
125 devtools_delegate_.reset(new ShellDevToolsDelegate(browser_context_.get()));
126
127 if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree)) {
128 Shell::CreateNewWindow(browser_context_.get(),
129 GetStartupURL(),
130 NULL,
131 MSG_ROUTING_NONE,
132 gfx::Size());
133 }
134
135 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kDumpRenderTree)) {
136 quota::QuotaManager* quota_manager =
137 BrowserContext::GetDefaultStoragePartition(browser_context())
138 ->GetQuotaManager();
139 BrowserThread::PostTask(
140 BrowserThread::IO,
141 FROM_HERE,
142 base::Bind(&quota::QuotaManager::SetTemporaryGlobalOverrideQuota,
143 quota_manager,
144 kDefaultLayoutTestQuotaBytes *
145 quota::QuotaManager::kPerHostTemporaryPortion,
146 quota::QuotaCallback()));
147 #if defined(ENABLE_PLUGINS)
148 PluginService* plugin_service = PluginService::GetInstance();
149 plugin_service_filter_.reset(new ShellPluginServiceFilter);
150 plugin_service->SetFilter(plugin_service_filter_.get());
151 #endif
152 }
153
154 if (parameters_.ui_task) {
155 parameters_.ui_task->Run();
156 delete parameters_.ui_task;
157 run_message_loop_ = false;
158 }
159 }
160
161 bool ShellBrowserMainParts::MainMessageLoopRun(int* result_code) {
162 return !run_message_loop_;
163 }
164
165 void ShellBrowserMainParts::PostMainMessageLoopRun() {
166 #if defined(USE_AURA)
167 Shell::PlatformExit();
168 #endif
169 if (devtools_delegate_)
170 devtools_delegate_->Stop();
171 browser_context_.reset();
172 off_the_record_browser_context_.reset();
173 }
174
175 } // namespace
OLDNEW
« no previous file with comments | « content/shell/shell_browser_main_parts.h ('k') | content/shell/shell_browser_main_parts_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698