Zen: Support external condition providers.

 - Manage provider subscriptions for external condition providers
   within ZenModeConditions.
 - Move "is automatic rule active" check into common location.
 - Add constant for external rule setting configuration page.
 - Consolidate log tags.
 - Reset rule snoozing on boot.

Bug: 20064962
Change-Id: Ida207dbf363f61e1727974e611f43f27c23accfb
diff --git a/services/core/java/com/android/server/notification/ConditionProviders.java b/services/core/java/com/android/server/notification/ConditionProviders.java
index fc2eced..b36fcd2 100644
--- a/services/core/java/com/android/server/notification/ConditionProviders.java
+++ b/services/core/java/com/android/server/notification/ConditionProviders.java
@@ -142,6 +142,9 @@
         } catch (RemoteException e) {
             // we tried
         }
+        if (mCallback != null) {
+            mCallback.onServiceAdded(info.component);
+        }
     }
 
     @Override
@@ -246,6 +249,16 @@
         }
     }
 
+    public IConditionProvider findConditionProvider(ComponentName component) {
+        if (component == null) return null;
+        for (ManagedServiceInfo service : mServices) {
+            if (component.equals(service.component)) {
+                return provider(service);
+            }
+        }
+        return null;
+    }
+
     public void ensureRecordExists(ComponentName component, Uri conditionId,
             IConditionProvider provider) {
         // constructed by convention, make sure the record exists...
@@ -378,6 +391,7 @@
 
     public interface Callback {
         void onBootComplete();
+        void onServiceAdded(ComponentName component);
         void onConditionChanged(Uri id, Condition condition);
         void onUserSwitched();
     }