Add a SupervisedUserServiceObserver.

For now, this is used in the SupervisedUserInterstitial instead of listening to pref changes manually.
More clients will follow in later CLs.

BUG=

Review URL: https://codereview.chromium.org/597573002

Cr-Commit-Position: refs/heads/master@{#296412}
diff --git a/chrome/browser/supervised_user/supervised_user_service.h b/chrome/browser/supervised_user/supervised_user_service.h
index 2d5caa16..2c60d77 100644
--- a/chrome/browser/supervised_user/supervised_user_service.h
+++ b/chrome/browser/supervised_user/supervised_user_service.h
@@ -13,6 +13,7 @@
 #include "base/callback.h"
 #include "base/gtest_prod_util.h"
 #include "base/memory/scoped_ptr.h"
+#include "base/observer_list.h"
 #include "base/prefs/pref_change_registrar.h"
 #include "base/scoped_observer.h"
 #include "base/strings/string16.h"
@@ -35,6 +36,7 @@
 class PermissionRequestCreator;
 class Profile;
 class SupervisedUserRegistrationUtility;
+class SupervisedUserServiceObserver;
 class SupervisedUserSettingsService;
 class SupervisedUserSiteList;
 class SupervisedUserURLFilter;
@@ -166,6 +168,9 @@
   void AddNavigationBlockedCallback(const NavigationBlockedCallback& callback);
   void DidBlockNavigation(content::WebContents* web_contents);
 
+  void AddObserver(SupervisedUserServiceObserver* observer);
+  void RemoveObserver(SupervisedUserServiceObserver* observer);
+
 #if defined(ENABLE_EXTENSIONS)
   // extensions::ManagementPolicy::Provider implementation:
   virtual std::string GetDebugPolicyProviderName() const OVERRIDE;
@@ -326,6 +331,8 @@
   // Used to create permission requests.
   scoped_ptr<PermissionRequestCreator> permissions_creator_;
 
+  ObserverList<SupervisedUserServiceObserver> observer_list_;
+
   base::WeakPtrFactory<SupervisedUserService> weak_ptr_factory_;
 };