blob: d1a95ecc0d3ecf3e83a9a69b31216c52174299eb [file] [log] [blame]
// Copyright 2015 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 file.
#include "blimp/engine/app/blimp_browser_main_parts.h"
#include "base/command_line.h"
#include "base/threading/thread_restrictions.h"
#include "blimp/common/proto/blimp_message.pb.h"
#include "blimp/engine/app/blimp_engine_config.h"
#include "blimp/engine/app/settings_manager.h"
#include "blimp/engine/common/blimp_browser_context.h"
#include "blimp/engine/session/blimp_engine_session.h"
#include "blimp/net/blimp_connection.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/common/main_function_params.h"
#include "net/base/net_module.h"
#include "net/log/net_log.h"
namespace blimp {
namespace engine {
BlimpBrowserMainParts::BlimpBrowserMainParts(
const content::MainFunctionParams& parameters) {}
BlimpBrowserMainParts::~BlimpBrowserMainParts() {}
void BlimpBrowserMainParts::PreEarlyInitialization() {
// Fetch the engine config from the command line, and crash if invalid. Allow
// IO operations even though this is not in the FILE thread as this is
// necessary for Blimp startup and occurs before any user interaction.
{
const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
base::ThreadRestrictions::ScopedAllowIO allow_io;
engine_config_ = BlimpEngineConfig::Create(*cmd_line);
CHECK(engine_config_);
}
}
void BlimpBrowserMainParts::PreMainMessageLoopRun() {
net_log_.reset(new net::NetLog());
settings_manager_.reset(new SettingsManager);
std::unique_ptr<BlimpBrowserContext> browser_context(
new BlimpBrowserContext(false, net_log_.get()));
engine_session_.reset(
new BlimpEngineSession(std::move(browser_context), net_log_.get(),
engine_config_.get(), settings_manager_.get()));
engine_session_->Initialize();
}
void BlimpBrowserMainParts::PostMainMessageLoopRun() {
engine_session_.reset();
}
BlimpBrowserContext* BlimpBrowserMainParts::GetBrowserContext() {
return engine_session_->browser_context();
}
SettingsManager* BlimpBrowserMainParts::GetSettingsManager() {
return settings_manager_.get();
}
BlobChannelSender* BlimpBrowserMainParts::GetBlobChannelSender() {
return engine_session_->blob_channel_sender();
}
BlimpEngineSession* BlimpBrowserMainParts::GetBlimpEngineSession() {
return engine_session_.get();
}
} // namespace engine
} // namespace blimp