| OLD | NEW |
| (Empty) | |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "sky/viewer/sky_loader.h" |
| 6 |
| 7 #include "base/bind.h" |
| 8 #include "sky/viewer/document_view.h" |
| 9 |
| 10 namespace sky { |
| 11 |
| 12 SkyLoader::SkyLoader(mojo::Shell* shell, |
| 13 mojo::URLResponsePtr initial_app_to_load) |
| 14 : shell_(shell), initial_app_to_load_(initial_app_to_load.Pass()) { |
| 15 mojo::ServiceProviderPtr service_provider; |
| 16 shell_->ConnectToApplication("mojo:network_service", |
| 17 mojo::GetProxy(&service_provider), nullptr); |
| 18 mojo::ConnectToService(service_provider.get(), &network_service_); |
| 19 } |
| 20 |
| 21 SkyLoader::~SkyLoader() { |
| 22 } |
| 23 |
| 24 void SkyLoader::LoadApplication( |
| 25 mojo::InterfaceRequest<mojo::ServiceProvider> services, |
| 26 mojo::ServiceProviderPtr exposed_services, |
| 27 const mojo::String& url) { |
| 28 if (initial_app_to_load_) { |
| 29 OnApplicationLoaded(mojo::URLLoaderPtr(), services.Pass(), |
| 30 exposed_services.Pass(), initial_app_to_load_.Pass()); |
| 31 return; |
| 32 } |
| 33 |
| 34 mojo::URLLoaderPtr loader; |
| 35 network_service_->CreateURLLoader(mojo::GetProxy(&loader)); |
| 36 mojo::URLRequestPtr request(mojo::URLRequest::New()); |
| 37 request->url = url; |
| 38 request->auto_follow_redirects = true; |
| 39 |
| 40 // |loader| will be pass to the OnResponseReceived method through a |
| 41 // callback. Because order of evaluation is undefined, a reference to the |
| 42 // raw pointer is needed. |
| 43 mojo::URLLoader* raw_loader = loader.get(); |
| 44 raw_loader->Start( |
| 45 request.Pass(), |
| 46 base::Bind(&SkyLoader::OnApplicationLoaded, base::Unretained(this), |
| 47 base::Passed(&loader), base::Passed(&services), |
| 48 base::Passed(&exposed_services))); |
| 49 } |
| 50 |
| 51 void SkyLoader::OnApplicationLoaded( |
| 52 mojo::URLLoaderPtr loader, |
| 53 mojo::InterfaceRequest<mojo::ServiceProvider> services, |
| 54 mojo::ServiceProviderPtr exposed_services, |
| 55 mojo::URLResponsePtr response) { |
| 56 new DocumentView(services.Pass(), exposed_services.Pass(), response.Pass(), |
| 57 shell_); |
| 58 } |
| 59 |
| 60 } // namespace sky |
| OLD | NEW |