Chromium Code Reviews| 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..0074a45239fbfe0b78c8e7f8525642d03312aaab 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 {} |
|
David Trainor- moved to gerrit
2016/10/28 04:25:44
= default?
Menglin
2016/10/28 17:59:59
Done.
|
| +}; |
| +} // 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(); |