11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/at_exit.h"
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/base_paths.h"
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/command_line.h"
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/files/file_path.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/message_loop/message_loop.h"
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/path_service.h"
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/application/application_runner_chromium.h"
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/public/c/system/main.h"
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/public/cpp/application/application_connection.h"
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/public/cpp/application/application_delegate.h"
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/public/cpp/application/interface_factory.h"
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/public/cpp/bindings/interface_ptr.h"
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/services/clipboard/clipboard_standalone_impl.h"
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass Delegate : public mojo::ApplicationDelegate,
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                 public mojo::InterfaceFactory<mojo::Clipboard> {
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public:
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  Delegate() {}
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual ~Delegate() {}
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // mojo::ApplicationDelegate implementation.
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual bool ConfigureIncomingConnection(
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      mojo::ApplicationConnection* connection) OVERRIDE {
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    connection->AddService(this);
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    return true;
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // mojo::InterfaceFactory<mojo::Clipboard> implementation.
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual void Create(
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      mojo::ApplicationConnection* connection,
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      mojo::InterfaceRequest<mojo::Clipboard> request) OVERRIDE {
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    // TODO(erg): Write native implementations of the clipboard. For now, we
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    // just build a clipboard which doesn't interact with the system.
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    mojo::BindToRequest(new mojo::ClipboardStandaloneImpl(), &request);
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciMojoResult MojoMain(MojoHandle shell_handle) {
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  mojo::ApplicationRunnerChromium runner(new Delegate);
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return runner.Run(shell_handle);
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
46