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

Unified Diff: blimp/client/app/linux/blimp_main.cc

Issue 2349073002: Blimp Settings framework on the c++ side (Closed)
Patch Set: nits and sync to head Created 4 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « blimp/client/app/linux/DEPS ('k') | blimp/client/app/session/blimp_client_session.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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();
« no previous file with comments | « blimp/client/app/linux/DEPS ('k') | blimp/client/app/session/blimp_client_session.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698