|
1 | | -// <copyright file="PlayServicesResolver.cs" company="Google Inc."> |
| 1 | +// <copyright file="PlayServicesResolver.cs" company="Google Inc."> |
2 | 2 | // Copyright (C) 2015 Google Inc. All Rights Reserved. |
3 | 3 | // |
4 | 4 | // Licensed under the Apache License, Version 2.0 (the "License"); |
@@ -149,14 +149,12 @@ public static DependencyState ReadFromFile() { |
149 | 149 | return true; |
150 | 150 | } else if (elementName == "package" && |
151 | 151 | parentElementName == "packages") { |
152 | | - if (isStart && reader.Read() && |
153 | | - reader.NodeType == XmlNodeType.Text) { |
| 152 | + if (reader.Read() && reader.NodeType == XmlNodeType.Text) { |
154 | 153 | packages.Add(reader.ReadContentAsString()); |
155 | 154 | } |
156 | 155 | return true; |
157 | 156 | } else if (elementName == "file" && parentElementName == "files") { |
158 | | - if (isStart && reader.Read() && |
159 | | - reader.NodeType == XmlNodeType.Text) { |
| 157 | + if (reader.Read() && reader.NodeType == XmlNodeType.Text) { |
160 | 158 | files.Add(reader.ReadContentAsString()); |
161 | 159 | } |
162 | 160 | return true; |
@@ -928,32 +926,69 @@ private static void OnPostProcessScene() { |
928 | 926 | /// Defaults to 1 second.</param> |
929 | 927 | private static void ScheduleAutoResolve(double delayInMilliseconds = 1000.0) { |
930 | 928 | 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; |
949 | 955 | } |
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; |
951 | 986 | } |
952 | | - return true; |
953 | 987 | }); |
954 | | - }, |
955 | | - delayInMilliseconds); |
956 | | - } |
| 988 | + } |
| 989 | + return true; |
| 990 | + }); |
| 991 | + },delayInMilliseconds); |
957 | 992 | } |
958 | 993 | } |
959 | 994 |
|
@@ -1353,19 +1388,19 @@ public static bool ResolveSync(bool forceResolution) { |
1353 | 1388 | /// <param name="complete">Delegate called when delete is complete.</param> |
1354 | 1389 | public static void DeleteResolvedLibraries(System.Action complete = null) { |
1355 | 1390 | 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); |
1369 | 1404 | } |
1370 | 1405 |
|
1371 | 1406 | /// <summary> |
@@ -1397,9 +1432,7 @@ private static void ScheduleResolve(bool forceResolution, |
1397 | 1432 | RunOnMainThread.Cancel(autoResolveJobId); |
1398 | 1433 | autoResolveJobId = 0; |
1399 | 1434 | // 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); |
1403 | 1436 | firstJob = resolutionJobs.Count == 0; |
1404 | 1437 |
|
1405 | 1438 | resolutionJobs.Add( |
|
0 commit comments