Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2016 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 package org.chromium.chrome.browser.webshare; | |
| 6 | |
| 7 import android.content.Context; | |
| 8 import android.content.Intent; | |
| 9 | |
| 10 import org.chromium.chrome.R; | |
| 11 import org.chromium.content.browser.ContentViewCore; | |
| 12 import org.chromium.content_public.browser.WebContents; | |
| 13 import org.chromium.mojo.system.MojoException; | |
| 14 import org.chromium.mojom.webshare.ShareService; | |
| 15 import org.chromium.ui.base.WindowAndroid; | |
| 16 | |
| 17 /** | |
| 18 * Android implementation of the ShareService service defined in | |
| 19 * third_party/WebKit/public/platform/modules/webshare/webshare.mojom. | |
| 20 */ | |
| 21 public class ShareServiceImpl implements ShareService { | |
| 22 private static final String TAG = "ShareServiceImpl"; | |
|
Sam McNally
2016/07/28 07:16:04
Remove.
Matt Giuca
2016/07/28 07:40:42
Done.
| |
| 23 | |
| 24 private final WindowAndroid mWindow; | |
| 25 private final Context mContext; | |
| 26 | |
| 27 public ShareServiceImpl(WebContents webContents) { | |
| 28 mWindow = windowFromWebContents(webContents); | |
| 29 mContext = contextFromWindow(mWindow); | |
| 30 } | |
| 31 | |
| 32 // |webContents| can be null. Can return null. | |
| 33 static WindowAndroid windowFromWebContents(WebContents webContents) { | |
|
Sam McNally
2016/07/28 07:16:04
private
Matt Giuca
2016/07/28 07:40:42
Done.
| |
| 34 if (webContents == null) return null; | |
| 35 | |
| 36 ContentViewCore contentViewCore = ContentViewCore.fromWebContents(webCon tents); | |
| 37 if (contentViewCore == null) return null; | |
| 38 | |
| 39 return contentViewCore.getWindowAndroid(); | |
| 40 } | |
| 41 | |
| 42 // |window| can be null. Can return null. | |
| 43 static Context contextFromWindow(WindowAndroid window) { | |
|
Sam McNally
2016/07/28 07:16:04
private
Matt Giuca
2016/07/28 07:40:42
Done.
| |
| 44 if (window == null) return null; | |
| 45 | |
| 46 return window.getActivity().get(); | |
| 47 } | |
| 48 | |
| 49 @Override | |
| 50 public void close() {} | |
| 51 | |
| 52 @Override | |
| 53 public void onConnectionError(MojoException e) {} | |
| 54 | |
| 55 @Override | |
| 56 public void share(String title, String text, ShareResponse callback) { | |
| 57 String chooserTitle = mContext.getString(R.string.share_link_chooser_tit le); | |
| 58 Intent send = new Intent(Intent.ACTION_SEND); | |
| 59 send.setType("text/plain"); | |
| 60 send.putExtra(Intent.EXTRA_SUBJECT, text); | |
| 61 send.putExtra(Intent.EXTRA_TEXT, text); | |
| 62 | |
| 63 Intent chooser = Intent.createChooser(send, chooserTitle); | |
| 64 if (!mWindow.showIntent(chooser, null, null)) { | |
| 65 callback.call("Share failed"); | |
| 66 return; | |
| 67 } | |
| 68 | |
| 69 // Success. | |
| 70 // TODO(mgiuca): Wait until the user has made a choice, and report failu re if they cancel | |
| 71 // the picker or something else goes wrong. | |
| 72 callback.call(null); | |
| 73 } | |
| 74 } | |
| OLD | NEW |