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"; | |
23 | |
24 private final WindowAndroid mWindow; | |
25 private final Context mContext; | |
26 | |
27 public ShareServiceImpl(WebContents webContents) { | |
28 // Get the Activity for the web contents, which will be used to send the intent. | |
Sam McNally
2016/07/26 08:21:51
Is this still accurate?
Matt Giuca
2016/07/28 05:58:32
Done.
| |
29 if (webContents == null) { | |
Sam McNally
2016/07/26 08:21:51
Please add helper functions to map from WebContent
Matt Giuca
2016/07/28 05:58:32
Done.
| |
30 mWindow = null; | |
31 mContext = null; | |
32 return; | |
33 } | |
34 | |
35 ContentViewCore contentViewCore = ContentViewCore.fromWebContents(webCon tents); | |
36 if (contentViewCore == null) { | |
37 mWindow = null; | |
38 mContext = null; | |
39 return; | |
40 } | |
41 | |
42 mWindow = contentViewCore.getWindowAndroid(); | |
43 if (mWindow == null) { | |
44 mContext = null; | |
45 return; | |
46 } | |
47 | |
48 mContext = mWindow.getActivity().get(); | |
49 if (mContext == null) return; | |
Sam McNally
2016/07/26 08:21:51
Is this really necessary?
Matt Giuca
2016/07/28 05:58:32
No, it was a joke lol.
| |
50 } | |
51 | |
52 @Override | |
53 public void close() {} | |
54 | |
55 @Override | |
56 public void onConnectionError(MojoException e) {} | |
57 | |
58 @Override | |
59 public void share(String title, String text, ShareResponse callback) { | |
60 String chooserTitle = mContext.getString(R.string.share_link_chooser_tit le); | |
61 Intent send = new Intent(Intent.ACTION_SEND); | |
62 send.setType("text/plain"); | |
63 send.putExtra(Intent.EXTRA_SUBJECT, text); | |
64 send.putExtra(Intent.EXTRA_TEXT, text); | |
65 | |
66 Intent chooser = Intent.createChooser(send, chooserTitle); | |
67 if (!mWindow.showIntent(chooser, null, null)) { | |
68 callback.call("Could not start intent"); | |
Sam McNally
2016/07/26 08:21:52
I don't think we should expose platform-specific e
Matt Giuca
2016/07/28 05:58:32
I think we should just return an enum of errors if
| |
69 return; | |
70 } | |
71 | |
72 // Success. | |
73 // TODO(mgiuca): Wait until the user has made a choice, and report failu re if they cancel | |
74 // the picker or something else goes wrong. | |
75 callback.call(null); | |
76 } | |
77 } | |
OLD | NEW |