2013-03-13 19:12:05 +00:00
|
|
|
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
|
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
|
|
// found in the LICENSE-CHROMIUM file.
|
|
|
|
|
2017-05-18 22:58:12 +00:00
|
|
|
#include "brightray/browser/browser_client.h"
|
2013-03-13 19:12:05 +00:00
|
|
|
|
2017-12-16 09:21:29 +00:00
|
|
|
#include "base/lazy_instance.h"
|
2015-12-24 14:20:47 +00:00
|
|
|
#include "base/path_service.h"
|
2017-05-18 22:58:12 +00:00
|
|
|
#include "brightray/browser/browser_context.h"
|
|
|
|
#include "brightray/browser/browser_main_parts.h"
|
|
|
|
#include "brightray/browser/devtools_manager_delegate.h"
|
|
|
|
#include "brightray/browser/media/media_capture_devices_dispatcher.h"
|
|
|
|
#include "brightray/browser/notification_presenter.h"
|
|
|
|
#include "brightray/browser/platform_notification_service.h"
|
2017-12-16 09:21:29 +00:00
|
|
|
#include "content/public/browser/browser_thread.h"
|
2014-07-09 07:38:53 +00:00
|
|
|
#include "content/public/common/url_constants.h"
|
|
|
|
|
2017-12-16 09:21:29 +00:00
|
|
|
using content::BrowserThread;
|
|
|
|
|
2013-03-13 19:12:05 +00:00
|
|
|
namespace brightray {
|
|
|
|
|
2013-04-18 03:27:53 +00:00
|
|
|
namespace {
|
|
|
|
|
|
|
|
BrowserClient* g_browser_client;
|
|
|
|
|
2017-12-16 09:21:29 +00:00
|
|
|
base::LazyInstance<std::string>::DestructorAtExit
|
|
|
|
g_io_thread_application_locale = LAZY_INSTANCE_INITIALIZER;
|
|
|
|
|
|
|
|
std::string g_application_locale;
|
|
|
|
|
|
|
|
void SetApplicationLocaleOnIOThread(const std::string& locale) {
|
|
|
|
DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
|
|
|
g_io_thread_application_locale.Get() = locale;
|
|
|
|
}
|
|
|
|
|
2017-03-31 18:18:20 +00:00
|
|
|
} // namespace
|
2013-04-18 03:27:53 +00:00
|
|
|
|
2017-12-16 09:21:29 +00:00
|
|
|
// static
|
|
|
|
void BrowserClient::SetApplicationLocale(const std::string& locale) {
|
|
|
|
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
|
|
|
|
2018-07-21 17:42:18 +00:00
|
|
|
if (!BrowserThread::IsThreadInitialized(BrowserThread::IO) ||
|
|
|
|
!BrowserThread::PostTask(
|
2017-12-16 09:21:29 +00:00
|
|
|
BrowserThread::IO, FROM_HERE,
|
|
|
|
base::BindOnce(&SetApplicationLocaleOnIOThread, locale))) {
|
|
|
|
g_io_thread_application_locale.Get() = locale;
|
|
|
|
}
|
|
|
|
g_application_locale = locale;
|
|
|
|
}
|
|
|
|
|
2013-04-18 03:27:53 +00:00
|
|
|
BrowserClient* BrowserClient::Get() {
|
|
|
|
return g_browser_client;
|
|
|
|
}
|
|
|
|
|
2018-04-18 01:56:12 +00:00
|
|
|
BrowserClient::BrowserClient() : browser_main_parts_(nullptr) {
|
2013-04-18 03:27:53 +00:00
|
|
|
DCHECK(!g_browser_client);
|
|
|
|
g_browser_client = this;
|
2013-03-13 19:12:05 +00:00
|
|
|
}
|
|
|
|
|
2018-04-18 01:56:12 +00:00
|
|
|
BrowserClient::~BrowserClient() {}
|
2013-03-13 19:12:05 +00:00
|
|
|
|
2018-04-17 23:47:47 +00:00
|
|
|
void BrowserClient::WebNotificationAllowed(
|
|
|
|
int render_process_id,
|
|
|
|
const base::Callback<void(bool, bool)>& callback) {
|
|
|
|
callback.Run(false, true);
|
|
|
|
}
|
|
|
|
|
2015-12-24 14:20:47 +00:00
|
|
|
NotificationPresenter* BrowserClient::GetNotificationPresenter() {
|
|
|
|
if (!notification_presenter_) {
|
2017-05-30 09:06:51 +00:00
|
|
|
// Create a new presenter if on OS X, Linux, or Windows 7+
|
2015-12-24 14:20:47 +00:00
|
|
|
notification_presenter_.reset(NotificationPresenter::Create());
|
|
|
|
}
|
|
|
|
return notification_presenter_.get();
|
|
|
|
}
|
|
|
|
|
2013-11-17 22:39:01 +00:00
|
|
|
BrowserMainParts* BrowserClient::OverrideCreateBrowserMainParts(
|
|
|
|
const content::MainFunctionParams&) {
|
2013-03-13 19:12:05 +00:00
|
|
|
return new BrowserMainParts;
|
|
|
|
}
|
|
|
|
|
2013-11-17 22:39:01 +00:00
|
|
|
content::BrowserMainParts* BrowserClient::CreateBrowserMainParts(
|
|
|
|
const content::MainFunctionParams& parameters) {
|
2013-03-27 12:54:19 +00:00
|
|
|
DCHECK(!browser_main_parts_);
|
|
|
|
browser_main_parts_ = OverrideCreateBrowserMainParts(parameters);
|
|
|
|
return browser_main_parts_;
|
2013-03-13 19:12:05 +00:00
|
|
|
}
|
|
|
|
|
2013-07-31 18:08:45 +00:00
|
|
|
content::MediaObserver* BrowserClient::GetMediaObserver() {
|
|
|
|
return MediaCaptureDevicesDispatcher::GetInstance();
|
|
|
|
}
|
|
|
|
|
2017-03-23 22:47:30 +00:00
|
|
|
content::PlatformNotificationService*
|
|
|
|
BrowserClient::GetPlatformNotificationService() {
|
2015-12-24 14:20:47 +00:00
|
|
|
if (!notification_service_)
|
|
|
|
notification_service_.reset(new PlatformNotificationService(this));
|
|
|
|
return notification_service_.get();
|
2015-03-09 02:37:13 +00:00
|
|
|
}
|
|
|
|
|
2014-07-09 07:38:53 +00:00
|
|
|
void BrowserClient::GetAdditionalAllowedSchemesForFileSystem(
|
|
|
|
std::vector<std::string>* additional_schemes) {
|
|
|
|
additional_schemes->push_back(content::kChromeDevToolsScheme);
|
|
|
|
additional_schemes->push_back(content::kChromeUIScheme);
|
|
|
|
}
|
|
|
|
|
2017-11-29 17:00:21 +00:00
|
|
|
void BrowserClient::GetAdditionalWebUISchemes(
|
|
|
|
std::vector<std::string>* additional_schemes) {
|
|
|
|
additional_schemes->push_back(content::kChromeDevToolsScheme);
|
|
|
|
}
|
|
|
|
|
2018-06-19 01:45:58 +00:00
|
|
|
NetLog* BrowserClient::GetNetLog() {
|
2016-05-23 10:02:13 +00:00
|
|
|
return &net_log_;
|
|
|
|
}
|
|
|
|
|
2014-07-28 09:48:55 +00:00
|
|
|
base::FilePath BrowserClient::GetDefaultDownloadDirectory() {
|
|
|
|
// ~/Downloads
|
|
|
|
base::FilePath path;
|
|
|
|
if (PathService::Get(base::DIR_HOME, &path))
|
|
|
|
path = path.Append(FILE_PATH_LITERAL("Downloads"));
|
|
|
|
|
|
|
|
return path;
|
|
|
|
}
|
|
|
|
|
2015-01-02 23:18:24 +00:00
|
|
|
content::DevToolsManagerDelegate* BrowserClient::GetDevToolsManagerDelegate() {
|
2015-01-10 01:14:52 +00:00
|
|
|
return new DevToolsManagerDelegate;
|
2015-01-02 23:18:24 +00:00
|
|
|
}
|
|
|
|
|
2017-12-16 09:21:29 +00:00
|
|
|
std::string BrowserClient::GetApplicationLocale() {
|
|
|
|
if (BrowserThread::CurrentlyOn(BrowserThread::IO))
|
|
|
|
return g_io_thread_application_locale.Get();
|
|
|
|
return g_application_locale;
|
|
|
|
}
|
|
|
|
|
2013-11-17 22:39:01 +00:00
|
|
|
} // namespace brightray
|