| Index: blimp/client/app/linux/blimp_main.cc
|
| diff --git a/blimp/client/app/linux/blimp_main.cc b/blimp/client/app/linux/blimp_main.cc
|
| index 2f06d931953f8610e13822bcce2b2bd6a73ad227..3d9d731507fd7a868442367abd503159cb6791b3 100644
|
| --- a/blimp/client/app/linux/blimp_main.cc
|
| +++ b/blimp/client/app/linux/blimp_main.cc
|
| @@ -13,16 +13,33 @@
|
| #include "blimp/client/app/linux/blimp_client_context_delegate_linux.h"
|
| #include "blimp/client/app/linux/blimp_display_manager.h"
|
| #include "blimp/client/app/linux/blimp_display_manager_delegate_main.h"
|
| +#include "blimp/client/core/settings/settings_prefs.h"
|
| #include "blimp/client/public/blimp_client_context.h"
|
| #include "blimp/client/public/contents/blimp_navigation_controller.h"
|
| #include "blimp/client/support/compositor/compositor_dependencies_impl.h"
|
| +#include "components/pref_registry/pref_registry_syncable.h"
|
| +#include "components/prefs/command_line_pref_store.h"
|
| +#include "components/prefs/in_memory_pref_store.h"
|
| +#include "components/prefs/pref_service.h"
|
| +#include "components/prefs/pref_service_factory.h"
|
| #include "ui/gfx/x/x11_connection.h"
|
|
|
| namespace {
|
| const char kDefaultUrl[] = "https://www.google.com";
|
| constexpr int kWindowWidth = 800;
|
| constexpr int kWindowHeight = 600;
|
| -}
|
| +
|
| +class BlimpShellCommandLinePrefStore : public CommandLinePrefStore {
|
| + public:
|
| + explicit BlimpShellCommandLinePrefStore(const base::CommandLine* command_line)
|
| + : CommandLinePrefStore(command_line) {
|
| + blimp::client::BlimpClientContext::ApplyBlimpSwitches(this);
|
| + }
|
| +
|
| + protected:
|
| + ~BlimpShellCommandLinePrefStore() override = default;
|
| +};
|
| +} // namespace
|
|
|
| int main(int argc, const char**argv) {
|
| base::AtExitManager at_exit;
|
| @@ -47,11 +64,29 @@ int main(int argc, const char**argv) {
|
| // destroyed before the delegate.
|
| std::unique_ptr<blimp::client::BlimpClientContextDelegate> context_delegate =
|
| base::MakeUnique<blimp::client::BlimpClientContextDelegateLinux>();
|
| - std::unique_ptr<blimp::client::BlimpClientContext> context =
|
| - base::WrapUnique<blimp::client::BlimpClientContext>(
|
| - blimp::client::BlimpClientContext::Create(
|
| - io_thread.task_runner(), io_thread.task_runner(),
|
| - base::WrapUnique(compositor_dependencies)));
|
| +
|
| + // Create PrefRegistry and register blimp preferences with it.
|
| + scoped_refptr<user_prefs::PrefRegistrySyncable> pref_registry =
|
| + new ::user_prefs::PrefRegistrySyncable();
|
| + blimp::client::BlimpClientContext::RegisterPrefs(pref_registry.get());
|
| +
|
| + PrefServiceFactory pref_service_factory;
|
| +
|
| + // Create command line and user preference stores.
|
| + pref_service_factory.set_command_line_prefs(
|
| + make_scoped_refptr(new BlimpShellCommandLinePrefStore(
|
| + base::CommandLine::ForCurrentProcess())));
|
| + pref_service_factory.set_user_prefs(new InMemoryPrefStore());
|
| +
|
| + // Create a PrefService binding the PrefRegistry to the pref stores.
|
| + // The PrefService owns the PrefRegistry and pref stores.
|
| + std::unique_ptr<PrefService> pref_service =
|
| + pref_service_factory.Create(pref_registry.get());
|
| +
|
| + auto context = base::WrapUnique<blimp::client::BlimpClientContext>(
|
| + blimp::client::BlimpClientContext::Create(
|
| + io_thread.task_runner(), io_thread.task_runner(),
|
| + base::WrapUnique(compositor_dependencies), pref_service.get()));
|
| context->SetDelegate(context_delegate.get());
|
|
|
| context->Connect();
|
|
|