Skip to content

Commit 4f15dd7

Browse files
committed
cleanup 30 sec maximum delay
also use Resolver.AutomaticResolutionEnabled() to skip the popup Update PlayServicesResolver.cs Update PlayServicesResolver.cs Delay auto resolve dialog add AutoResolutionDelay
1 parent e703601 commit 4f15dd7

File tree

2 files changed

+96
-53
lines changed

2 files changed

+96
-53
lines changed

Diff for: source/PlayServicesResolver/src/PlayServicesResolver.cs

+77-44
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// <copyright file="PlayServicesResolver.cs" company="Google Inc.">
1+
// <copyright file="PlayServicesResolver.cs" company="Google Inc.">
22
// Copyright (C) 2015 Google Inc. All Rights Reserved.
33
//
44
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -149,14 +149,12 @@ public static DependencyState ReadFromFile() {
149149
return true;
150150
} else if (elementName == "package" &&
151151
parentElementName == "packages") {
152-
if (isStart && reader.Read() &&
153-
reader.NodeType == XmlNodeType.Text) {
152+
if (reader.Read() && reader.NodeType == XmlNodeType.Text) {
154153
packages.Add(reader.ReadContentAsString());
155154
}
156155
return true;
157156
} else if (elementName == "file" && parentElementName == "files") {
158-
if (isStart && reader.Read() &&
159-
reader.NodeType == XmlNodeType.Text) {
157+
if (reader.Read() && reader.NodeType == XmlNodeType.Text) {
160158
files.Add(reader.ReadContentAsString());
161159
}
162160
return true;
@@ -928,32 +926,69 @@ private static void OnPostProcessScene() {
928926
/// Defaults to 1 second.</param>
929927
private static void ScheduleAutoResolve(double delayInMilliseconds = 1000.0) {
930928
lock (typeof(PlayServicesResolver)) {
931-
if (!autoResolving) {
932-
RunOnMainThread.Cancel(autoResolveJobId);
933-
autoResolveJobId = RunOnMainThread.Schedule(
934-
() => {
935-
lock (typeof(PlayServicesResolver)) {
936-
autoResolving = true;
937-
}
938-
RunOnMainThread.PollOnUpdateUntilComplete(() => {
939-
if (EditorApplication.isCompiling) return false;
940-
// Only run AutoResolve() if we have a valid autoResolveJobId.
941-
// If autoResolveJobId is 0, ScheduleResolve()
942-
// has already been run and we should not run AutoResolve()
943-
// again.
944-
if (autoResolveJobId != 0) {
945-
AutoResolve(() => {
946-
lock (typeof(PlayServicesResolver)) {
947-
autoResolving = false;
948-
autoResolveJobId = 0;
929+
if (autoResolving) {
930+
return;
931+
}
932+
933+
RunOnMainThread.Cancel(autoResolveJobId);
934+
autoResolveJobId = RunOnMainThread.Schedule(() => {
935+
lock (typeof(PlayServicesResolver)) {
936+
autoResolving = true;
937+
}
938+
939+
int delaySec = GooglePlayServices.SettingsDialog.AutoResolutionDelay;
940+
DateTimeOffset resolveTime = DateTimeOffset.Now.AddSeconds(delaySec);
941+
bool shouldResolve = true;
942+
AlertModal alert = null;
943+
RunOnMainThread.PollOnUpdateUntilComplete(() => {
944+
if (resolveTime > DateTimeOffset.Now && Resolver.AutomaticResolutionEnabled()) {
945+
int countDown = (int)(resolveTime - DateTimeOffset.Now).TotalSeconds;
946+
if(alert == null) {
947+
alert = new AlertModal {
948+
Title = "Resolve or Skip dependency?",
949+
Message = "Auto Resolve Dependency in : " + countDown,
950+
Ok = new AlertModal.LabeledAction {
951+
Label = "Resolve",
952+
DelegateAction = () => {
953+
resolveTime = DateTimeOffset.Now;
954+
shouldResolve = true;
949955
}
950-
});
956+
},
957+
Cancel = new AlertModal.LabeledAction {
958+
Label = "Skip",
959+
DelegateAction = () => {
960+
resolveTime = DateTimeOffset.Now;
961+
shouldResolve = false;
962+
}
963+
}
964+
};
965+
966+
alert.Display();
967+
}
968+
969+
if(alert != null) {
970+
alert.Message = "Auto Resolve Dependency in : " + countDown;
971+
return false;
972+
}
973+
}
974+
975+
if (EditorApplication.isCompiling) return false;
976+
// Only run AutoResolve() if we have a valid autoResolveJobId.
977+
// If autoResolveJobId is 0, ScheduleResolve()
978+
// has already been run and we should not run AutoResolve()
979+
// again.
980+
981+
if (shouldResolve && autoResolveJobId != 0) {
982+
AutoResolve(() => {
983+
lock (typeof(PlayServicesResolver)) {
984+
autoResolving = false;
985+
autoResolveJobId = 0;
951986
}
952-
return true;
953987
});
954-
},
955-
delayInMilliseconds);
956-
}
988+
}
989+
return true;
990+
});
991+
},delayInMilliseconds);
957992
}
958993
}
959994

@@ -1353,19 +1388,19 @@ public static bool ResolveSync(bool forceResolution) {
13531388
/// <param name="complete">Delegate called when delete is complete.</param>
13541389
public static void DeleteResolvedLibraries(System.Action complete = null) {
13551390
RunOnMainThread.Schedule(() => {
1356-
if (Resolver.AutomaticResolutionEnabled()) {
1357-
Log("Disabling auto-resolution to prevent libraries from being " +
1358-
"resolved after deletion.", level: LogLevel.Warning);
1359-
GooglePlayServices.SettingsDialog.EnableAutoResolution = false;
1360-
}
1361-
DeleteLabeledAssets();
1362-
LocalMavenRepository.PatchPomFilesInLocalRepos(
1363-
PlayServicesSupport.GetAllDependencies().Values);
1364-
if (GradleTemplateEnabled) {
1365-
GradleTemplateResolver.InjectDependencies(new List<Dependency>());
1366-
}
1367-
if (complete != null) complete();
1368-
}, 0);
1391+
if (Resolver.AutomaticResolutionEnabled()) {
1392+
Log("Disabling auto-resolution to prevent libraries from being " +
1393+
"resolved after deletion.", level: LogLevel.Warning);
1394+
GooglePlayServices.SettingsDialog.EnableAutoResolution = false;
1395+
}
1396+
DeleteLabeledAssets();
1397+
LocalMavenRepository.PatchPomFilesInLocalRepos(
1398+
PlayServicesSupport.GetAllDependencies().Values);
1399+
if (GradleTemplateEnabled) {
1400+
GradleTemplateResolver.InjectDependencies(new List<Dependency>());
1401+
}
1402+
if (complete != null) complete();
1403+
}, 0);
13691404
}
13701405

13711406
/// <summary>
@@ -1397,9 +1432,7 @@ private static void ScheduleResolve(bool forceResolution,
13971432
RunOnMainThread.Cancel(autoResolveJobId);
13981433
autoResolveJobId = 0;
13991434
// Remove any enqueued auto-resolve jobs.
1400-
resolutionJobs.RemoveAll((jobInfo) => {
1401-
return jobInfo != null && jobInfo.IsAutoResolveJob;
1402-
});
1435+
resolutionJobs.RemoveAll((jobInfo) => jobInfo == null || jobInfo.IsAutoResolveJob);
14031436
firstJob = resolutionJobs.Count == 0;
14041437

14051438
resolutionJobs.Add(

Diff for: source/PlayServicesResolver/src/SettingsDialog.cs

+19-9
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ private class Settings {
3939
internal bool verboseLogging;
4040
internal bool autoResolutionDisabledWarning;
4141
internal bool promptBeforeAutoResolution;
42+
internal int autoResolutionDelay;
4243
internal bool useProjectSettings;
4344

4445
/// <summary>
@@ -55,6 +56,7 @@ internal Settings() {
5556
verboseLogging = SettingsDialog.VerboseLogging;
5657
autoResolutionDisabledWarning = SettingsDialog.AutoResolutionDisabledWarning;
5758
promptBeforeAutoResolution = SettingsDialog.PromptBeforeAutoResolution;
59+
autoResolutionDelay = SettingsDialog.AutoResolutionDelay;
5860
useProjectSettings = SettingsDialog.UseProjectSettings;
5961
}
6062

@@ -72,6 +74,7 @@ internal void Save() {
7274
SettingsDialog.VerboseLogging = verboseLogging;
7375
SettingsDialog.AutoResolutionDisabledWarning = autoResolutionDisabledWarning;
7476
SettingsDialog.PromptBeforeAutoResolution = promptBeforeAutoResolution;
77+
SettingsDialog.AutoResolutionDelay = autoResolutionDelay;
7578
SettingsDialog.UseProjectSettings = useProjectSettings;
7679
}
7780
}
@@ -84,10 +87,9 @@ internal void Save() {
8487
private const string ExplodeAarsKey = Namespace + "ExplodeAars";
8588
private const string PatchAndroidManifestKey = Namespace + "PatchAndroidManifest";
8689
private const string VerboseLoggingKey = Namespace + "VerboseLogging";
87-
private const string AutoResolutionDisabledWarningKey =
88-
Namespace + "AutoResolutionDisabledWarning";
89-
private const string PromptBeforeAutoResolutionKey =
90-
Namespace + "PromptBeforeAutoResolution";
90+
private const string AutoResolutionDisabledWarningKey = Namespace + "AutoResolutionDisabledWarning";
91+
private const string PromptBeforeAutoResolutionKey = Namespace + "PromptBeforeAutoResolution";
92+
private const string AutoResolutionDelayKey = Namespace + "AutoResolutionDelay";
9193
private const string UseGradleDaemonKey = Namespace + "UseGradleDaemon";
9294

9395
// List of preference keys, used to restore default settings.
@@ -177,12 +179,16 @@ internal static bool AutoResolutionDisabledWarning {
177179
/// display a prompt.
178180
/// </summary>
179181
internal static bool PromptBeforeAutoResolution {
180-
set {
181-
projectSettings.SetBool(PromptBeforeAutoResolutionKey, value);
182-
}
182+
set { projectSettings.SetBool(PromptBeforeAutoResolutionKey, value); }
183183
get { return projectSettings.GetBool(PromptBeforeAutoResolutionKey, true); }
184184
}
185185

186+
const int MAXIMUM_AUTO_RESOLVE_DELAY_TIME = 30;
187+
internal static int AutoResolutionDelay {
188+
set { projectSettings.SetInt(AutoResolutionDelayKey,Math.Min(Math.Max(0,value),MAXIMUM_AUTO_RESOLVE_DELAY_TIME)); }
189+
get { return Math.Min(Math.Max(0,projectSettings.GetInt(AutoResolutionDelayKey,0)),MAXIMUM_AUTO_RESOLVE_DELAY_TIME); }
190+
}
191+
186192
internal static bool UseProjectSettings {
187193
get { return projectSettings.UseProjectSettings; }
188194
set { projectSettings.UseProjectSettings = value; }
@@ -351,8 +357,12 @@ public void OnGUI() {
351357
EditorGUI.BeginDisabledGroup(!settings.enableAutoResolution);
352358
GUILayout.BeginHorizontal();
353359
GUILayout.Label("Prompt Before Auto-Resolution", EditorStyles.boldLabel);
354-
settings.promptBeforeAutoResolution =
355-
EditorGUILayout.Toggle(settings.promptBeforeAutoResolution);
360+
settings.promptBeforeAutoResolution = EditorGUILayout.Toggle(settings.promptBeforeAutoResolution);
361+
GUILayout.EndHorizontal();
362+
363+
GUILayout.BeginHorizontal();
364+
GUILayout.Label("Auto Resolution Delay", EditorStyles.boldLabel);
365+
settings.autoResolutionDelay = Math.Min(Math.Max(0,EditorGUILayout.IntField(settings.autoResolutionDelay),MAXIMUM_AUTO_RESOLVE_DELAY_TIME));
356366
GUILayout.EndHorizontal();
357367
EditorGUI.EndDisabledGroup();
358368

0 commit comments

Comments
 (0)