|
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