diff --git a/.gitmodules b/.gitmodules index 420ec785e..d16d4fdf7 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "submodules/rothko"] path = submodules/rothko - url = https://github.com/shana/Rothko.git + url = https://github.com/haacked/Rothko.git [submodule "submodules/reactiveui"] path = submodules/reactiveui url = https://github.com/shana/ReactiveUI diff --git a/src/DesignTimeStyleHelper/App.xaml.cs b/src/DesignTimeStyleHelper/App.xaml.cs index dd7661d51..d9b155f51 100644 --- a/src/DesignTimeStyleHelper/App.xaml.cs +++ b/src/DesignTimeStyleHelper/App.xaml.cs @@ -43,7 +43,7 @@ namespace DesignTimeStyleHelper SComponentModel sc; [Import] - public IBrowser Browser; + public IVisualStudioBrowser Browser; [Import] public ExportFactoryProvider ExportFactoryProvider; diff --git a/src/DesignTimeStyleHelper/packages.config b/src/DesignTimeStyleHelper/packages.config index 009b3c7f5..39251e9e0 100644 --- a/src/DesignTimeStyleHelper/packages.config +++ b/src/DesignTimeStyleHelper/packages.config @@ -6,4 +6,5 @@ + \ No newline at end of file diff --git a/src/GitHub.App/Factories/HostCacheFactory.cs b/src/GitHub.App/Factories/HostCacheFactory.cs index 27e3cfc50..829790f95 100644 --- a/src/GitHub.App/Factories/HostCacheFactory.cs +++ b/src/GitHub.App/Factories/HostCacheFactory.cs @@ -13,10 +13,10 @@ namespace GitHub.Factories public class HostCacheFactory : IHostCacheFactory { readonly Lazy blobCacheFactory; - readonly Lazy operatingSystem; + readonly Lazy operatingSystem; [ImportingConstructor] - public HostCacheFactory(Lazy blobCacheFactory, Lazy operatingSystem) + public HostCacheFactory(Lazy blobCacheFactory, Lazy operatingSystem) { this.blobCacheFactory = blobCacheFactory; this.operatingSystem = operatingSystem; @@ -43,7 +43,7 @@ namespace GitHub.Factories return new HostCache(localMachineCache, userAccountCache); } - IOperatingSystemFacade OperatingSystem { get { return operatingSystem.Value; } } + IOperatingSystem OperatingSystem { get { return operatingSystem.Value; } } IBlobCacheFactory BlobCacheFactory { get { return blobCacheFactory.Value; } } } } diff --git a/src/GitHub.App/GitHub.App.csproj b/src/GitHub.App/GitHub.App.csproj index 0635a58fb..a597f015a 100644 --- a/src/GitHub.App/GitHub.App.csproj +++ b/src/GitHub.App/GitHub.App.csproj @@ -63,6 +63,14 @@ False ..\..\packages\NullGuard.Fody.1.4.1\Lib\portable-net4+sl4+wp7+win8+MonoAndroid16+MonoTouch40\NullGuard.dll + + False + ..\..\packages\Octokit.0.6.2\lib\net45\Octokit.dll + + + False + ..\..\packages\Octokit.Reactive.0.6.2\lib\net45\Octokit.Reactive.dll + diff --git a/src/GitHub.App/Services/Browser.cs b/src/GitHub.App/Services/Browser.cs index 365ea0df2..14fbcb760 100644 --- a/src/GitHub.App/Services/Browser.cs +++ b/src/GitHub.App/Services/Browser.cs @@ -2,13 +2,13 @@ using System.ComponentModel.Composition; using System.IO; using GitHub.Services; -using NLog; using Rothko; +using NLog; namespace GitHub { - [Export(typeof(IBrowser))] - public class Browser : IBrowser + [Export(typeof(IVisualStudioBrowser))] + public class Browser : IVisualStudioBrowser { static readonly Logger log = LogManager.GetCurrentClassLogger(); diff --git a/src/GitHub.App/ViewModels/LoginTabViewModel.cs b/src/GitHub.App/ViewModels/LoginTabViewModel.cs index 702159329..5718c5f49 100644 --- a/src/GitHub.App/ViewModels/LoginTabViewModel.cs +++ b/src/GitHub.App/ViewModels/LoginTabViewModel.cs @@ -21,9 +21,8 @@ namespace GitHub.ViewModels { static readonly Logger log = LogManager.GetCurrentClassLogger(); - // TODO: Lets fix it so we don't have to suppress this. [SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] - protected LoginTabViewModel(IRepositoryHosts repositoryHosts, IBrowser browser) + protected LoginTabViewModel(IRepositoryHosts repositoryHosts, IVisualStudioBrowser browser) { RepositoryHosts = repositoryHosts; diff --git a/src/GitHub.App/ViewModels/LoginToGitHubForEnterpriseViewModel.cs b/src/GitHub.App/ViewModels/LoginToGitHubForEnterpriseViewModel.cs index b9c373e25..a72da626f 100644 --- a/src/GitHub.App/ViewModels/LoginToGitHubForEnterpriseViewModel.cs +++ b/src/GitHub.App/ViewModels/LoginToGitHubForEnterpriseViewModel.cs @@ -18,7 +18,7 @@ namespace GitHub.ViewModels public class LoginToGitHubForEnterpriseViewModel : LoginTabViewModel, ILoginToGitHubForEnterpriseViewModel { [ImportingConstructor] - public LoginToGitHubForEnterpriseViewModel(IRepositoryHosts hosts, IBrowser browser) : base(hosts, browser) + public LoginToGitHubForEnterpriseViewModel(IRepositoryHosts hosts, IVisualStudioBrowser browser) : base(hosts, browser) { enterpriseUrlValidator = ReactivePropertyValidator.For(this, x => x.EnterpriseUrl) .IfNullOrEmpty("Please enter an Enterprise URL") diff --git a/src/GitHub.App/ViewModels/LoginToGitHubViewModel.cs b/src/GitHub.App/ViewModels/LoginToGitHubViewModel.cs index b1b25d08a..b678e4cb3 100644 --- a/src/GitHub.App/ViewModels/LoginToGitHubViewModel.cs +++ b/src/GitHub.App/ViewModels/LoginToGitHubViewModel.cs @@ -16,7 +16,7 @@ namespace GitHub.ViewModels readonly Uri baseUri; [ImportingConstructor] - public LoginToGitHubViewModel(IRepositoryHosts repositoryHosts, IBrowser browser) + public LoginToGitHubViewModel(IRepositoryHosts repositoryHosts, IVisualStudioBrowser browser) : base(repositoryHosts, browser) { baseUri = repositoryHosts.GitHubHost.Address.WebUri; diff --git a/src/GitHub.App/ViewModels/TwoFactorDialogViewModel.cs b/src/GitHub.App/ViewModels/TwoFactorDialogViewModel.cs index 51dca5a6a..b3522dd49 100644 --- a/src/GitHub.App/ViewModels/TwoFactorDialogViewModel.cs +++ b/src/GitHub.App/ViewModels/TwoFactorDialogViewModel.cs @@ -23,7 +23,7 @@ namespace GitHub.ViewModels readonly ObservableAsPropertyHelper isSms; [ImportingConstructor] - public TwoFactorDialogViewModel(IBrowser browser) + public TwoFactorDialogViewModel(IVisualStudioBrowser browser) { OkCommand = ReactiveCommand.Create(this.WhenAny( x => x.AuthenticationCodeValidator.ValidationResult.IsValid, diff --git a/src/GitHub.Exports/GitHub.Exports.csproj b/src/GitHub.Exports/GitHub.Exports.csproj index 70c5c237d..e7eb24e6c 100644 --- a/src/GitHub.Exports/GitHub.Exports.csproj +++ b/src/GitHub.Exports/GitHub.Exports.csproj @@ -84,7 +84,7 @@ - + diff --git a/src/GitHub.Exports/Services/IBrowser.cs b/src/GitHub.Exports/Services/IBrowser.cs deleted file mode 100644 index 55f875ba3..000000000 --- a/src/GitHub.Exports/Services/IBrowser.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System; - -namespace GitHub.Services -{ - public interface IBrowser - { - void OpenUrl(Uri url); - } -} diff --git a/src/GitHub.Exports/Services/IVisualStudioBrowser.cs b/src/GitHub.Exports/Services/IVisualStudioBrowser.cs new file mode 100644 index 000000000..2a1c3f6c2 --- /dev/null +++ b/src/GitHub.Exports/Services/IVisualStudioBrowser.cs @@ -0,0 +1,19 @@ +using System; + +namespace GitHub.Services +{ + /// + /// A service used to navigate to URLs such as GitHub issues, pull requests, etc. + /// + /// + /// This interface is (and needs to be) safe to use within TeamExplorer. It should not pull in other dependencies. + /// + public interface IVisualStudioBrowser + { + /// + /// Opens the user's default browser to the specified URL. + /// + /// The absolute URI to open + void OpenUrl(Uri url); + } +} diff --git a/src/GitHub.Extensions.Reactive/GitHub.Extensions.Reactive.csproj b/src/GitHub.Extensions.Reactive/GitHub.Extensions.Reactive.csproj index f5318caca..a4fe11a2a 100644 --- a/src/GitHub.Extensions.Reactive/GitHub.Extensions.Reactive.csproj +++ b/src/GitHub.Extensions.Reactive/GitHub.Extensions.Reactive.csproj @@ -11,7 +11,6 @@ GitHub.Extensions.Reactive v4.5 512 - 9b778d60 83c06b42 4 true @@ -51,6 +50,7 @@ False + True ..\..\packages\NullGuard.Fody.1.4.1\Lib\portable-net4+sl4+wp7+win8+MonoAndroid16+MonoTouch40\NullGuard.dll @@ -109,6 +109,7 @@ + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. diff --git a/src/GitHub.Extensions/GitHub.Extensions.csproj b/src/GitHub.Extensions/GitHub.Extensions.csproj index db1a5803b..b6fbaf2ab 100644 --- a/src/GitHub.Extensions/GitHub.Extensions.csproj +++ b/src/GitHub.Extensions/GitHub.Extensions.csproj @@ -96,6 +96,7 @@ + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. diff --git a/src/GitHub.UI.Reactive/GitHub.UI.Reactive.csproj b/src/GitHub.UI.Reactive/GitHub.UI.Reactive.csproj index d405278e7..4049e0bf1 100644 --- a/src/GitHub.UI.Reactive/GitHub.UI.Reactive.csproj +++ b/src/GitHub.UI.Reactive/GitHub.UI.Reactive.csproj @@ -12,7 +12,11 @@ v4.5 512 {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - 86007da4 + 0264ca35 + 4 + true + ..\..\script\GitHubVS.ruleset + true true @@ -47,6 +51,7 @@ False + True ..\..\packages\NullGuard.Fody.1.4.1\Lib\portable-net4+sl4+wp7+win8+MonoAndroid16+MonoTouch40\NullGuard.dll diff --git a/src/GitHub.VisualStudio/Base/TeamExplorerNavigationItemBase.cs b/src/GitHub.VisualStudio/Base/TeamExplorerNavigationItemBase.cs index 734c1c598..9bb2846b1 100644 --- a/src/GitHub.VisualStudio/Base/TeamExplorerNavigationItemBase.cs +++ b/src/GitHub.VisualStudio/Base/TeamExplorerNavigationItemBase.cs @@ -76,7 +76,7 @@ namespace GitHub.VisualStudio.Base return visible; } - protected async void OpenInBrowser(Lazy browser, string endpoint) + protected async void OpenInBrowser(Lazy browser, string endpoint) { var b = browser.Value; Debug.Assert(b != null, "Could not create a browser helper instance."); diff --git a/src/GitHub.VisualStudio/GitHub.VisualStudio.csproj b/src/GitHub.VisualStudio/GitHub.VisualStudio.csproj index e2b9607de..0ad925d87 100644 --- a/src/GitHub.VisualStudio/GitHub.VisualStudio.csproj +++ b/src/GitHub.VisualStudio/GitHub.VisualStudio.csproj @@ -4,7 +4,7 @@ 14.0 12.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - 1fcdc7f2 + 8fda56e5 @@ -102,6 +102,14 @@ False ..\..\packages\NullGuard.Fody.1.4.1\Lib\portable-net4+sl4+wp7+win8+MonoAndroid16+MonoTouch40\NullGuard.dll + + False + ..\..\packages\Octokit.0.6.2\lib\net45\Octokit.dll + + + False + ..\..\packages\Splat.1.6.0\lib\Net45\Splat.dll + @@ -359,6 +367,7 @@ + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. diff --git a/src/GitHub.VisualStudio/Helpers/Browser.cs b/src/GitHub.VisualStudio/Helpers/Browser.cs index 32b68c6ba..4baa5f128 100644 --- a/src/GitHub.VisualStudio/Helpers/Browser.cs +++ b/src/GitHub.VisualStudio/Helpers/Browser.cs @@ -10,8 +10,8 @@ using Rothko; namespace GitHub.VisualStudio.Helpers { - [Export(typeof(IBrowser))] - public class Browser : IBrowser + [Export(typeof(IVisualStudioBrowser))] + public class Browser : IVisualStudioBrowser { readonly IServiceProvider serviceProvider; readonly IProcessStarter processManager; diff --git a/src/GitHub.VisualStudio/TeamExplorerHome/GraphsNavigationItem.cs b/src/GitHub.VisualStudio/TeamExplorerHome/GraphsNavigationItem.cs index df10eb057..096d6b40f 100644 --- a/src/GitHub.VisualStudio/TeamExplorerHome/GraphsNavigationItem.cs +++ b/src/GitHub.VisualStudio/TeamExplorerHome/GraphsNavigationItem.cs @@ -17,11 +17,11 @@ namespace GitHub.VisualStudio.TeamExplorerHome { public const string GraphsNavigationItemId = "5245767A-B657-4F8E-BFEE-F04159F1DDA5"; - readonly Lazy browser; + readonly Lazy browser; [ImportingConstructor] public GraphsNavigationItem([Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider, - ISimpleApiClientFactory apiFactory, Lazy browser) + ISimpleApiClientFactory apiFactory, Lazy browser) : base(serviceProvider, apiFactory) { this.browser = browser; diff --git a/src/GitHub.VisualStudio/TeamExplorerHome/IssuesNavigationItem.cs b/src/GitHub.VisualStudio/TeamExplorerHome/IssuesNavigationItem.cs index 38984d87a..cdddf9250 100644 --- a/src/GitHub.VisualStudio/TeamExplorerHome/IssuesNavigationItem.cs +++ b/src/GitHub.VisualStudio/TeamExplorerHome/IssuesNavigationItem.cs @@ -17,11 +17,11 @@ namespace GitHub.VisualStudio.TeamExplorerHome { public const string IssuesNavigationItemId = "5245767A-B657-4F8E-BFEE-F04159F1DDA4"; - readonly Lazy browser; + readonly Lazy browser; [ImportingConstructor] public IssuesNavigationItem([Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider, - ISimpleApiClientFactory apiFactory, Lazy browser) + ISimpleApiClientFactory apiFactory, Lazy browser) : base(serviceProvider, apiFactory) { this.browser = browser; diff --git a/src/GitHub.VisualStudio/TeamExplorerHome/PullRequestsNavigationItem.cs b/src/GitHub.VisualStudio/TeamExplorerHome/PullRequestsNavigationItem.cs index bfea00c2a..7e1288bf4 100644 --- a/src/GitHub.VisualStudio/TeamExplorerHome/PullRequestsNavigationItem.cs +++ b/src/GitHub.VisualStudio/TeamExplorerHome/PullRequestsNavigationItem.cs @@ -17,11 +17,11 @@ namespace GitHub.VisualStudio.TeamExplorerHome { public const string PullRequestsNavigationItemId = "5245767A-B657-4F8E-BFEE-F04159F1DDA3"; - readonly Lazy browser; + readonly Lazy browser; [ImportingConstructor] public PullRequestsNavigationItem([Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider, - ISimpleApiClientFactory apiFactory, Lazy browser) + ISimpleApiClientFactory apiFactory, Lazy browser) : base(serviceProvider, apiFactory) { this.browser = browser; diff --git a/src/GitHub.VisualStudio/TeamExplorerHome/PulseNavigationItem.cs b/src/GitHub.VisualStudio/TeamExplorerHome/PulseNavigationItem.cs index 018e2d982..6bc7d8760 100644 --- a/src/GitHub.VisualStudio/TeamExplorerHome/PulseNavigationItem.cs +++ b/src/GitHub.VisualStudio/TeamExplorerHome/PulseNavigationItem.cs @@ -17,11 +17,11 @@ namespace GitHub.VisualStudio.TeamExplorerHome { public const string PulseNavigationItemId = "5245767A-B657-4F8E-BFEE-F04159F1DDA2"; - readonly Lazy browser; + readonly Lazy browser; [ImportingConstructor] public PulseNavigationItem([Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider, - ISimpleApiClientFactory apiFactory, Lazy browser) + ISimpleApiClientFactory apiFactory, Lazy browser) : base(serviceProvider, apiFactory) { this.browser = browser; diff --git a/src/GitHub.VisualStudio/TeamExplorerHome/WikiNavigationItem.cs b/src/GitHub.VisualStudio/TeamExplorerHome/WikiNavigationItem.cs index f7baf452a..15683cc07 100644 --- a/src/GitHub.VisualStudio/TeamExplorerHome/WikiNavigationItem.cs +++ b/src/GitHub.VisualStudio/TeamExplorerHome/WikiNavigationItem.cs @@ -17,11 +17,11 @@ namespace GitHub.VisualStudio.TeamExplorerHome { public const string WikiNavigationItemId = "5245767A-B657-4F8E-BFEE-F04159F1DDA1"; - readonly Lazy browser; + readonly Lazy browser; [ImportingConstructor] public WikiNavigationItem([Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider, - ISimpleApiClientFactory apiFactory, Lazy browser) + ISimpleApiClientFactory apiFactory, Lazy browser) : base(serviceProvider, apiFactory) { this.browser = browser; diff --git a/src/UnitTests/GitHub.App/ViewModels/LoginToGitHubViewModelTests.cs b/src/UnitTests/GitHub.App/ViewModels/LoginToGitHubViewModelTests.cs index 9243535de..fd3eb8492 100644 --- a/src/UnitTests/GitHub.App/ViewModels/LoginToGitHubViewModelTests.cs +++ b/src/UnitTests/GitHub.App/ViewModels/LoginToGitHubViewModelTests.cs @@ -18,7 +18,7 @@ public class LoginToGitHubViewModelTests var gitHubHost = Substitute.For(); gitHubHost.Address.Returns(HostAddress.GitHubDotComHostAddress); repositoryHosts.GitHubHost.Returns(gitHubHost); - var browser = Substitute.For(); + var browser = Substitute.For(); var loginViewModel = new LoginToGitHubViewModel(repositoryHosts, browser); loginViewModel.SignUp.Execute(null); @@ -36,7 +36,7 @@ public class LoginToGitHubViewModelTests var gitHubHost = Substitute.For(); gitHubHost.Address.Returns(HostAddress.GitHubDotComHostAddress); repositoryHosts.GitHubHost.Returns(gitHubHost); - var browser = Substitute.For(); + var browser = Substitute.For(); var loginViewModel = new LoginToGitHubViewModel(repositoryHosts, browser); loginViewModel.ForgotPassword.Execute(null); diff --git a/submodules/rothko b/submodules/rothko index 301784394..9a056be65 160000 --- a/submodules/rothko +++ b/submodules/rothko @@ -1 +1 @@ -Subproject commit 3017843941b12b73154bdbbb3374503db96fdec8 +Subproject commit 9a056be65686807674e8087e2ec2e6602e82e808