blob: 8894552b71b0a6516e9ffb5c23df84b949c9bcee [file] [log] [blame]
// 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.
package org.chromium.services.sharing;
import android.content.Context;
import android.content.Intent;
import org.chromium.mojo.application.ApplicationConnection;
import org.chromium.mojo.application.ApplicationDelegate;
import org.chromium.mojo.application.ApplicationRunner;
import org.chromium.mojo.application.ServiceFactoryBinder;
import org.chromium.mojo.bindings.InterfaceRequest;
import org.chromium.mojo.system.Core;
import org.chromium.mojo.system.MessagePipeHandle;
import org.chromium.mojo.system.MojoException;
import org.chromium.mojom.mojo.SharingService;
import org.chromium.mojom.mojo.Shell;
/**
* Android Mojo application which implements |SharingService| interface.
*/
public class SharingApp implements ApplicationDelegate, SharingService {
private final Context mContext;
public SharingApp(Context context) {
mContext = context;
}
/**
* Share text using an Android Intent.
*
* @see org.chromium.mojom.mojo.SharingService#shareText(String)
*/
@Override
public void shareText(String text) {
Intent intent = new Intent(Intent.ACTION_SEND)
.putExtra(Intent.EXTRA_TEXT, text)
.setType("text/plain")
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
}
/**
* When connection is closed, we stop receiving location updates.
*
* @see org.chromium.mojo.bindings.Interface#close()
*/
@Override
public void close() {}
/**
* @see org.chromium.mojo.bindings.Interface#onConnectionError(MojoException)
*/
@Override
public void onConnectionError(MojoException e) {}
/**
* @see ApplicationDelegate#initialize(Shell, String[], String)
*/
@Override
public void initialize(Shell shell, String[] args, String url) {}
/**
* @see ApplicationDelegate#configureIncomingConnection(ApplicationConnection)
*/
@Override
public boolean configureIncomingConnection(ApplicationConnection connection) {
connection.addService(new ServiceFactoryBinder<SharingService>() {
@Override
public void bind(InterfaceRequest<SharingService> request) {
SharingService.MANAGER.bind(SharingApp.this, request);
}
@Override
public String getInterfaceName() {
return SharingService.MANAGER.getName();
}
});
return true;
}
/**
* @see ApplicationDelegate#quit()
*/
@Override
public void quit() {}
public static void mojoMain(
Context context, Core core, MessagePipeHandle applicationRequestHandle) {
ApplicationRunner.run(new SharingApp(context), core, applicationRequestHandle);
}
}