Index: ash/common/shelf/shelf_controller.cc |
diff --git a/ash/common/shelf/shelf_controller.cc b/ash/common/shelf/shelf_controller.cc |
index 043fec9e7513655c295521b1b328c4b116ffe463..e2e36d49e394a6be3f53e1adb62c55d5d2e89704 100644 |
--- a/ash/common/shelf/shelf_controller.cc |
+++ b/ash/common/shelf/shelf_controller.cc |
@@ -7,11 +7,13 @@ |
#include "ash/common/shelf/shelf_item_delegate.h" |
#include "ash/common/shelf/shelf_menu_model.h" |
#include "ash/common/shelf/wm_shelf.h" |
+#include "ash/common/shell_delegate.h" |
#include "ash/common/wm_lookup.h" |
#include "ash/common/wm_root_window_controller.h" |
#include "ash/common/wm_shell.h" |
#include "ash/common/wm_window.h" |
#include "base/strings/utf_string_conversions.h" |
+#include "services/preferences/public/cpp/pref_observer_store.h" |
#include "ui/base/resource/resource_bundle.h" |
#include "ui/display/display.h" |
#include "ui/display/screen.h" |
@@ -168,6 +170,15 @@ ShelfController::~ShelfController() {} |
void ShelfController::BindRequest(mojom::ShelfControllerRequest request) { |
bindings_.AddBinding(this, std::move(request)); |
+ |
+ // Sample of connecting to the PreferencesManager |
+ PrefObserverStore* store = WmShell::Get()->pref_store(); |
+ std::set<std::string> keys; |
+ // chrome::common::pref_names::kShelfAutoHideBehavior |
+ const std::string key("auto_hide_behavior"); |
+ keys.insert(key); |
+ store->AddObserver(this); |
+ store->Subscribe(keys); |
} |
void ShelfController::NotifyShelfCreated(WmShelf* shelf) { |
@@ -193,6 +204,28 @@ void ShelfController::NotifyShelfAutoHideBehaviorChanged(WmShelf* shelf) { |
observers_.ForAllPtrs([behavior, display_id](mojom::ShelfObserver* observer) { |
observer->OnAutoHideBehaviorChanged(behavior, display_id); |
}); |
+ |
+ // This was acutally a race-conditiony place to put this example code. You |
+ // can't call it until init has completed. |
+ /* |
+ // Using Preferences to set the value. the chrome ShelfObserver can |
+ seprately |
+ // listen to preference changes to make any according UI state changes. |
+ std::string behaviour_pref; |
+ switch (behavior) { |
+ case SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS: |
+ behaviour_pref = "Always"; |
+ break; |
+ case SHELF_AUTO_HIDE_BEHAVIOR_NEVER: |
+ behaviour_pref = "Never"; |
+ break; |
+ default: |
+ behaviour_pref = "ooops"; |
+ } |
+ std::unique_ptr<base::Value> value(new base::StringValue(behaviour_pref)); |
+ if (store_) |
+ store_->SetValue("auto_hide_behavior", std::move(value), 0); |
+ */ |
} |
void ShelfController::AddObserver( |
@@ -281,4 +314,21 @@ void ShelfController::SetItemImage(const std::string& app_id, |
model_.Set(index, item); |
} |
+void ShelfController::OnPrefValueChanged(const std::string& key) { |
+ const base::Value* value = nullptr; |
+ WmShell::Get()->pref_store()->GetValue("auto_hide_behavior", &value); |
+ if (!value) |
+ return; |
+ std::string actual_value; |
+ value->GetAsString(&actual_value); |
+ LOG(ERROR) << "JR OnPrefValueChanged " << key << " : " << actual_value |
+ << "\n"; |
+ |
+ // Call a method that needs the pref here |
+} |
+ |
+void ShelfController::OnInitializationCompleted(bool succeeded) { |
+ LOG(ERROR) << "JR OnInitializationCompleted\n"; |
+} |
+ |
} // namespace ash |