// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "content/child/process_control_impl.h"

#include "base/stl_util.h"
#include "content/public/common/content_client.h"
#include "mojo/shell/static_application_loader.h"
#include "url/gurl.h"

namespace content {

ProcessControlImpl::ProcessControlImpl() {
}

ProcessControlImpl::~ProcessControlImpl() {
  STLDeleteValues(&url_to_loader_map_);
}

void ProcessControlImpl::LoadApplication(
    const mojo::String& url,
    mojo::InterfaceRequest<mojo::Application> request,
    const LoadApplicationCallback& callback) {
  // Only register loaders when we need it.
  if (!has_registered_loaders_) {
    DCHECK(url_to_loader_map_.empty());
    RegisterApplicationLoaders(&url_to_loader_map_);
    has_registered_loaders_ = true;
  }

  GURL application_url = GURL(url.To<std::string>());
  auto it = url_to_loader_map_.find(application_url);
  if (it == url_to_loader_map_.end()) {
    callback.Run(false);
    OnLoadFailed();
    return;
  }

  callback.Run(true);
  it->second->Load(application_url, request.Pass());
}

}  // namespace content
