Adds resource_provider::ResourceProvider
[chromium-blink-merge.git] / components / resource_provider / resource_provider_app.cc
blob1373d637e28bf3ead93b25a862415984de7041a1
1 // Copyright 2015 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.
5 #include "components/resource_provider/resource_provider_app.h"
7 #include "components/resource_provider/file_utils.h"
8 #include "components/resource_provider/resource_provider_impl.h"
9 #include "third_party/mojo/src/mojo/public/cpp/application/application_connection.h"
10 #include "url/gurl.h"
12 namespace resource_provider {
14 ResourceProviderApp::ResourceProviderApp() {
17 ResourceProviderApp::~ResourceProviderApp() {
20 void ResourceProviderApp::Initialize(mojo::ApplicationImpl* app) {
23 bool ResourceProviderApp::ConfigureIncomingConnection(
24 mojo::ApplicationConnection* connection) {
25 const base::FilePath app_path(
26 GetPathForApplicationUrl(GURL(connection->GetRemoteApplicationURL())));
27 if (app_path.empty())
28 return false; // The specified app has no resources.
30 connection->AddService<ResourceProvider>(this);
31 return true;
34 void ResourceProviderApp::Create(
35 mojo::ApplicationConnection* connection,
36 mojo::InterfaceRequest<ResourceProvider> request) {
37 const base::FilePath app_path(
38 GetPathForApplicationUrl(GURL(connection->GetRemoteApplicationURL())));
39 // We validated path at ConfigureIncomingConnection() time, so it should still
40 // be valid.
41 CHECK(!app_path.empty());
42 bindings_.AddBinding(new ResourceProviderImpl(app_path), request.Pass());
45 } // namespace resource_provider