diff --git a/README.mdown b/README.mdown index d13f6a4bc4..bdb321d827 100644 --- a/README.mdown +++ b/README.mdown @@ -15,11 +15,87 @@ TRY IT OUT FEATURES -------- -* Login - https://developers.facebook.com/docs/facebook-login -* Sharing - https://developers.facebook.com/docs/sharing +* Login - https://developers.facebook.com/docs/facebook-login +* Sharing - https://developers.facebook.com/docs/sharing +* Places - https://developers.facebook.com/docs/places +* Messenger - https://developers.facebook.com/docs/messenger-expressions * App Links - https://developers.facebook.com/docs/applinks -* Graph API - https://developers.facebook.com/docs/android/graph * Analytics - https://developers.facebook.com/docs/analytics +* Graph API - https://developers.facebook.com/docs/android/graph + +STRUCTURE +--------- +The SDK is separated into modules with the following structure. Each box represents a module with an +estimated size when included into an app (when included using proguard and supporting a single language). + + +--------------------------------------------------------------+ + | | + | Facebook-android-sdk : 335.39 kb | + | | + +--------------------------------------------------------------+ + +----------+ +----------+ +----------+ +----------+ +----------+ + | | | | | | | | | | + | | | | | | | | | | + | Facebook | | Facebook | | Facebook | | Facebook | | Facebook | + | -Login : | | -Share : | | -Places :| |-Messenger: |-Applinks:| + | | | | | | | | | | + | 246.66 kb| | 247.92 kb| | 53.48 kb | | 91.96 kb | | 67.00 kb | + +----------+ +----------+ | | | | | | + +-----------------------+ | | | | | | + | | | | | | | | + | Facebook-Common : N/A | | | | | | | + | | | | | | | | + +-----------------------+ +----------+ +----------+ +----------+ + +--------------------------------------------------------------+ + | | + | Facebook-Core : 52.46 kb | + | | + +--------------------------------------------------------------+ + +Example: Including the Facebook-Login module (which depends on Facebook-Common and Facebook-Core) would +increase your app's size by an estimated 243.91 kb and including just Facebook-Core would only increase +your size by 50.98 kb. + +USAGE +----- +Facebook SDKs are broken up into separate modules as shown above. To ensure the most optimized use of +space only install the modules that you intend to use. To get started, see the Installation section below. + +INSTALLATION +------------ +Facebook SDKs are published to Maven as independent modules. To utilize a feature listed above +include the appropriate dependency (or dependencies) listed below in your `app/build.gradle` file. + + dependencies { + // Facebook Core only (Analytics) + compile 'com.facebook.android:facebook-core:4.27' + + // Facebook Login only + compile 'com.facebook.android:facebook-login:4.27' + + // Facebook Share only + compile 'com.facebook.android:facebook-share:4.27' + + // Facebook Places only + compile 'com.facebook.android:facebook-places:4.27' + + // Facbeook Messenger only + compile 'com.facebook.android:facebook-messenger:4.27' + + // Facebook App Links only + compile 'com.facebook.android:facebook-applinks:4.27' + + // Facebook Android SDK (everything) + compile 'com.facebook.android:facebook-android-sdk:4.27' + } + +You may also need to add the following to your project/build.gradle file. + + buildscript { + repositories { + mavenCentral() + } + } GIVE FEEDBACK ------------- diff --git a/facebook-applinks/.gitignore b/facebook-applinks/.gitignore new file mode 100644 index 0000000000..796b96d1c4 --- /dev/null +++ b/facebook-applinks/.gitignore @@ -0,0 +1 @@ +/build diff --git a/facebook-applinks/build.gradle b/facebook-applinks/build.gradle new file mode 100644 index 0000000000..e3756d51b9 --- /dev/null +++ b/facebook-applinks/build.gradle @@ -0,0 +1,33 @@ +apply plugin: 'com.android.library' + +project.group 'com.facebook.android' + +project.ext.name = 'Facebook-Applinks-Android-SDK' +project.ext.artifactId = "facebook-applinks" +project.ext.description = 'Facebook Applinks Android SDK' +project.ext.url = 'https://github.com/facebook/facebook-android-sdk/facebook-applinks' + +dependencies { + // Facebook Dependencies + compile project(':facebook-core') +} + +android { + compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION) + buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION + + defaultConfig { + minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION) + targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION) + consumerProguardFiles 'proguard-rules.pro' + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +apply from: "${rootDir}/maven.gradle" diff --git a/facebook-applinks/proguard-rules.pro b/facebook-applinks/proguard-rules.pro new file mode 100644 index 0000000000..3d8585b06b --- /dev/null +++ b/facebook-applinks/proguard-rules.pro @@ -0,0 +1,33 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +-keepclassmembers class * implements java.io.Serializable { + private static final java.io.ObjectStreamField[] serialPersistentFields; + private void writeObject(java.io.ObjectOutputStream); + private void readObject(java.io.ObjectInputStream); + java.lang.Object writeReplace(); + java.lang.Object readResolve(); +} + +-keepnames class com.facebook.FacebookActivity +-keepnames class com.facebook.CustomTabActivity + +-keep class com.facebook.applinks.AppLinks \ No newline at end of file diff --git a/facebook/src/main/res/values-cs/messenger_button_strings.xml b/facebook-applinks/src/main/AndroidManifest.xml similarity index 86% rename from facebook/src/main/res/values-cs/messenger_button_strings.xml rename to facebook-applinks/src/main/AndroidManifest.xml index 381bf74f6d..52fc26c0a0 100644 --- a/facebook/src/main/res/values-cs/messenger_button_strings.xml +++ b/facebook-applinks/src/main/AndroidManifest.xml @@ -19,6 +19,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --> - - Odeslat - + + + + + + + diff --git a/facebook/src/main/java/com/facebook/applinks/AppLinkData.java b/facebook-applinks/src/main/java/com/facebook/applinks/AppLinkData.java similarity index 100% rename from facebook/src/main/java/com/facebook/applinks/AppLinkData.java rename to facebook-applinks/src/main/java/com/facebook/applinks/AppLinkData.java diff --git a/facebook-applinks/src/main/java/com/facebook/applinks/AppLinks.java b/facebook-applinks/src/main/java/com/facebook/applinks/AppLinks.java new file mode 100644 index 0000000000..7fc64e106f --- /dev/null +++ b/facebook-applinks/src/main/java/com/facebook/applinks/AppLinks.java @@ -0,0 +1,5 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +package com.facebook.applinks; + +public class AppLinks { } diff --git a/facebook/src/main/java/com/facebook/applinks/FacebookAppLinkResolver.java b/facebook-applinks/src/main/java/com/facebook/applinks/FacebookAppLinkResolver.java similarity index 100% rename from facebook/src/main/java/com/facebook/applinks/FacebookAppLinkResolver.java rename to facebook-applinks/src/main/java/com/facebook/applinks/FacebookAppLinkResolver.java diff --git a/facebook-common/.gitignore b/facebook-common/.gitignore new file mode 100644 index 0000000000..796b96d1c4 --- /dev/null +++ b/facebook-common/.gitignore @@ -0,0 +1 @@ +/build diff --git a/facebook-common/build.gradle b/facebook-common/build.gradle new file mode 100644 index 0000000000..3e286586cd --- /dev/null +++ b/facebook-common/build.gradle @@ -0,0 +1,54 @@ +apply plugin: 'com.android.library' + +project.group 'com.facebook.android' + +project.ext.name = 'Facebook-Common-Android-SDK' +project.ext.artifactId = "facebook-common" +project.ext.description = 'Facebook Common Android SDK' +project.ext.url = 'https://github.com/facebook/facebook-android-sdk/facebook-common' + +dependencies { + // Facebook Dependencies + compile project(':facebook-core') + // Support Dependencies + compile 'com.android.support:appcompat-v7:25.3.1' + compile 'com.android.support:cardview-v7:25.3.1' + compile 'com.android.support:customtabs:25.3.1' + compile 'com.android.support:support-v4:25.3.1' + // Third-party Dependencies + compile 'com.google.zxing:core:3.3.0' +} + +android { + compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION) + buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION + + defaultConfig { + minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION) + targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION) + consumerProguardFiles 'proguard-rules.pro' + vectorDrawables.useSupportLibrary = true + } + + aaptOptions { + additionalParameters "--no-version-vectors" + } + + lintOptions { + abortOnError false + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_7 + targetCompatibility JavaVersion.VERSION_1_7 + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +apply from: "${rootDir}/maven.gradle" diff --git a/facebook-common/proguard-rules.pro b/facebook-common/proguard-rules.pro new file mode 100644 index 0000000000..5d0cc61f89 --- /dev/null +++ b/facebook-common/proguard-rules.pro @@ -0,0 +1,33 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +-keepclassmembers class * implements java.io.Serializable { + private static final java.io.ObjectStreamField[] serialPersistentFields; + private void writeObject(java.io.ObjectOutputStream); + private void readObject(java.io.ObjectInputStream); + java.lang.Object writeReplace(); + java.lang.Object readResolve(); +} + +-keepnames class com.facebook.FacebookActivity +-keepnames class com.facebook.CustomTabActivity + +-keep class com.facebook.common.Common diff --git a/facebook/src/main/res/values-pa/messenger_button_strings.xml b/facebook-common/src/main/AndroidManifest.xml similarity index 70% rename from facebook/src/main/res/values-pa/messenger_button_strings.xml rename to facebook-common/src/main/AndroidManifest.xml index 12057e2f74..11c353a701 100644 --- a/facebook/src/main/res/values-pa/messenger_button_strings.xml +++ b/facebook-common/src/main/AndroidManifest.xml @@ -19,6 +19,18 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --> - - ਭੇਜੋ - + + + + + + + + + + + diff --git a/facebook/src/main/java/com/facebook/AccessTokenTracker.java b/facebook-common/src/main/java/com/facebook/AccessTokenTracker.java similarity index 97% rename from facebook/src/main/java/com/facebook/AccessTokenTracker.java rename to facebook-common/src/main/java/com/facebook/AccessTokenTracker.java index b25b6e4f6c..c4f3ed29c7 100644 --- a/facebook/src/main/java/com/facebook/AccessTokenTracker.java +++ b/facebook-common/src/main/java/com/facebook/AccessTokenTracker.java @@ -26,6 +26,9 @@ import android.content.IntentFilter; import android.support.v4.content.LocalBroadcastManager; +import com.facebook.AccessToken; +import com.facebook.AccessTokenManager; +import com.facebook.FacebookSdk; import com.facebook.internal.Validate; diff --git a/facebook/src/main/java/com/facebook/CustomTabActivity.java b/facebook-common/src/main/java/com/facebook/CustomTabActivity.java similarity index 100% rename from facebook/src/main/java/com/facebook/CustomTabActivity.java rename to facebook-common/src/main/java/com/facebook/CustomTabActivity.java diff --git a/facebook/src/main/java/com/facebook/CustomTabMainActivity.java b/facebook-common/src/main/java/com/facebook/CustomTabMainActivity.java similarity index 99% rename from facebook/src/main/java/com/facebook/CustomTabMainActivity.java rename to facebook-common/src/main/java/com/facebook/CustomTabMainActivity.java index f29c027fbc..004852f94f 100644 --- a/facebook/src/main/java/com/facebook/CustomTabMainActivity.java +++ b/facebook-common/src/main/java/com/facebook/CustomTabMainActivity.java @@ -29,6 +29,7 @@ import android.os.Bundle; import android.support.v4.content.LocalBroadcastManager; +import com.facebook.FacebookSdk; import com.facebook.internal.CustomTab; public class CustomTabMainActivity extends Activity { diff --git a/facebook/src/main/java/com/facebook/FacebookActivity.java b/facebook-common/src/main/java/com/facebook/FacebookActivity.java similarity index 99% rename from facebook/src/main/java/com/facebook/FacebookActivity.java rename to facebook-common/src/main/java/com/facebook/FacebookActivity.java index ded4c9660c..3c691db225 100644 --- a/facebook/src/main/java/com/facebook/FacebookActivity.java +++ b/facebook-common/src/main/java/com/facebook/FacebookActivity.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -28,6 +28,7 @@ import android.support.v4.app.FragmentManager; import android.util.Log; +import com.facebook.common.R; import com.facebook.internal.FacebookDialogFragment; import com.facebook.internal.NativeProtocol; import com.facebook.login.LoginFragment; diff --git a/facebook/src/main/java/com/facebook/FacebookAuthorizationException.java b/facebook-common/src/main/java/com/facebook/FacebookAuthorizationException.java similarity index 98% rename from facebook/src/main/java/com/facebook/FacebookAuthorizationException.java rename to facebook-common/src/main/java/com/facebook/FacebookAuthorizationException.java index 1997e80575..b61765e7ad 100644 --- a/facebook/src/main/java/com/facebook/FacebookAuthorizationException.java +++ b/facebook-common/src/main/java/com/facebook/FacebookAuthorizationException.java @@ -20,6 +20,8 @@ package com.facebook; +import com.facebook.FacebookException; + /** * An Exception indicating that Login failed. */ diff --git a/facebook/src/main/java/com/facebook/FacebookButtonBase.java b/facebook-common/src/main/java/com/facebook/FacebookButtonBase.java similarity index 99% rename from facebook/src/main/java/com/facebook/FacebookButtonBase.java rename to facebook-common/src/main/java/com/facebook/FacebookButtonBase.java index 0192206cd4..5cde8d40f7 100644 --- a/facebook/src/main/java/com/facebook/FacebookButtonBase.java +++ b/facebook-common/src/main/java/com/facebook/FacebookButtonBase.java @@ -35,8 +35,10 @@ import android.view.View; import android.widget.Button; +import com.facebook.FacebookException; import com.facebook.appevents.AppEventsLogger; import com.facebook.internal.FragmentWrapper; +import com.facebook.common.R; /** * A base class for a facebook button. diff --git a/facebook/src/main/java/com/facebook/FacebookCallback.java b/facebook-common/src/main/java/com/facebook/FacebookCallback.java similarity index 98% rename from facebook/src/main/java/com/facebook/FacebookCallback.java rename to facebook-common/src/main/java/com/facebook/FacebookCallback.java index b25092c1d7..222dc5cf99 100644 --- a/facebook/src/main/java/com/facebook/FacebookCallback.java +++ b/facebook-common/src/main/java/com/facebook/FacebookCallback.java @@ -20,6 +20,8 @@ package com.facebook; +import com.facebook.FacebookException; + /** * A callback class for the Facebook SDK. */ diff --git a/facebook/src/main/java/com/facebook/FacebookDialog.java b/facebook-common/src/main/java/com/facebook/FacebookDialog.java similarity index 98% rename from facebook/src/main/java/com/facebook/FacebookDialog.java rename to facebook-common/src/main/java/com/facebook/FacebookDialog.java index 5af094bc63..f66e8125d5 100644 --- a/facebook/src/main/java/com/facebook/FacebookDialog.java +++ b/facebook-common/src/main/java/com/facebook/FacebookDialog.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -20,6 +20,8 @@ package com.facebook; +import com.facebook.CallbackManager; + /** * Represents dialogs provided by Facebook */ diff --git a/facebook/src/main/java/com/facebook/FacebookDialogException.java b/facebook-common/src/main/java/com/facebook/FacebookDialogException.java similarity index 98% rename from facebook/src/main/java/com/facebook/FacebookDialogException.java rename to facebook-common/src/main/java/com/facebook/FacebookDialogException.java index 4a336fa280..67ddb452d2 100644 --- a/facebook/src/main/java/com/facebook/FacebookDialogException.java +++ b/facebook-common/src/main/java/com/facebook/FacebookDialogException.java @@ -20,6 +20,8 @@ package com.facebook; +import com.facebook.FacebookException; + /** * Represents an error condition relating to displaying a Facebook Web dialog. */ diff --git a/facebook/src/main/java/com/facebook/LoginStatusCallback.java b/facebook-common/src/main/java/com/facebook/LoginStatusCallback.java similarity index 98% rename from facebook/src/main/java/com/facebook/LoginStatusCallback.java rename to facebook-common/src/main/java/com/facebook/LoginStatusCallback.java index beab053eeb..d4de3939dd 100644 --- a/facebook/src/main/java/com/facebook/LoginStatusCallback.java +++ b/facebook-common/src/main/java/com/facebook/LoginStatusCallback.java @@ -20,6 +20,8 @@ package com.facebook; +import com.facebook.AccessToken; + /** * A callback class for getting the Login Status of a user. */ diff --git a/facebook-common/src/main/java/com/facebook/ShareGraphRequest.java b/facebook-common/src/main/java/com/facebook/ShareGraphRequest.java new file mode 100644 index 0000000000..436d3561d1 --- /dev/null +++ b/facebook-common/src/main/java/com/facebook/ShareGraphRequest.java @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, + * copy, modify, and distribute this software in source code or binary form for use + * in connection with the web services and APIs provided by Facebook. + * + * As with any software that integrates with the Facebook platform, your use of + * this software is subject to the Facebook Developer Principles and Policies + * [http://developers.facebook.com/policy/]. This copyright notice shall be + * included in all copies or substantial portions of the software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.facebook; + +import android.net.Uri; +import android.os.Bundle; + +import com.facebook.AccessToken; +import com.facebook.FacebookException; +import com.facebook.GraphRequest; +import com.facebook.HttpMethod; +import com.facebook.internal.NativeProtocol; +import com.facebook.share.internal.OpenGraphJSONUtility; +import com.facebook.share.model.ShareOpenGraphObject; +import com.facebook.share.model.SharePhoto; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.Locale; + +public class ShareGraphRequest { + + /** + * Create an User Owned Open Graph object + * + * Use this method to create an open graph object, which can then be posted utilizing the same + * GraphRequest methods as other GraphRequests. + * + * @param openGraphObject The open graph object to create. Only SharePhotos with the imageUrl + * set are accepted through this helper method. + * @return GraphRequest for creating the given openGraphObject + * @throws FacebookException thrown in the case of a JSONException or in the case of invalid + * format for SharePhoto (missing imageUrl) + */ + + public static GraphRequest createOpenGraphObject(final ShareOpenGraphObject openGraphObject) + throws FacebookException { + String type = openGraphObject.getString("type"); + if (type == null) { + type = openGraphObject.getString("og:type"); + } + + if (type == null) { + throw new FacebookException("Open graph object type cannot be null"); + } + try { + JSONObject stagedObject = (JSONObject) OpenGraphJSONUtility.toJSONValue( + openGraphObject, + new OpenGraphJSONUtility.PhotoJSONProcessor() { + @Override + public JSONObject toJSONObject(SharePhoto photo) { + Uri photoUri = photo.getImageUrl(); + JSONObject photoJSONObject = new JSONObject(); + try { + photoJSONObject.put( + NativeProtocol.IMAGE_URL_KEY, photoUri.toString()); + } catch (Exception e) { + throw new FacebookException("Unable to attach images", e); + } + return photoJSONObject; + } + }); + String ogType = type; + Bundle parameters = new Bundle(); + parameters.putString("object", stagedObject.toString()); + + String graphPath = String.format( + Locale.ROOT, "%s/%s", + "me", + "objects/" + ogType); + return new GraphRequest( + AccessToken.getCurrentAccessToken(), + graphPath, + parameters, + HttpMethod.POST); + } + catch(JSONException e){ + throw new FacebookException(e.getMessage()); + } + } + +} diff --git a/facebook/src/test/java/com/facebook/GraphUtilTest.java b/facebook-common/src/main/java/com/facebook/WebDialog.java similarity index 65% rename from facebook/src/test/java/com/facebook/GraphUtilTest.java rename to facebook-common/src/main/java/com/facebook/WebDialog.java index a89fcf8462..168b31b480 100644 --- a/facebook/src/test/java/com/facebook/GraphUtilTest.java +++ b/facebook-common/src/main/java/com/facebook/WebDialog.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -20,22 +20,23 @@ package com.facebook; -import com.facebook.internal.GraphUtil; -import com.facebook.internal.NativeProtocol; +public class WebDialog { -import org.json.JSONObject; -import org.junit.Test; + private WebDialog() { /* no instances */ } -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import static org.junit.Assert.*; + /** + * Gets the theme used by {@link com.facebook.internal.WebDialog} + * @return the theme + */ + public static int getWebDialogTheme() { + return com.facebook.internal.WebDialog.getWebDialogTheme(); + } -public class GraphUtilTest extends FacebookTestCase { - @Test - public void testIsOpenGraphObjectForPost() { - JSONObject jsonObject = mock(JSONObject.class); - when(jsonObject.optBoolean(NativeProtocol.OPEN_GRAPH_CREATE_OBJECT_KEY)).thenReturn(true); - assertTrue(GraphUtil.isOpenGraphObjectForPost(jsonObject)); + /** + * Sets the theme used by {@link com.facebook.internal.WebDialog} + * @param theme A theme to use + */ + public static void setWebDialogTheme(int theme) { + com.facebook.internal.WebDialog.setWebDialogTheme(theme); } } diff --git a/facebook-common/src/main/java/com/facebook/common/Common.java b/facebook-common/src/main/java/com/facebook/common/Common.java new file mode 100644 index 0000000000..af14a02534 --- /dev/null +++ b/facebook-common/src/main/java/com/facebook/common/Common.java @@ -0,0 +1,5 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +package com.facebook.common; + +public class Common { } diff --git a/facebook/src/main/java/com/facebook/devicerequests/internal/DeviceRequestsHelper.java b/facebook-common/src/main/java/com/facebook/devicerequests/internal/DeviceRequestsHelper.java similarity index 100% rename from facebook/src/main/java/com/facebook/devicerequests/internal/DeviceRequestsHelper.java rename to facebook-common/src/main/java/com/facebook/devicerequests/internal/DeviceRequestsHelper.java diff --git a/facebook/src/main/java/com/facebook/internal/AppCall.java b/facebook-common/src/main/java/com/facebook/internal/AppCall.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/AppCall.java rename to facebook-common/src/main/java/com/facebook/internal/AppCall.java diff --git a/facebook/src/main/java/com/facebook/internal/CustomTab.java b/facebook-common/src/main/java/com/facebook/internal/CustomTab.java similarity index 96% rename from facebook/src/main/java/com/facebook/internal/CustomTab.java rename to facebook-common/src/main/java/com/facebook/internal/CustomTab.java index 91c345222e..22dcad5098 100644 --- a/facebook/src/main/java/com/facebook/internal/CustomTab.java +++ b/facebook-common/src/main/java/com/facebook/internal/CustomTab.java @@ -28,6 +28,8 @@ import android.support.customtabs.CustomTabsIntent; import com.facebook.FacebookSdk; +import com.facebook.internal.ServerProtocol; +import com.facebook.internal.Utility; public class CustomTab { diff --git a/facebook/src/main/java/com/facebook/internal/DialogFeature.java b/facebook-common/src/main/java/com/facebook/internal/DialogFeature.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/DialogFeature.java rename to facebook-common/src/main/java/com/facebook/internal/DialogFeature.java diff --git a/facebook/src/main/java/com/facebook/internal/DialogPresenter.java b/facebook-common/src/main/java/com/facebook/internal/DialogPresenter.java similarity index 98% rename from facebook/src/main/java/com/facebook/internal/DialogPresenter.java rename to facebook-common/src/main/java/com/facebook/internal/DialogPresenter.java index bb85849226..eca10cdf1b 100644 --- a/facebook/src/main/java/com/facebook/internal/DialogPresenter.java +++ b/facebook-common/src/main/java/com/facebook/internal/DialogPresenter.java @@ -30,6 +30,11 @@ import com.facebook.FacebookException; import com.facebook.FacebookSdk; import com.facebook.appevents.AppEventsLogger; +import com.facebook.internal.FetchedAppSettings; +import com.facebook.internal.NativeProtocol; +import com.facebook.internal.ServerProtocol; +import com.facebook.internal.Utility; +import com.facebook.internal.Validate; /** * com.facebook.internal is solely for the use of other packages within the diff --git a/facebook/src/main/java/com/facebook/internal/FacebookDialogBase.java b/facebook-common/src/main/java/com/facebook/internal/FacebookDialogBase.java similarity index 98% rename from facebook/src/main/java/com/facebook/internal/FacebookDialogBase.java rename to facebook-common/src/main/java/com/facebook/internal/FacebookDialogBase.java index 3eabaf47c0..b9b46c43fa 100644 --- a/facebook/src/main/java/com/facebook/internal/FacebookDialogBase.java +++ b/facebook-common/src/main/java/com/facebook/internal/FacebookDialogBase.java @@ -30,6 +30,10 @@ import com.facebook.FacebookException; import com.facebook.FacebookSdk; import com.facebook.LoggingBehavior; +import com.facebook.internal.CallbackManagerImpl; +import com.facebook.internal.Logger; +import com.facebook.internal.Utility; +import com.facebook.internal.Validate; import java.util.List; diff --git a/facebook/src/main/java/com/facebook/internal/FacebookDialogFragment.java b/facebook-common/src/main/java/com/facebook/internal/FacebookDialogFragment.java similarity index 97% rename from facebook/src/main/java/com/facebook/internal/FacebookDialogFragment.java rename to facebook-common/src/main/java/com/facebook/internal/FacebookDialogFragment.java index 57d78ed6ec..935d64fd5c 100644 --- a/facebook/src/main/java/com/facebook/internal/FacebookDialogFragment.java +++ b/facebook-common/src/main/java/com/facebook/internal/FacebookDialogFragment.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -31,6 +31,8 @@ import com.facebook.FacebookException; import com.facebook.FacebookSdk; +import com.facebook.internal.NativeProtocol; +import com.facebook.internal.Utility; /** * com.facebook.internal is solely for the use of other packages within the @@ -92,7 +94,7 @@ public void onComplete(Bundle values, FacebookException error) { String redirectUrl = String.format("fb%s://bridge/", FacebookSdk.getApplicationId()); - webDialog = new FacebookWebFallbackDialog(activity, url, redirectUrl); + webDialog = FacebookWebFallbackDialog.newInstance(activity, url, redirectUrl); webDialog.setOnCompleteListener(new WebDialog.OnCompleteListener() { @Override public void onComplete(Bundle values, FacebookException error) { diff --git a/facebook/src/main/java/com/facebook/internal/FacebookWebFallbackDialog.java b/facebook-common/src/main/java/com/facebook/internal/FacebookWebFallbackDialog.java similarity index 92% rename from facebook/src/main/java/com/facebook/internal/FacebookWebFallbackDialog.java rename to facebook-common/src/main/java/com/facebook/internal/FacebookWebFallbackDialog.java index 9d945cdcdd..3d501b255e 100644 --- a/facebook/src/main/java/com/facebook/internal/FacebookWebFallbackDialog.java +++ b/facebook-common/src/main/java/com/facebook/internal/FacebookWebFallbackDialog.java @@ -27,6 +27,11 @@ import android.os.Looper; import android.webkit.WebView; +import com.facebook.internal.BundleJSONConverter; +import com.facebook.internal.NativeProtocol; +import com.facebook.internal.ServerProtocol; +import com.facebook.internal.Utility; + import org.json.JSONException; import org.json.JSONObject; @@ -45,7 +50,16 @@ public class FacebookWebFallbackDialog extends WebDialog { private boolean waitingForDialogToClose; - public FacebookWebFallbackDialog(Context context, String url, String expectedRedirectUrl) { + public static FacebookWebFallbackDialog newInstance( + Context context, + String url, + String expectedRedirectUrl) { + WebDialog.initDefaultTheme(context); + + return new FacebookWebFallbackDialog(context, url, expectedRedirectUrl); + } + + private FacebookWebFallbackDialog(Context context, String url, String expectedRedirectUrl) { super(context, url); setExpectedRedirectUrl(expectedRedirectUrl); diff --git a/facebook/src/main/java/com/facebook/internal/FragmentWrapper.java b/facebook-common/src/main/java/com/facebook/internal/FragmentWrapper.java similarity index 98% rename from facebook/src/main/java/com/facebook/internal/FragmentWrapper.java rename to facebook-common/src/main/java/com/facebook/internal/FragmentWrapper.java index 990faa3a9a..98a8249b32 100644 --- a/facebook/src/main/java/com/facebook/internal/FragmentWrapper.java +++ b/facebook-common/src/main/java/com/facebook/internal/FragmentWrapper.java @@ -26,6 +26,8 @@ import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; +import com.facebook.internal.Validate; + public class FragmentWrapper { private Fragment supportFragment; private android.app.Fragment nativeFragment; diff --git a/facebook/src/main/java/com/facebook/internal/LoginAuthorizationType.java b/facebook-common/src/main/java/com/facebook/internal/LoginAuthorizationType.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/LoginAuthorizationType.java rename to facebook-common/src/main/java/com/facebook/internal/LoginAuthorizationType.java diff --git a/facebook/src/main/java/com/facebook/internal/PlatformServiceClient.java b/facebook-common/src/main/java/com/facebook/internal/PlatformServiceClient.java similarity index 99% rename from facebook/src/main/java/com/facebook/internal/PlatformServiceClient.java rename to facebook-common/src/main/java/com/facebook/internal/PlatformServiceClient.java index 45b7dfab80..8d54147c97 100644 --- a/facebook/src/main/java/com/facebook/internal/PlatformServiceClient.java +++ b/facebook-common/src/main/java/com/facebook/internal/PlatformServiceClient.java @@ -26,6 +26,8 @@ import android.content.ServiceConnection; import android.os.*; +import com.facebook.internal.NativeProtocol; + /** * com.facebook.internal is solely for the use of other packages within the Facebook SDK for * Android. Use of any of the classes in this package is unsupported, and they may be modified or diff --git a/facebook/src/main/java/com/facebook/internal/WebDialog.java b/facebook-common/src/main/java/com/facebook/internal/WebDialog.java similarity index 93% rename from facebook/src/main/java/com/facebook/internal/WebDialog.java rename to facebook-common/src/main/java/com/facebook/internal/WebDialog.java index 03fce88591..045f889535 100644 --- a/facebook/src/main/java/com/facebook/internal/WebDialog.java +++ b/facebook-common/src/main/java/com/facebook/internal/WebDialog.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -27,6 +27,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.drawable.Drawable; @@ -61,7 +63,11 @@ import com.facebook.GraphRequest; import com.facebook.GraphRequestAsyncTask; import com.facebook.GraphResponse; -import com.facebook.R; +import com.facebook.common.R; +import com.facebook.internal.Logger; +import com.facebook.internal.ServerProtocol; +import com.facebook.internal.Utility; +import com.facebook.internal.Validate; import com.facebook.share.internal.ShareConstants; import com.facebook.share.internal.ShareInternalUtility; import com.facebook.share.widget.ShareDialog; @@ -75,6 +81,8 @@ import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.CountDownLatch; +import static com.facebook.FacebookSdk.WEB_DIALOG_THEME; + /** * com.facebook.internal is solely for the use of other packages within the Facebook SDK for * Android. Use of any of the classes in this package is unsupported, and they may be modified or @@ -106,6 +114,8 @@ public class WebDialog extends Dialog { // translucent border around the webview private static final int BACKGROUND_GRAY = 0xCC000000; + private static final int DEFAULT_THEME = R.style.com_facebook_activity_theme; + private String url; private String expectedRedirectUrl = REDIRECT_URI; private OnCompleteListener onCompleteListener; @@ -117,6 +127,58 @@ public class WebDialog extends Dialog { private boolean listenerCalled = false; private boolean isDetached = false; private boolean isPageFinished = false; + private static volatile int webDialogTheme; + + protected static void initDefaultTheme(Context context) { + if (context == null) { + return; + } + + ApplicationInfo ai; + try { + ai = context.getPackageManager().getApplicationInfo( + context.getPackageName(), PackageManager.GET_META_DATA); + } catch (PackageManager.NameNotFoundException e) { + return; + } + + if (ai == null || ai.metaData == null) { + return; + } + + + if (webDialogTheme == 0) { + setWebDialogTheme(ai.metaData.getInt(WEB_DIALOG_THEME)); + } + } + + public static WebDialog newInstance( + Context context, + String action, + Bundle parameters, + int theme, + OnCompleteListener listener) { + initDefaultTheme(context); + + return new WebDialog(context, action, parameters, theme, listener); + } + + /** + * Gets the theme used by {@link com.facebook.internal.WebDialog} + * @return the theme + */ + public static int getWebDialogTheme() { + Validate.sdkInitialized(); + return webDialogTheme; + } + + /** + * Sets the theme used by {@link com.facebook.internal.WebDialog} + * @param theme A theme to use + */ + public static void setWebDialogTheme(int theme) { + webDialogTheme = (theme != 0) ? theme : DEFAULT_THEME; + } /** * Interface that implements a listener to be called when the user's interaction with the @@ -140,8 +202,8 @@ public interface OnCompleteListener { * @param url the URL of the Web Dialog to display; no validation is done on this URL, but it should * be a valid URL pointing to a Facebook Web Dialog */ - public WebDialog(Context context, String url) { - this(context, url, FacebookSdk.getWebDialogTheme()); + protected WebDialog(Context context, String url) { + this(context, url, getWebDialogTheme()); } /** @@ -152,8 +214,8 @@ public WebDialog(Context context, String url) { * be a valid URL pointing to a Facebook Web Dialog * @param theme identifier of a theme to pass to the Dialog class */ - public WebDialog(Context context, String url, int theme) { - super(context, theme == 0 ? FacebookSdk.getWebDialogTheme() : theme); + private WebDialog(Context context, String url, int theme) { + super(context, theme == 0 ? getWebDialogTheme() : theme); this.url = url; } @@ -166,8 +228,13 @@ public WebDialog(Context context, String url, int theme) { * @param theme identifier of a theme to pass to the Dialog class * @param listener the listener to notify, or null if no notification is desired */ - public WebDialog(Context context, String action, Bundle parameters, int theme, OnCompleteListener listener) { - super(context, theme == 0 ? FacebookSdk.getWebDialogTheme() : theme); + private WebDialog( + Context context, + String action, + Bundle parameters, + int theme, + OnCompleteListener listener) { + super(context, theme == 0 ? getWebDialogTheme() : theme); if (parameters == null) { parameters = new Bundle(); @@ -672,7 +739,7 @@ public WebDialog build() { parameters.putString(ServerProtocol.DIALOG_PARAM_APP_ID, applicationId); } - return new WebDialog(context, action, parameters, theme, listener); + return WebDialog.newInstance(context, action, parameters, theme, listener); } public String getApplicationId() { diff --git a/facebook/src/main/java/com/facebook/login/CustomTabLoginMethodHandler.java b/facebook-common/src/main/java/com/facebook/login/CustomTabLoginMethodHandler.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/CustomTabLoginMethodHandler.java rename to facebook-common/src/main/java/com/facebook/login/CustomTabLoginMethodHandler.java diff --git a/facebook/src/main/java/com/facebook/login/DeviceAuthDialog.java b/facebook-common/src/main/java/com/facebook/login/DeviceAuthDialog.java similarity index 99% rename from facebook/src/main/java/com/facebook/login/DeviceAuthDialog.java rename to facebook-common/src/main/java/com/facebook/login/DeviceAuthDialog.java index 9b3b108397..6e5b57d3ec 100644 --- a/facebook/src/main/java/com/facebook/login/DeviceAuthDialog.java +++ b/facebook-common/src/main/java/com/facebook/login/DeviceAuthDialog.java @@ -50,7 +50,7 @@ import com.facebook.GraphRequestAsyncTask; import com.facebook.GraphResponse; import com.facebook.HttpMethod; -import com.facebook.R; +import com.facebook.common.R; import com.facebook.appevents.AppEventsLogger; import com.facebook.devicerequests.internal.DeviceRequestsHelper; import com.facebook.internal.AnalyticsEvents; diff --git a/facebook/src/main/java/com/facebook/login/DeviceAuthMethodHandler.java b/facebook-common/src/main/java/com/facebook/login/DeviceAuthMethodHandler.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/DeviceAuthMethodHandler.java rename to facebook-common/src/main/java/com/facebook/login/DeviceAuthMethodHandler.java diff --git a/facebook/src/main/java/com/facebook/login/FacebookLiteLoginMethodHandler.java b/facebook-common/src/main/java/com/facebook/login/FacebookLiteLoginMethodHandler.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/FacebookLiteLoginMethodHandler.java rename to facebook-common/src/main/java/com/facebook/login/FacebookLiteLoginMethodHandler.java diff --git a/facebook/src/main/java/com/facebook/login/GetTokenClient.java b/facebook-common/src/main/java/com/facebook/login/GetTokenClient.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/GetTokenClient.java rename to facebook-common/src/main/java/com/facebook/login/GetTokenClient.java diff --git a/facebook/src/main/java/com/facebook/login/GetTokenLoginMethodHandler.java b/facebook-common/src/main/java/com/facebook/login/GetTokenLoginMethodHandler.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/GetTokenLoginMethodHandler.java rename to facebook-common/src/main/java/com/facebook/login/GetTokenLoginMethodHandler.java diff --git a/facebook/src/main/java/com/facebook/login/KatanaProxyLoginMethodHandler.java b/facebook-common/src/main/java/com/facebook/login/KatanaProxyLoginMethodHandler.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/KatanaProxyLoginMethodHandler.java rename to facebook-common/src/main/java/com/facebook/login/KatanaProxyLoginMethodHandler.java diff --git a/facebook/src/main/java/com/facebook/login/LoginBehavior.java b/facebook-common/src/main/java/com/facebook/login/LoginBehavior.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/LoginBehavior.java rename to facebook-common/src/main/java/com/facebook/login/LoginBehavior.java diff --git a/facebook/src/main/java/com/facebook/login/LoginClient.java b/facebook-common/src/main/java/com/facebook/login/LoginClient.java similarity index 99% rename from facebook/src/main/java/com/facebook/login/LoginClient.java rename to facebook-common/src/main/java/com/facebook/login/LoginClient.java index 486b26b9ee..81c35069a2 100644 --- a/facebook/src/main/java/com/facebook/login/LoginClient.java +++ b/facebook-common/src/main/java/com/facebook/login/LoginClient.java @@ -32,11 +32,12 @@ import com.facebook.AccessToken; import com.facebook.FacebookException; -import com.facebook.R; +import com.facebook.common.R; import com.facebook.appevents.AppEventsConstants; import com.facebook.internal.CallbackManagerImpl; import com.facebook.internal.Utility; import com.facebook.internal.Validate; +import com.facebook.login.DefaultAudience; import org.json.JSONException; import org.json.JSONObject; diff --git a/facebook/src/main/java/com/facebook/login/LoginFragment.java b/facebook-common/src/main/java/com/facebook/login/LoginFragment.java similarity index 99% rename from facebook/src/main/java/com/facebook/login/LoginFragment.java rename to facebook-common/src/main/java/com/facebook/login/LoginFragment.java index d168c51c13..1222581c93 100644 --- a/facebook/src/main/java/com/facebook/login/LoginFragment.java +++ b/facebook-common/src/main/java/com/facebook/login/LoginFragment.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -31,7 +31,7 @@ import android.view.View; import android.view.ViewGroup; -import com.facebook.R; +import com.facebook.common.R; /** * This Fragment is a necessary part of the overall Facebook login process diff --git a/facebook/src/main/java/com/facebook/login/LoginLogger.java b/facebook-common/src/main/java/com/facebook/login/LoginLogger.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/LoginLogger.java rename to facebook-common/src/main/java/com/facebook/login/LoginLogger.java diff --git a/facebook/src/main/java/com/facebook/login/LoginManager.java b/facebook-common/src/main/java/com/facebook/login/LoginManager.java similarity index 95% rename from facebook/src/main/java/com/facebook/login/LoginManager.java rename to facebook-common/src/main/java/com/facebook/login/LoginManager.java index db00b44ece..0694dc83cf 100644 --- a/facebook/src/main/java/com/facebook/login/LoginManager.java +++ b/facebook-common/src/main/java/com/facebook/login/LoginManager.java @@ -23,6 +23,7 @@ import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.Intent; +import android.content.SharedPreferences; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Bundle; @@ -46,6 +47,7 @@ import com.facebook.internal.Utility; import com.facebook.internal.Validate; import com.facebook.appevents.AppEventsConstants; +import com.facebook.login.DefaultAudience; import java.util.ArrayList; import java.util.Collection; @@ -63,15 +65,20 @@ public class LoginManager { private static final String PUBLISH_PERMISSION_PREFIX = "publish"; private static final String MANAGE_PERMISSION_PREFIX = "manage"; + private static final String EXPRESS_LOGIN_ALLOWED = "express_login_allowed"; + private static final String PREFERENCE_LOGIN_MANAGER = "com.facebook.loginManager"; private static final Set OTHER_PUBLISH_PERMISSIONS = getOtherPublishPermissions(); private static volatile LoginManager instance; private LoginBehavior loginBehavior = LoginBehavior.NATIVE_WITH_FALLBACK; private DefaultAudience defaultAudience = DefaultAudience.FRIENDS; + private final SharedPreferences sharedPreferences; LoginManager() { Validate.sdkInitialized(); + sharedPreferences = FacebookSdk.getApplicationContext() + .getSharedPreferences(PREFERENCE_LOGIN_MANAGER, Context.MODE_PRIVATE); } /** @@ -281,6 +288,7 @@ public LoginManager setDefaultAudience(DefaultAudience defaultAudience) { public void logOut() { AccessToken.setCurrentAccessToken(null); Profile.setCurrentProfile(null); + setExpressLoginStatus(false); } /** @@ -627,6 +635,7 @@ private void finishLogin( } else if (exception != null) { callback.onError(exception); } else if (newToken != null) { + setExpressLoginStatus(true); callback.onSuccess(loginResult); } } @@ -636,18 +645,25 @@ private void retrieveLoginStatusImpl( final Context context, final LoginStatusCallback responseCallback, final long toastDurationMs) { - final String applicationId = FacebookSdk.getApplicationId(); - final String loggerRef = UUID.randomUUID().toString(); - final LoginStatusClient client - = new LoginStatusClient( - context, - applicationId, - loggerRef, - FacebookSdk.getGraphApiVersion(), - toastDurationMs); + final String applicationId = FacebookSdk.getApplicationId(); + final String loggerRef = UUID.randomUUID().toString(); final LoginLogger logger = new LoginLogger(context, applicationId); + if (!isExpressLoginAllowed()) { + logger.logLoginStatusFailure(loggerRef); + responseCallback.onFailure(); + return; + } + + final LoginStatusClient client + = new LoginStatusClient( + context, + applicationId, + loggerRef, + FacebookSdk.getGraphApiVersion(), + toastDurationMs); + final LoginStatusClient.CompletedListener callback = new LoginStatusClient.CompletedListener() { @Override @@ -724,6 +740,16 @@ public void completed(Bundle result) { }; } + private void setExpressLoginStatus(boolean isExpressLoginAllowed) { + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.putBoolean(EXPRESS_LOGIN_ALLOWED, isExpressLoginAllowed); + editor.apply(); + } + + private boolean isExpressLoginAllowed() { + return sharedPreferences.getBoolean(EXPRESS_LOGIN_ALLOWED, true); + } + @Nullable private static Profile getProfileFromBundle(Bundle result) { final String name = result.getString(NativeProtocol.EXTRA_ARGS_PROFILE_NAME); diff --git a/facebook/src/main/java/com/facebook/login/LoginMethodHandler.java b/facebook-common/src/main/java/com/facebook/login/LoginMethodHandler.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/LoginMethodHandler.java rename to facebook-common/src/main/java/com/facebook/login/LoginMethodHandler.java diff --git a/facebook/src/main/java/com/facebook/login/LoginResult.java b/facebook-common/src/main/java/com/facebook/login/LoginResult.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/LoginResult.java rename to facebook-common/src/main/java/com/facebook/login/LoginResult.java diff --git a/facebook/src/main/java/com/facebook/login/LoginStatusClient.java b/facebook-common/src/main/java/com/facebook/login/LoginStatusClient.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/LoginStatusClient.java rename to facebook-common/src/main/java/com/facebook/login/LoginStatusClient.java diff --git a/facebook/src/main/java/com/facebook/login/NativeAppLoginMethodHandler.java b/facebook-common/src/main/java/com/facebook/login/NativeAppLoginMethodHandler.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/NativeAppLoginMethodHandler.java rename to facebook-common/src/main/java/com/facebook/login/NativeAppLoginMethodHandler.java diff --git a/facebook/src/main/java/com/facebook/login/StartActivityDelegate.java b/facebook-common/src/main/java/com/facebook/login/StartActivityDelegate.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/StartActivityDelegate.java rename to facebook-common/src/main/java/com/facebook/login/StartActivityDelegate.java diff --git a/facebook/src/main/java/com/facebook/login/WebLoginMethodHandler.java b/facebook-common/src/main/java/com/facebook/login/WebLoginMethodHandler.java similarity index 99% rename from facebook/src/main/java/com/facebook/login/WebLoginMethodHandler.java rename to facebook-common/src/main/java/com/facebook/login/WebLoginMethodHandler.java index 1aa098c765..00567aa156 100644 --- a/facebook/src/main/java/com/facebook/login/WebLoginMethodHandler.java +++ b/facebook-common/src/main/java/com/facebook/login/WebLoginMethodHandler.java @@ -37,6 +37,7 @@ import com.facebook.appevents.AppEventsConstants; import com.facebook.internal.ServerProtocol; import com.facebook.internal.Utility; +import com.facebook.login.DefaultAudience; import java.util.Locale; diff --git a/facebook/src/main/java/com/facebook/login/WebViewLoginMethodHandler.java b/facebook-common/src/main/java/com/facebook/login/WebViewLoginMethodHandler.java similarity index 96% rename from facebook/src/main/java/com/facebook/login/WebViewLoginMethodHandler.java rename to facebook-common/src/main/java/com/facebook/login/WebViewLoginMethodHandler.java index e83ead459b..869f89ca3b 100644 --- a/facebook/src/main/java/com/facebook/login/WebViewLoginMethodHandler.java +++ b/facebook-common/src/main/java/com/facebook/login/WebViewLoginMethodHandler.java @@ -138,7 +138,12 @@ public WebDialog build() { ServerProtocol.DIALOG_PARAM_AUTH_TYPE, ServerProtocol.DIALOG_REREQUEST_AUTH_TYPE); - return new WebDialog(getContext(), OAUTH_DIALOG, parameters, getTheme(), getListener()); + return WebDialog.newInstance( + getContext(), + OAUTH_DIALOG, + parameters, + getTheme(), + getListener()); } } diff --git a/facebook/src/main/java/com/facebook/share/ShareBuilder.java b/facebook-common/src/main/java/com/facebook/share/ShareBuilder.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/ShareBuilder.java rename to facebook-common/src/main/java/com/facebook/share/ShareBuilder.java diff --git a/facebook/src/main/java/com/facebook/share/Sharer.java b/facebook-common/src/main/java/com/facebook/share/Sharer.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/Sharer.java rename to facebook-common/src/main/java/com/facebook/share/Sharer.java diff --git a/facebook/src/main/java/com/facebook/internal/PermissionType.java b/facebook-common/src/main/java/com/facebook/share/internal/CameraEffectFeature.java similarity index 54% rename from facebook/src/main/java/com/facebook/internal/PermissionType.java rename to facebook-common/src/main/java/com/facebook/share/internal/CameraEffectFeature.java index 0bf617f6cc..a19b8a3b74 100644 --- a/facebook/src/main/java/com/facebook/internal/PermissionType.java +++ b/facebook-common/src/main/java/com/facebook/share/internal/CameraEffectFeature.java @@ -18,14 +18,38 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.facebook.internal; +package com.facebook.share.internal; + +import com.facebook.internal.DialogFeature; +import com.facebook.internal.NativeProtocol; /** - * com.facebook.internal is solely for the use of other packages within the Facebook SDK for - * Android. Use of any of the classes in this package is unsupported, and they may be modified or - * removed without warning at any time. + * com.facebook.share.internal is solely for the use of other packages within the + * Facebook SDK for Android. Use of any of the classes in this package is + * unsupported, and they may be modified or removed without warning at any time. */ -public enum PermissionType { - READ, - PUBLISH +public enum CameraEffectFeature implements DialogFeature { + SHARE_CAMERA_EFFECT(NativeProtocol.PROTOCOL_VERSION_20170417); + + private int minVersion; + + CameraEffectFeature(int minVersion) { + this.minVersion = minVersion; + } + + /** + * This method is for internal use only. + */ + @Override + public String getAction() { + return NativeProtocol.ACTION_CAMERA_EFFECT; + } + + /** + * This method is for internal use only. + */ + @Override + public int getMinVersion() { + return minVersion; + } } diff --git a/facebook-common/src/main/java/com/facebook/share/internal/CameraEffectJSONUtility.java b/facebook-common/src/main/java/com/facebook/share/internal/CameraEffectJSONUtility.java new file mode 100644 index 0000000000..26d32e753a --- /dev/null +++ b/facebook-common/src/main/java/com/facebook/share/internal/CameraEffectJSONUtility.java @@ -0,0 +1,147 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +package com.facebook.share.internal; + +import com.facebook.share.model.CameraEffectArguments; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +/** + * com.facebook.share.internal is solely for the use of other packages within the + * Facebook SDK for Android. Use of any of the classes in this package is + * unsupported, and they may be modified or removed without warning at any time. + * + * Utility methods for JSON representation of Open Graph models. + */ +public class CameraEffectJSONUtility { + private static final Map, CameraEffectJSONUtility.Setter> SETTERS = new HashMap<>(); + + static { + SETTERS.put(String.class, new CameraEffectJSONUtility.Setter() { + @Override + public void setOnArgumentsBuilder( + CameraEffectArguments.Builder builder, + String key, + Object value) + throws JSONException { + builder.putArgument(key, (String) value); + } + + @Override + public void setOnJSON(JSONObject json, String key, Object value) throws JSONException { + json.put(key, value); + } + }); + SETTERS.put(String[].class, new CameraEffectJSONUtility.Setter() { + @Override + public void setOnArgumentsBuilder( + CameraEffectArguments.Builder builder, + String key, + Object value) + throws JSONException { + throw new IllegalArgumentException("Unexpected type from JSON"); + } + + @Override + public void setOnJSON(JSONObject json, String key, Object value) throws JSONException { + JSONArray jsonArray = new JSONArray(); + for (String stringValue : (String[]) value) { + jsonArray.put(stringValue); + } + json.put(key, jsonArray); + } + }); + + SETTERS.put(JSONArray.class, new CameraEffectJSONUtility.Setter() { + @Override + public void setOnArgumentsBuilder( + CameraEffectArguments.Builder builder, + String key, + Object value) + throws JSONException { + // Only strings are supported for now + JSONArray jsonArray = (JSONArray) value; + String[] argsArray = new String[jsonArray.length()]; + for (int i = 0; i < jsonArray.length(); i++) { + Object current = jsonArray.get(i); + if (current instanceof String) { + argsArray[i] = (String) current; + } else { + throw new IllegalArgumentException( + "Unexpected type in an array: " + current.getClass()); + } + } + builder.putArgument(key, argsArray); + } + + @Override + public void setOnJSON(JSONObject json, String key, Object value) throws JSONException { + throw new IllegalArgumentException("JSONArray's are not supported in bundles."); + } + }); + } + + public interface Setter { + void setOnArgumentsBuilder(CameraEffectArguments.Builder builder, String key, Object value) + throws JSONException; + void setOnJSON(JSONObject json, String key, Object value) + throws JSONException; + } + + public static JSONObject convertToJSON(CameraEffectArguments arguments) + throws JSONException { + if (arguments == null) { + return null; + } + + JSONObject json = new JSONObject(); + + for (String key : arguments.keySet()) { + Object value = arguments.get(key); + if (value == null) { + // Null is not supported. + continue; + } + + CameraEffectJSONUtility.Setter setter = SETTERS.get(value.getClass()); + if (setter == null) { + throw new IllegalArgumentException("Unsupported type: " + value.getClass()); + } + setter.setOnJSON(json, key, value); + } + + return json; + } + + public static CameraEffectArguments convertToCameraEffectArguments(JSONObject jsonObject) + throws JSONException { + if (jsonObject == null) { + return null; + } + + CameraEffectArguments.Builder builder = new CameraEffectArguments.Builder(); + Iterator jsonIterator = jsonObject.keys(); + while (jsonIterator.hasNext()) { + String key = jsonIterator.next(); + Object value = jsonObject.get(key); + if (value == null || value == JSONObject.NULL) { + // Null is not supported. + continue; + } + + CameraEffectJSONUtility.Setter setter = SETTERS.get(value.getClass()); + if (setter == null) { + throw new IllegalArgumentException("Unsupported type: " + value.getClass()); + } + setter.setOnArgumentsBuilder(builder, key, value); + } + + return builder.build(); + } +} diff --git a/facebook/src/main/java/com/facebook/share/internal/DeviceShareDialogFragment.java b/facebook-common/src/main/java/com/facebook/share/internal/DeviceShareDialogFragment.java similarity index 99% rename from facebook/src/main/java/com/facebook/share/internal/DeviceShareDialogFragment.java rename to facebook-common/src/main/java/com/facebook/share/internal/DeviceShareDialogFragment.java index 9a974f2fc7..195de42b48 100644 --- a/facebook/src/main/java/com/facebook/share/internal/DeviceShareDialogFragment.java +++ b/facebook-common/src/main/java/com/facebook/share/internal/DeviceShareDialogFragment.java @@ -42,7 +42,7 @@ import com.facebook.GraphRequest; import com.facebook.GraphResponse; import com.facebook.HttpMethod; -import com.facebook.R; +import com.facebook.common.R; import com.facebook.devicerequests.internal.DeviceRequestsHelper; import com.facebook.internal.Validate; import com.facebook.share.model.ShareContent; diff --git a/facebook/src/main/java/com/facebook/share/internal/LegacyNativeDialogParameters.java b/facebook-common/src/main/java/com/facebook/share/internal/LegacyNativeDialogParameters.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/LegacyNativeDialogParameters.java rename to facebook-common/src/main/java/com/facebook/share/internal/LegacyNativeDialogParameters.java diff --git a/facebook/src/main/java/com/facebook/share/internal/LikeActionController.java b/facebook-common/src/main/java/com/facebook/share/internal/LikeActionController.java similarity index 99% rename from facebook/src/main/java/com/facebook/share/internal/LikeActionController.java rename to facebook-common/src/main/java/com/facebook/share/internal/LikeActionController.java index 3f0c8fd27f..b0ba9f9008 100644 --- a/facebook/src/main/java/com/facebook/share/internal/LikeActionController.java +++ b/facebook-common/src/main/java/com/facebook/share/internal/LikeActionController.java @@ -29,6 +29,16 @@ import android.util.Log; import com.facebook.*; +import com.facebook.AccessToken; +import com.facebook.FacebookException; +import com.facebook.FacebookOperationCanceledException; +import com.facebook.FacebookRequestError; +import com.facebook.FacebookSdk; +import com.facebook.GraphRequest; +import com.facebook.GraphRequestBatch; +import com.facebook.GraphResponse; +import com.facebook.HttpMethod; +import com.facebook.LoggingBehavior; import com.facebook.appevents.AppEventsLogger; import com.facebook.internal.AnalyticsEvents; import com.facebook.internal.AppCall; diff --git a/facebook/src/main/java/com/facebook/share/internal/LikeBoxCountView.java b/facebook-common/src/main/java/com/facebook/share/internal/LikeBoxCountView.java similarity index 99% rename from facebook/src/main/java/com/facebook/share/internal/LikeBoxCountView.java rename to facebook-common/src/main/java/com/facebook/share/internal/LikeBoxCountView.java index 23cf68ffe0..075fb6bf76 100644 --- a/facebook/src/main/java/com/facebook/share/internal/LikeBoxCountView.java +++ b/facebook-common/src/main/java/com/facebook/share/internal/LikeBoxCountView.java @@ -27,7 +27,7 @@ import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.TextView; -import com.facebook.R; +import com.facebook.common.R; /** * com.facebook.share.internal is solely for the use of other packages within the Facebook SDK for diff --git a/facebook/src/main/java/com/facebook/share/internal/LikeButton.java b/facebook-common/src/main/java/com/facebook/share/internal/LikeButton.java similarity index 99% rename from facebook/src/main/java/com/facebook/share/internal/LikeButton.java rename to facebook-common/src/main/java/com/facebook/share/internal/LikeButton.java index 3a4a0c5ca2..3be7415ce0 100644 --- a/facebook/src/main/java/com/facebook/share/internal/LikeButton.java +++ b/facebook-common/src/main/java/com/facebook/share/internal/LikeButton.java @@ -23,7 +23,7 @@ import android.content.Context; import android.util.AttributeSet; import com.facebook.FacebookButtonBase; -import com.facebook.R; +import com.facebook.common.R; import com.facebook.internal.AnalyticsEvents; /** diff --git a/facebook/src/main/java/com/facebook/share/internal/LikeContent.java b/facebook-common/src/main/java/com/facebook/share/internal/LikeContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/LikeContent.java rename to facebook-common/src/main/java/com/facebook/share/internal/LikeContent.java diff --git a/facebook/src/main/java/com/facebook/share/internal/LikeDialog.java b/facebook-common/src/main/java/com/facebook/share/internal/LikeDialog.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/LikeDialog.java rename to facebook-common/src/main/java/com/facebook/share/internal/LikeDialog.java diff --git a/facebook/src/main/java/com/facebook/share/internal/LikeDialogFeature.java b/facebook-common/src/main/java/com/facebook/share/internal/LikeDialogFeature.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/LikeDialogFeature.java rename to facebook-common/src/main/java/com/facebook/share/internal/LikeDialogFeature.java diff --git a/facebook/src/main/java/com/facebook/share/internal/LikeStatusClient.java b/facebook-common/src/main/java/com/facebook/share/internal/LikeStatusClient.java similarity index 97% rename from facebook/src/main/java/com/facebook/share/internal/LikeStatusClient.java rename to facebook-common/src/main/java/com/facebook/share/internal/LikeStatusClient.java index f890db8a5e..7ac26eb2b9 100644 --- a/facebook/src/main/java/com/facebook/share/internal/LikeStatusClient.java +++ b/facebook-common/src/main/java/com/facebook/share/internal/LikeStatusClient.java @@ -26,7 +26,6 @@ import com.facebook.internal.NativeProtocol; import com.facebook.internal.PlatformServiceClient; -import com.facebook.share.internal.ShareConstants; /** * com.facebook.share.internal is solely for the use of other packages within the Facebook SDK for diff --git a/facebook/src/main/java/com/facebook/share/internal/NativeDialogParameters.java b/facebook-common/src/main/java/com/facebook/share/internal/NativeDialogParameters.java similarity index 82% rename from facebook/src/main/java/com/facebook/share/internal/NativeDialogParameters.java rename to facebook-common/src/main/java/com/facebook/share/internal/NativeDialogParameters.java index 3d56d79c82..01514abadf 100644 --- a/facebook/src/main/java/com/facebook/share/internal/NativeDialogParameters.java +++ b/facebook-common/src/main/java/com/facebook/share/internal/NativeDialogParameters.java @@ -25,6 +25,7 @@ import com.facebook.FacebookException; import com.facebook.internal.Utility; import com.facebook.internal.Validate; +import com.facebook.share.model.ShareCameraEffectContent; import com.facebook.share.model.ShareContent; import com.facebook.share.model.ShareHashtag; import com.facebook.share.model.ShareLinkContent; @@ -90,11 +91,54 @@ public static Bundle create( callId); nativeParams = create(mediaContent, mediaInfos, shouldFailOnDataError); + } else if (shareContent instanceof ShareCameraEffectContent) { + final ShareCameraEffectContent cameraEffectContent = + (ShareCameraEffectContent) shareContent; + + // Put Bitmaps behind content uris. + Bundle attachmentUrlsBundle = ShareInternalUtility.getTextureUrlBundle( + cameraEffectContent, + callId); + + nativeParams = create(cameraEffectContent, attachmentUrlsBundle, shouldFailOnDataError); } return nativeParams; } + private static Bundle create( + ShareCameraEffectContent cameraEffectContent, + Bundle attachmentUrlsBundle, + boolean dataErrorsFatal) { + Bundle params = createBaseParameters(cameraEffectContent, dataErrorsFatal); + + Utility.putNonEmptyString( + params, + ShareConstants.EFFECT_ID, + cameraEffectContent.getEffectId()); + + if (attachmentUrlsBundle != null) { + params.putBundle(ShareConstants.EFFECT_TEXTURES, attachmentUrlsBundle); + } + + try { + JSONObject argsJSON = + CameraEffectJSONUtility.convertToJSON(cameraEffectContent.getArguments()); + if (argsJSON != null) { + Utility.putNonEmptyString( + params, + ShareConstants.EFFECT_ARGS, + argsJSON.toString()); + } + } catch (JSONException e) { + throw new FacebookException( + "Unable to create a JSON Object from the provided CameraEffectArguments: " + + e.getMessage()); + } + + return params; + } + private static Bundle create(ShareLinkContent linkContent, boolean dataErrorsFatal) { Bundle params = createBaseParameters(linkContent, dataErrorsFatal); diff --git a/facebook/src/main/java/com/facebook/share/internal/OpenGraphActionDialogFeature.java b/facebook-common/src/main/java/com/facebook/share/internal/OpenGraphActionDialogFeature.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/OpenGraphActionDialogFeature.java rename to facebook-common/src/main/java/com/facebook/share/internal/OpenGraphActionDialogFeature.java diff --git a/facebook/src/main/java/com/facebook/share/internal/OpenGraphJSONUtility.java b/facebook-common/src/main/java/com/facebook/share/internal/OpenGraphJSONUtility.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/OpenGraphJSONUtility.java rename to facebook-common/src/main/java/com/facebook/share/internal/OpenGraphJSONUtility.java diff --git a/facebook/src/main/java/com/facebook/share/internal/ResultProcessor.java b/facebook-common/src/main/java/com/facebook/share/internal/ResultProcessor.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/ResultProcessor.java rename to facebook-common/src/main/java/com/facebook/share/internal/ResultProcessor.java diff --git a/facebook/src/main/java/com/facebook/share/internal/ShareConstants.java b/facebook-common/src/main/java/com/facebook/share/internal/ShareConstants.java similarity index 97% rename from facebook/src/main/java/com/facebook/share/internal/ShareConstants.java rename to facebook-common/src/main/java/com/facebook/share/internal/ShareConstants.java index 550545b967..20f4119b5a 100644 --- a/facebook/src/main/java/com/facebook/share/internal/ShareConstants.java +++ b/facebook-common/src/main/java/com/facebook/share/internal/ShareConstants.java @@ -93,6 +93,11 @@ public class ShareConstants { public static final String MEDIA_TYPE = "type"; public static final String MEDIA_URI = "uri"; + // Camera-share args + public static final String EFFECT_ID = "effect_id"; + public static final String EFFECT_ARGS = "effect_arguments"; + public static final String EFFECT_TEXTURES = "effect_textures"; + // Extras supported for ACTION_OGACTIONPUBLISH_DIALOG: public static final String LEGACY_ACTION = "com.facebook.platform.extra.ACTION"; public static final String LEGACY_ACTION_TYPE = "com.facebook.platform.extra.ACTION_TYPE"; diff --git a/facebook/src/main/java/com/facebook/share/internal/ShareContentValidation.java b/facebook-common/src/main/java/com/facebook/share/internal/ShareContentValidation.java similarity index 95% rename from facebook/src/main/java/com/facebook/share/internal/ShareContentValidation.java rename to facebook-common/src/main/java/com/facebook/share/internal/ShareContentValidation.java index 728534c7e9..5a04fe5e5d 100644 --- a/facebook/src/main/java/com/facebook/share/internal/ShareContentValidation.java +++ b/facebook-common/src/main/java/com/facebook/share/internal/ShareContentValidation.java @@ -27,6 +27,7 @@ import com.facebook.FacebookSdk; import com.facebook.internal.Utility; import com.facebook.internal.Validate; +import com.facebook.share.model.ShareCameraEffectContent; import com.facebook.share.model.ShareContent; import com.facebook.share.model.ShareLinkContent; import com.facebook.share.model.ShareMedia; @@ -108,6 +109,8 @@ private static void validate(ShareContent content, Validator validator) validator.validate((ShareOpenGraphContent) content); } else if (content instanceof ShareMediaContent) { validator.validate((ShareMediaContent) content); + } else if (content instanceof ShareCameraEffectContent) { + validator.validate((ShareCameraEffectContent) content); } } @@ -232,6 +235,14 @@ public static void validateMedium(ShareMedia medium, Validator validator) { } } + private static void validateCameraEffectContent( + ShareCameraEffectContent cameraEffectContent, Validator validator) { + String effectId = cameraEffectContent.getEffectId(); + if (Utility.isNullOrEmpty(effectId)) { + throw new FacebookException("Must specify a non-empty effectId"); + } + } + private static void validateOpenGraphContent( ShareOpenGraphContent openGraphContent, Validator validator) { validator.validate(openGraphContent.getAction()); @@ -394,6 +405,10 @@ public void validate(final ShareMediaContent mediaContent) { validateMediaContent(mediaContent, this); } + public void validate(final ShareCameraEffectContent cameraEffectContent) { + validateCameraEffectContent(cameraEffectContent, this); + } + public void validate(final ShareOpenGraphContent openGraphContent) { isOpenGraphContent = true; validateOpenGraphContent(openGraphContent, this); diff --git a/facebook/src/main/java/com/facebook/share/internal/ShareDialogFeature.java b/facebook-common/src/main/java/com/facebook/share/internal/ShareDialogFeature.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/ShareDialogFeature.java rename to facebook-common/src/main/java/com/facebook/share/internal/ShareDialogFeature.java diff --git a/facebook/src/main/java/com/facebook/share/internal/ShareFeedContent.java b/facebook-common/src/main/java/com/facebook/share/internal/ShareFeedContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/ShareFeedContent.java rename to facebook-common/src/main/java/com/facebook/share/internal/ShareFeedContent.java diff --git a/facebook/src/main/java/com/facebook/share/internal/ShareInternalUtility.java b/facebook-common/src/main/java/com/facebook/share/internal/ShareInternalUtility.java similarity index 95% rename from facebook/src/main/java/com/facebook/share/internal/ShareInternalUtility.java rename to facebook-common/src/main/java/com/facebook/share/internal/ShareInternalUtility.java index 8203afd52a..edf96c202d 100644 --- a/facebook/src/main/java/com/facebook/share/internal/ShareInternalUtility.java +++ b/facebook-common/src/main/java/com/facebook/share/internal/ShareInternalUtility.java @@ -49,6 +49,8 @@ import com.facebook.internal.NativeProtocol; import com.facebook.internal.Utility; import com.facebook.share.Sharer; +import com.facebook.share.model.CameraEffectTextures; +import com.facebook.share.model.ShareCameraEffectContent; import com.facebook.share.model.ShareMedia; import com.facebook.share.model.ShareMediaContent; import com.facebook.share.model.ShareOpenGraphAction; @@ -345,6 +347,30 @@ public Bundle apply(ShareMedia item) { return mediaInfos; } + public static Bundle getTextureUrlBundle( + final ShareCameraEffectContent cameraEffectContent, + final UUID appCallId) { + CameraEffectTextures textures; + if (cameraEffectContent == null || (textures = cameraEffectContent.getTextures()) == null) { + return null; + } + + Bundle attachmentUrlsBundle = new Bundle(); + List attachments = new ArrayList<>(); + for (String key : textures.keySet()) { + NativeAppCallAttachmentStore.Attachment attachment = getAttachment( + appCallId, + textures.getTextureUri(key), + textures.getTextureBitmap(key)); + attachments.add(attachment); + attachmentUrlsBundle.putString(key, attachment.getAttachmentUrl()); + } + + NativeAppCallAttachmentStore.addAttachments(attachments); + + return attachmentUrlsBundle; + } + public static JSONObject toJSONObjectForCall( final UUID callId, final ShareOpenGraphContent content) @@ -530,6 +556,13 @@ private static NativeAppCallAttachmentStore.Attachment getAttachment( uri = video.getLocalUrl(); } + return getAttachment(callId, uri, bitmap); + } + + private static NativeAppCallAttachmentStore.Attachment getAttachment( + UUID callId, + Uri uri, + Bitmap bitmap) { NativeAppCallAttachmentStore.Attachment attachment = null; if (bitmap != null) { attachment = NativeAppCallAttachmentStore.createAttachment( diff --git a/facebook/src/main/java/com/facebook/share/internal/WebDialogParameters.java b/facebook-common/src/main/java/com/facebook/share/internal/WebDialogParameters.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/WebDialogParameters.java rename to facebook-common/src/main/java/com/facebook/share/internal/WebDialogParameters.java diff --git a/facebook/src/main/java/com/facebook/share/model/AppGroupCreationContent.java b/facebook-common/src/main/java/com/facebook/share/model/AppGroupCreationContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/AppGroupCreationContent.java rename to facebook-common/src/main/java/com/facebook/share/model/AppGroupCreationContent.java diff --git a/facebook-common/src/main/java/com/facebook/share/model/CameraEffectArguments.java b/facebook-common/src/main/java/com/facebook/share/model/CameraEffectArguments.java new file mode 100644 index 0000000000..d0af04d941 --- /dev/null +++ b/facebook-common/src/main/java/com/facebook/share/model/CameraEffectArguments.java @@ -0,0 +1,187 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, + * copy, modify, and distribute this software in source code or binary form for use + * in connection with the web services and APIs provided by Facebook. + * + * As with any software that integrates with the Facebook platform, your use of + * this software is subject to the Facebook Developer Principles and Policies + * [http://developers.facebook.com/policy/]. This copyright notice shall be + * included in all copies or substantial portions of the software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.facebook.share.model; + +import android.os.Bundle; +import android.os.Parcel; +import android.support.annotation.Nullable; + +import java.util.Set; + +/** + * NOTE: This API is in a closed beta and not available for general consumption. To apply for access + * to the beta, please visit https://developers.facebook.com/products/camera-effects/ar-studio/. + * Usage of this API without admission to the beta is unsupported and WILL result in errors for + * users of your application. + * + * This class represents a set of Arguments that are used to configure an Effect in the Camera. + */ +public class CameraEffectArguments implements ShareModel { + + private final Bundle params; + + private CameraEffectArguments(final Builder builder) { + params = builder.params; + } + + CameraEffectArguments(final Parcel in) { + params = in.readBundle(getClass().getClassLoader()); + } + + /** + * Returns the value of a String argument associated with the passed in key. If the key does + * not exist, or if it points to an object that is not a String, null will be returned. + * + * @param key Key for the value desired. + * @return The String associated with the passed in key, or null if the key does not exist or if + * the value is not a String. + */ + @Nullable + public String getString(final String key) { + return params.getString(key); + } + + @Nullable + /** + * Returns the value of a String[] argument associated with the passed in key. If the key does + * not exist, or if it points to an object that is not a String[], null will be returned. + * + * @param key Key for the value desired. + * @return The String[] associated with the passed in key, or null if the key does not exist or + * if the value is not a String[]. + */ + public String[] getStringArray(final String key) { + return params.getStringArray(key); + } + + @Nullable + /** + * Returns the value of the argument associated with the passed in key. If the key does not + * exist, null will be returned + * + * @param key Key for the value desired. + * @return The value associated with the passed in key, or null if the key does not exist. + */ + public Object get(final String key) { + return this.params.get(key); + } + + /** + * The set of keys that have been set in this instance of CameraEffectArguments + * @return The set of keys that have been set in this instance of CameraEffectArguments + */ + public Set keySet() { + return this.params.keySet(); + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(final Parcel out, final int flags) { + out.writeBundle(params); + } + + public static final Creator CREATOR = + new Creator() { + public CameraEffectArguments createFromParcel(final Parcel in) { + return new CameraEffectArguments(in); + } + + public CameraEffectArguments[] newArray(final int size) { + return new CameraEffectArguments[size]; + } + }; + + /** + * NOTE: This API is in a closed beta and not available for general consumption. To apply + * for access to the beta, please visit: + * https://developers.facebook.com/products/camera-effects/ar-studio/. + * Usage of this API without admission to the beta is unsupported and WILL result in errors + * for users of your application. + * + * Builder for the {@link com.facebook.share.model.CameraEffectArguments} class. + */ + public static class Builder + implements ShareModelBuilder { + + private Bundle params = new Bundle(); + + /** + * Sets the passed in value for the passed in key. This will override any previous calls + * with the same key. + * + * @param key Key for the argument + * @param value Value of the argument + * @return This Builder instance + */ + public Builder putArgument(final String key, final String value) { + params.putString(key, value); + return this; + } + + /** + * Sets the passed in value for the passed in key. This will override any previous calls + * with the same key. + * + * @param key Key for the argument + * @param arrayValue Value of the argument + * @return This Builder instance + */ + public Builder putArgument(final String key, final String[] arrayValue) { + params.putStringArray(key, arrayValue); + return this; + } + + @Override + public Builder readFrom(final CameraEffectArguments model) { + if (model != null) { + this.params.putAll(model.params); + } + return this; + } + + public Builder readFrom(final Parcel parcel) { + return this.readFrom( + (CameraEffectArguments) parcel.readParcelable( + CameraEffectArguments.class.getClassLoader())); + } + + /** + * NOTE: This API is in a closed beta and not available for general consumption. To apply + * for access to the beta, please visit: + * https://developers.facebook.com/products/camera-effects/ar-studio/. + * Usage of this API without admission to the beta is unsupported and WILL result in errors + * for users of your application. + * + * Creates a new instance of CameraEffectArguments with the arguments that have been set + * in this Builder instance. + * + * @return A new instance of CameraEffectArguments. + */ + @Override + public CameraEffectArguments build() { + return new CameraEffectArguments(this); + } + } +} diff --git a/facebook-common/src/main/java/com/facebook/share/model/CameraEffectTextures.java b/facebook-common/src/main/java/com/facebook/share/model/CameraEffectTextures.java new file mode 100644 index 0000000000..753689684e --- /dev/null +++ b/facebook-common/src/main/java/com/facebook/share/model/CameraEffectTextures.java @@ -0,0 +1,158 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, + * copy, modify, and distribute this software in source code or binary form for use + * in connection with the web services and APIs provided by Facebook. + * + * As with any software that integrates with the Facebook platform, your use of + * this software is subject to the Facebook Developer Principles and Policies + * [http://developers.facebook.com/policy/]. This copyright notice shall be + * included in all copies or substantial portions of the software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.facebook.share.model; + +import android.graphics.Bitmap; +import android.net.Uri; +import android.os.Bundle; +import android.os.Parcel; +import android.os.Parcelable; +import android.support.annotation.Nullable; + +import com.facebook.internal.Utility; + +import java.util.Set; + +/** + * NOTE: This API is in a closed beta and not available for general consumption. To apply + * for access to the beta, please visit: + * https://developers.facebook.com/products/camera-effects/ar-studio/. + * Usage of this API without admission to the beta is unsupported and WILL result in errors + * for users of your application. + * + * This class represents the textures that are used by an Effect in the Camera. + */ +public class CameraEffectTextures implements ShareModel { + + private final Bundle textures; + + private CameraEffectTextures(final Builder builder) { + textures = builder.textures; + } + + CameraEffectTextures(final Parcel in) { + textures = in.readBundle(getClass().getClassLoader()); + } + + @Nullable + public Bitmap getTextureBitmap(final String key) { + Object value = this.textures.get(key); + if (value instanceof Bitmap) { + return (Bitmap) value; + } + return null; + } + + @Nullable + public Uri getTextureUri(final String key) { + Object value = this.textures.get(key); + if (value instanceof Uri) { + return (Uri) value; + } + return null; + } + + @Nullable + public Object get(final String key) { + return this.textures.get(key); + } + + public Set keySet() { + return this.textures.keySet(); + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(final Parcel out, final int flags) { + out.writeBundle(textures); + } + + public static final Creator CREATOR = + new Creator() { + public CameraEffectTextures createFromParcel(final Parcel in) { + return new CameraEffectTextures(in); + } + + public CameraEffectTextures[] newArray(final int size) { + return new CameraEffectTextures[size]; + } + }; + + /** + * NOTE: This API is in a closed beta and not available for general consumption. To apply + * for access to the beta, please visit: + * https://developers.facebook.com/products/camera-effects/ar-studio/. + * Usage of this API without admission to the beta is unsupported and WILL result in errors + * for users of your application. + * + * Builder for the {@link com.facebook.share.model.CameraEffectTextures} class. + */ + public static class Builder + implements ShareModelBuilder { + + private Bundle textures = new Bundle(); + + public Builder putTexture(final String key, Bitmap texture) { + return putParcelableTexture(key, texture); + } + + public Builder putTexture(final String key, Uri textureUrl) { + return putParcelableTexture(key, textureUrl); + } + + private Builder putParcelableTexture(final String key, final Parcelable parcelableTexture) { + if (!Utility.isNullOrEmpty(key) && parcelableTexture != null) { + textures.putParcelable(key, parcelableTexture); + } + return this; + } + + @Override + public Builder readFrom(final CameraEffectTextures model) { + if (model != null) { + this.textures.putAll(model.textures); + } + return this; + } + + public Builder readFrom(final Parcel parcel) { + return this.readFrom( + (CameraEffectTextures) parcel.readParcelable( + CameraEffectTextures.class.getClassLoader())); + } + + /** + * NOTE: This API is in a closed beta and not available for general consumption. To apply + * for access to the beta, please visit: + * https://developers.facebook.com/products/camera-effects/ar-studio/. + * Usage of this API without admission to the beta is unsupported and WILL result in errors + * for users of your application. + */ + @Override + public CameraEffectTextures build() { + return new CameraEffectTextures(this); + } + } +} diff --git a/facebook/src/main/java/com/facebook/share/model/GameRequestContent.java b/facebook-common/src/main/java/com/facebook/share/model/GameRequestContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/GameRequestContent.java rename to facebook-common/src/main/java/com/facebook/share/model/GameRequestContent.java diff --git a/facebook-common/src/main/java/com/facebook/share/model/ShareCameraEffectContent.java b/facebook-common/src/main/java/com/facebook/share/model/ShareCameraEffectContent.java new file mode 100644 index 0000000000..16ea83dc38 --- /dev/null +++ b/facebook-common/src/main/java/com/facebook/share/model/ShareCameraEffectContent.java @@ -0,0 +1,191 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, + * copy, modify, and distribute this software in source code or binary form for use + * in connection with the web services and APIs provided by Facebook. + * + * As with any software that integrates with the Facebook platform, your use of + * this software is subject to the Facebook Developer Principles and Policies + * [http://developers.facebook.com/policy/]. This copyright notice shall be + * included in all copies or substantial portions of the software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.facebook.share.model; + +import android.os.Parcel; + +/** + * NOTE: This API is in a closed beta and not available for general consumption. To apply + * for access to the beta, please visit: + * https://developers.facebook.com/products/camera-effects/ar-studio/. + * Usage of this API without admission to the beta is unsupported and WILL result in errors + * for users of your application. + * + * Describes the Camera Effect to be shared. + * + * Use {@link ShareCameraEffectContent.Builder} to build instances. + * + * See documentation for + * best practices. + */ +public class ShareCameraEffectContent + extends ShareContent { + + private String effectId; + private CameraEffectArguments arguments; + private CameraEffectTextures textures; + + private ShareCameraEffectContent(final Builder builder) { + super(builder); + + this.effectId = builder.effectId; + this.arguments = builder.arguments; + this.textures = builder.textures; + } + + ShareCameraEffectContent(final Parcel in) { + super(in); + + this.effectId = in.readString(); + this.arguments = new CameraEffectArguments.Builder().readFrom(in).build(); + this.textures = new CameraEffectTextures.Builder().readFrom(in).build(); + } + + @Override + public void writeToParcel(final Parcel out, final int flags) { + super.writeToParcel(out, flags); + + out.writeString(effectId); + out.writeParcelable(arguments, 0); + out.writeParcelable(textures, 0); + } + + /** + * Returns the Effect Id represented in this content instance, as set in the Builder. + * + * @return The Effect Id + */ + public String getEffectId() { + return this.effectId; + } + + /** + * Returns the Arguments for the Effect represented in this content instance, as set in the + * Builder. + * + * @return Effect Arguments + */ + public CameraEffectArguments getArguments() { + return this.arguments; + } + + /** + * Returns the Textures for the Effect represented in this content instance, as set in the + * Builder. + * + * @return Effect Textures + */ + public CameraEffectTextures getTextures() { + return this.textures; + } + + @SuppressWarnings("unused") + public static final Creator CREATOR = + new Creator() { + public ShareCameraEffectContent createFromParcel(final Parcel in) { + return new ShareCameraEffectContent(in); + } + + public ShareCameraEffectContent[] newArray(final int size) { + return new ShareCameraEffectContent[size]; + } + }; + + /** + * NOTE: This API is in a closed beta and not available for general consumption. To apply + * for access to the beta, please visit: + * https://developers.facebook.com/products/camera-effects/ar-studio/. + * Usage of this API without admission to the beta is unsupported and WILL result in errors + * for users of your application. + * + * Builder for the {@link ShareCameraEffectContent} interface. + */ + public static final class Builder + extends ShareContent.Builder { + + private String effectId; + private CameraEffectArguments arguments; + private CameraEffectTextures textures; + + /** + * Sets the Effect Id for the Effect represented by this content instance. This must be an + * Id of an effect that is published and approved. + * + * @param effectId Id of the Effect. + * @return This builder instance + */ + public Builder setEffectId(String effectId) { + this.effectId = effectId; + return this; + } + + /** + * Sets the Arguments for the Effect represented by this content instance. + * + * @param arguments Arguments for this Effect + * @return This builder instance + */ + public Builder setArguments(CameraEffectArguments arguments) { + this.arguments = arguments; + return this; + } + + /** + * Sets the Textures for the Effect represented by this content instance. + * + * @param textures Textures for this Effect + * @return This builder instance + */ + public Builder setTextures(CameraEffectTextures textures) { + this.textures = textures; + return this; + } + + /** + * NOTE: This API is in a closed beta and not available for general consumption. To apply + * for access to the beta, please visit: + * https://developers.facebook.com/products/camera-effects/ar-studio/. + * Usage of this API without admission to the beta is unsupported and WILL result in errors + * for users of your application. + * + * Creates a new instance of ShareCameraEffectContent with the properties as set on this + * Builder instance + * + * @return A new instance of ShareCameraEffectContent + */ + @Override + public ShareCameraEffectContent build() { + return new ShareCameraEffectContent(this); + } + + @Override + public ShareCameraEffectContent.Builder readFrom(final ShareCameraEffectContent model) { + if (model == null) { + return this; + } + + return super + .readFrom(model) + .setEffectId(effectId) + .setArguments(arguments); + } + } +} diff --git a/facebook/src/main/java/com/facebook/share/model/ShareContent.java b/facebook-common/src/main/java/com/facebook/share/model/ShareContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareContent.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareContent.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareHashtag.java b/facebook-common/src/main/java/com/facebook/share/model/ShareHashtag.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareHashtag.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareHashtag.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareLinkContent.java b/facebook-common/src/main/java/com/facebook/share/model/ShareLinkContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareLinkContent.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareLinkContent.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareMedia.java b/facebook-common/src/main/java/com/facebook/share/model/ShareMedia.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareMedia.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareMedia.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareMediaContent.java b/facebook-common/src/main/java/com/facebook/share/model/ShareMediaContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareMediaContent.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareMediaContent.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareModel.java b/facebook-common/src/main/java/com/facebook/share/model/ShareModel.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareModel.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareModel.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareModelBuilder.java b/facebook-common/src/main/java/com/facebook/share/model/ShareModelBuilder.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareModelBuilder.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareModelBuilder.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareOpenGraphAction.java b/facebook-common/src/main/java/com/facebook/share/model/ShareOpenGraphAction.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareOpenGraphAction.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareOpenGraphAction.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareOpenGraphContent.java b/facebook-common/src/main/java/com/facebook/share/model/ShareOpenGraphContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareOpenGraphContent.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareOpenGraphContent.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareOpenGraphObject.java b/facebook-common/src/main/java/com/facebook/share/model/ShareOpenGraphObject.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareOpenGraphObject.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareOpenGraphObject.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareOpenGraphValueContainer.java b/facebook-common/src/main/java/com/facebook/share/model/ShareOpenGraphValueContainer.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareOpenGraphValueContainer.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareOpenGraphValueContainer.java diff --git a/facebook/src/main/java/com/facebook/share/model/SharePhoto.java b/facebook-common/src/main/java/com/facebook/share/model/SharePhoto.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/SharePhoto.java rename to facebook-common/src/main/java/com/facebook/share/model/SharePhoto.java diff --git a/facebook/src/main/java/com/facebook/share/model/SharePhotoContent.java b/facebook-common/src/main/java/com/facebook/share/model/SharePhotoContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/SharePhotoContent.java rename to facebook-common/src/main/java/com/facebook/share/model/SharePhotoContent.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareVideo.java b/facebook-common/src/main/java/com/facebook/share/model/ShareVideo.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareVideo.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareVideo.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareVideoContent.java b/facebook-common/src/main/java/com/facebook/share/model/ShareVideoContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareVideoContent.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareVideoContent.java diff --git a/facebook/src/main/java/com/facebook/share/widget/LikeView.java b/facebook-common/src/main/java/com/facebook/share/widget/LikeView.java similarity index 99% rename from facebook/src/main/java/com/facebook/share/widget/LikeView.java rename to facebook-common/src/main/java/com/facebook/share/widget/LikeView.java index b23d39ebb3..eaf07ba569 100644 --- a/facebook/src/main/java/com/facebook/share/widget/LikeView.java +++ b/facebook-common/src/main/java/com/facebook/share/widget/LikeView.java @@ -40,8 +40,10 @@ import android.widget.TextView; import com.facebook.FacebookException; -import com.facebook.R; +import com.facebook.common.R; import com.facebook.internal.*; +import com.facebook.internal.AnalyticsEvents; +import com.facebook.internal.FragmentWrapper; import com.facebook.share.internal.LikeActionController; import com.facebook.share.internal.LikeBoxCountView; import com.facebook.share.internal.LikeButton; diff --git a/facebook/src/main/java/com/facebook/share/widget/ShareDialog.java b/facebook-common/src/main/java/com/facebook/share/widget/ShareDialog.java similarity index 91% rename from facebook/src/main/java/com/facebook/share/widget/ShareDialog.java rename to facebook-common/src/main/java/com/facebook/share/widget/ShareDialog.java index abe9f0baef..5b0c3773ca 100644 --- a/facebook/src/main/java/com/facebook/share/widget/ShareDialog.java +++ b/facebook-common/src/main/java/com/facebook/share/widget/ShareDialog.java @@ -41,6 +41,7 @@ import com.facebook.internal.NativeAppCallAttachmentStore; import com.facebook.internal.Utility; import com.facebook.share.Sharer; +import com.facebook.share.internal.CameraEffectFeature; import com.facebook.share.internal.LegacyNativeDialogParameters; import com.facebook.share.internal.NativeDialogParameters; import com.facebook.share.internal.OpenGraphActionDialogFeature; @@ -49,6 +50,7 @@ import com.facebook.share.internal.ShareFeedContent; import com.facebook.share.internal.ShareInternalUtility; import com.facebook.share.internal.WebDialogParameters; +import com.facebook.share.model.ShareCameraEffectContent; import com.facebook.share.model.ShareContent; import com.facebook.share.model.ShareLinkContent; import com.facebook.share.model.ShareMediaContent; @@ -308,6 +310,7 @@ protected List getOrderedModeHandlers() { handlers.add(new NativeHandler()); handlers.add(new FeedHandler()); // Feed takes precedence for link-shares for Mode.AUTOMATIC handlers.add(new WebShareHandler()); + handlers.add(new CameraEffectHandler()); return handlers; } @@ -320,7 +323,7 @@ public Object getMode() { @Override public boolean canShow(final ShareContent content, boolean isBestEffort) { - if (content == null) { + if (content == null || (content instanceof ShareCameraEffectContent)) { return false; } @@ -492,6 +495,51 @@ public AppCall createAppCall(final ShareContent content) { } } + private class CameraEffectHandler extends ModeHandler { + @Override + public Object getMode() { + return Mode.NATIVE; + } + + @Override + public boolean canShow(final ShareContent content, boolean isBestEffort) { + boolean canShowResult = (content instanceof ShareCameraEffectContent); + + return canShowResult && ShareDialog.canShowNative(content.getClass()); + } + + @Override + public AppCall createAppCall(final ShareContent content) { + ShareContentValidation.validateForNativeShare(content); + + final AppCall appCall = createBaseAppCall(); + final boolean shouldFailOnDataError = getShouldFailOnDataError(); + + DialogPresenter.setupAppCallForNativeDialog( + appCall, + new DialogPresenter.ParameterProvider() { + @Override + public Bundle getParameters() { + return NativeDialogParameters.create( + appCall.getCallId(), + content, + shouldFailOnDataError); + } + + @Override + public Bundle getLegacyParameters() { + return LegacyNativeDialogParameters.create( + appCall.getCallId(), + content, + shouldFailOnDataError); + } + }, + getFeature(content.getClass())); + + return appCall; + } + } + private static DialogFeature getFeature( Class contentType) { if (ShareLinkContent.class.isAssignableFrom(contentType)) { @@ -504,6 +552,8 @@ private static DialogFeature getFeature( return OpenGraphActionDialogFeature.OG_ACTION_DIALOG; } else if (ShareMediaContent.class.isAssignableFrom(contentType)) { return ShareDialogFeature.MULTIMEDIA; + } else if (ShareCameraEffectContent.class.isAssignableFrom(contentType)) { + return CameraEffectFeature.SHARE_CAMERA_EFFECT; } return null; } diff --git a/facebook/src/main/res/color/com_facebook_button_text_color.xml b/facebook-common/src/main/res/color/com_facebook_button_text_color.xml similarity index 100% rename from facebook/src/main/res/color/com_facebook_button_text_color.xml rename to facebook-common/src/main/res/color/com_facebook_button_text_color.xml diff --git a/facebook-common/src/main/res/drawable-hdpi/com_facebook_button_icon_blue.png b/facebook-common/src/main/res/drawable-hdpi/com_facebook_button_icon_blue.png new file mode 100644 index 0000000000..0b9da85985 Binary files /dev/null and b/facebook-common/src/main/res/drawable-hdpi/com_facebook_button_icon_blue.png differ diff --git a/facebook/src/main/res/drawable-hdpi/com_facebook_button_icon_white.png b/facebook-common/src/main/res/drawable-hdpi/com_facebook_button_icon_white.png similarity index 100% rename from facebook/src/main/res/drawable-hdpi/com_facebook_button_icon_white.png rename to facebook-common/src/main/res/drawable-hdpi/com_facebook_button_icon_white.png diff --git a/facebook-common/src/main/res/drawable-hdpi/com_facebook_button_like_icon_selected.png b/facebook-common/src/main/res/drawable-hdpi/com_facebook_button_like_icon_selected.png new file mode 100644 index 0000000000..32b581d833 Binary files /dev/null and b/facebook-common/src/main/res/drawable-hdpi/com_facebook_button_like_icon_selected.png differ diff --git a/facebook/src/main/res/drawable-hdpi/com_facebook_close.png b/facebook-common/src/main/res/drawable-hdpi/com_facebook_close.png similarity index 100% rename from facebook/src/main/res/drawable-hdpi/com_facebook_close.png rename to facebook-common/src/main/res/drawable-hdpi/com_facebook_close.png diff --git a/facebook-common/src/main/res/drawable-mdpi/com_facebook_button_icon_blue.png b/facebook-common/src/main/res/drawable-mdpi/com_facebook_button_icon_blue.png new file mode 100644 index 0000000000..2194532f9b Binary files /dev/null and b/facebook-common/src/main/res/drawable-mdpi/com_facebook_button_icon_blue.png differ diff --git a/facebook/src/main/res/drawable-mdpi/com_facebook_button_icon_white.png b/facebook-common/src/main/res/drawable-mdpi/com_facebook_button_icon_white.png similarity index 100% rename from facebook/src/main/res/drawable-mdpi/com_facebook_button_icon_white.png rename to facebook-common/src/main/res/drawable-mdpi/com_facebook_button_icon_white.png diff --git a/facebook/src/main/res/drawable-mdpi/com_facebook_button_like_icon_selected.png b/facebook-common/src/main/res/drawable-mdpi/com_facebook_button_like_icon_selected.png similarity index 100% rename from facebook/src/main/res/drawable-mdpi/com_facebook_button_like_icon_selected.png rename to facebook-common/src/main/res/drawable-mdpi/com_facebook_button_like_icon_selected.png diff --git a/facebook-common/src/main/res/drawable-mdpi/com_facebook_close.png b/facebook-common/src/main/res/drawable-mdpi/com_facebook_close.png new file mode 100755 index 0000000000..dce68511a4 Binary files /dev/null and b/facebook-common/src/main/res/drawable-mdpi/com_facebook_close.png differ diff --git a/facebook-common/src/main/res/drawable-xhdpi/com_facebook_button_icon_blue.png b/facebook-common/src/main/res/drawable-xhdpi/com_facebook_button_icon_blue.png new file mode 100644 index 0000000000..ff313d4c72 Binary files /dev/null and b/facebook-common/src/main/res/drawable-xhdpi/com_facebook_button_icon_blue.png differ diff --git a/facebook/src/main/res/drawable-xhdpi/com_facebook_button_icon_white.png b/facebook-common/src/main/res/drawable-xhdpi/com_facebook_button_icon_white.png similarity index 100% rename from facebook/src/main/res/drawable-xhdpi/com_facebook_button_icon_white.png rename to facebook-common/src/main/res/drawable-xhdpi/com_facebook_button_icon_white.png diff --git a/facebook-common/src/main/res/drawable-xhdpi/com_facebook_button_like_icon_selected.png b/facebook-common/src/main/res/drawable-xhdpi/com_facebook_button_like_icon_selected.png new file mode 100644 index 0000000000..225ddf873a Binary files /dev/null and b/facebook-common/src/main/res/drawable-xhdpi/com_facebook_button_like_icon_selected.png differ diff --git a/facebook/src/main/res/drawable-xhdpi/com_facebook_close.png b/facebook-common/src/main/res/drawable-xhdpi/com_facebook_close.png similarity index 100% rename from facebook/src/main/res/drawable-xhdpi/com_facebook_close.png rename to facebook-common/src/main/res/drawable-xhdpi/com_facebook_close.png diff --git a/facebook-common/src/main/res/drawable-xxhdpi/com_facebook_button_icon_blue.png b/facebook-common/src/main/res/drawable-xxhdpi/com_facebook_button_icon_blue.png new file mode 100644 index 0000000000..35b63356e9 Binary files /dev/null and b/facebook-common/src/main/res/drawable-xxhdpi/com_facebook_button_icon_blue.png differ diff --git a/facebook/src/main/res/drawable-xxhdpi/com_facebook_button_icon_white.png b/facebook-common/src/main/res/drawable-xxhdpi/com_facebook_button_icon_white.png similarity index 100% rename from facebook/src/main/res/drawable-xxhdpi/com_facebook_button_icon_white.png rename to facebook-common/src/main/res/drawable-xxhdpi/com_facebook_button_icon_white.png diff --git a/facebook-common/src/main/res/drawable-xxhdpi/com_facebook_button_like_icon_selected.png b/facebook-common/src/main/res/drawable-xxhdpi/com_facebook_button_like_icon_selected.png new file mode 100644 index 0000000000..617169c758 Binary files /dev/null and b/facebook-common/src/main/res/drawable-xxhdpi/com_facebook_button_like_icon_selected.png differ diff --git a/facebook/src/main/res/drawable/com_facebook_auth_dialog_background.xml b/facebook-common/src/main/res/drawable/com_facebook_auth_dialog_background.xml similarity index 100% rename from facebook/src/main/res/drawable/com_facebook_auth_dialog_background.xml rename to facebook-common/src/main/res/drawable/com_facebook_auth_dialog_background.xml diff --git a/facebook/src/main/res/drawable/com_facebook_auth_dialog_cancel_background.xml b/facebook-common/src/main/res/drawable/com_facebook_auth_dialog_cancel_background.xml similarity index 100% rename from facebook/src/main/res/drawable/com_facebook_auth_dialog_cancel_background.xml rename to facebook-common/src/main/res/drawable/com_facebook_auth_dialog_cancel_background.xml diff --git a/facebook/src/main/res/drawable/com_facebook_auth_dialog_header_background.xml b/facebook-common/src/main/res/drawable/com_facebook_auth_dialog_header_background.xml similarity index 100% rename from facebook/src/main/res/drawable/com_facebook_auth_dialog_header_background.xml rename to facebook-common/src/main/res/drawable/com_facebook_auth_dialog_header_background.xml diff --git a/facebook/src/main/res/drawable/com_facebook_button_background.xml b/facebook-common/src/main/res/drawable/com_facebook_button_background.xml similarity index 100% rename from facebook/src/main/res/drawable/com_facebook_button_background.xml rename to facebook-common/src/main/res/drawable/com_facebook_button_background.xml diff --git a/facebook/src/main/res/drawable/com_facebook_button_icon.xml b/facebook-common/src/main/res/drawable/com_facebook_button_icon.xml similarity index 100% rename from facebook/src/main/res/drawable/com_facebook_button_icon.xml rename to facebook-common/src/main/res/drawable/com_facebook_button_icon.xml diff --git a/facebook/src/main/res/drawable/com_facebook_button_like_background.xml b/facebook-common/src/main/res/drawable/com_facebook_button_like_background.xml similarity index 100% rename from facebook/src/main/res/drawable/com_facebook_button_like_background.xml rename to facebook-common/src/main/res/drawable/com_facebook_button_like_background.xml diff --git a/facebook/src/main/res/drawable/com_facebook_favicon_blue.xml b/facebook-common/src/main/res/drawable/com_facebook_favicon_blue.xml similarity index 100% rename from facebook/src/main/res/drawable/com_facebook_favicon_blue.xml rename to facebook-common/src/main/res/drawable/com_facebook_favicon_blue.xml diff --git a/facebook/src/main/res/layout/com_facebook_activity_layout.xml b/facebook-common/src/main/res/layout/com_facebook_activity_layout.xml similarity index 100% rename from facebook/src/main/res/layout/com_facebook_activity_layout.xml rename to facebook-common/src/main/res/layout/com_facebook_activity_layout.xml diff --git a/facebook/src/main/res/layout/com_facebook_device_auth_dialog_fragment.xml b/facebook-common/src/main/res/layout/com_facebook_device_auth_dialog_fragment.xml similarity index 100% rename from facebook/src/main/res/layout/com_facebook_device_auth_dialog_fragment.xml rename to facebook-common/src/main/res/layout/com_facebook_device_auth_dialog_fragment.xml diff --git a/facebook/src/main/res/layout/com_facebook_login_fragment.xml b/facebook-common/src/main/res/layout/com_facebook_login_fragment.xml similarity index 100% rename from facebook/src/main/res/layout/com_facebook_login_fragment.xml rename to facebook-common/src/main/res/layout/com_facebook_login_fragment.xml diff --git a/facebook/src/main/res/layout/com_facebook_smart_device_dialog_fragment.xml b/facebook-common/src/main/res/layout/com_facebook_smart_device_dialog_fragment.xml similarity index 100% rename from facebook/src/main/res/layout/com_facebook_smart_device_dialog_fragment.xml rename to facebook-common/src/main/res/layout/com_facebook_smart_device_dialog_fragment.xml diff --git a/facebook/src/main/res/values-af/strings.xml b/facebook-common/src/main/res/values-af/strings.xml similarity index 100% rename from facebook/src/main/res/values-af/strings.xml rename to facebook-common/src/main/res/values-af/strings.xml diff --git a/facebook/src/main/res/values-ar/strings.xml b/facebook-common/src/main/res/values-ar/strings.xml similarity index 100% rename from facebook/src/main/res/values-ar/strings.xml rename to facebook-common/src/main/res/values-ar/strings.xml diff --git a/facebook/src/main/res/values-bn/strings.xml b/facebook-common/src/main/res/values-bn/strings.xml similarity index 100% rename from facebook/src/main/res/values-bn/strings.xml rename to facebook-common/src/main/res/values-bn/strings.xml diff --git a/facebook/src/main/res/values-cs/strings.xml b/facebook-common/src/main/res/values-cs/strings.xml similarity index 100% rename from facebook/src/main/res/values-cs/strings.xml rename to facebook-common/src/main/res/values-cs/strings.xml diff --git a/facebook/src/main/res/values-da/strings.xml b/facebook-common/src/main/res/values-da/strings.xml similarity index 100% rename from facebook/src/main/res/values-da/strings.xml rename to facebook-common/src/main/res/values-da/strings.xml diff --git a/facebook/src/main/res/values-de/strings.xml b/facebook-common/src/main/res/values-de/strings.xml similarity index 100% rename from facebook/src/main/res/values-de/strings.xml rename to facebook-common/src/main/res/values-de/strings.xml diff --git a/facebook/src/main/res/values-el/strings.xml b/facebook-common/src/main/res/values-el/strings.xml similarity index 100% rename from facebook/src/main/res/values-el/strings.xml rename to facebook-common/src/main/res/values-el/strings.xml diff --git a/facebook/src/main/res/values-en-rGB/strings.xml b/facebook-common/src/main/res/values-en-rGB/strings.xml similarity index 100% rename from facebook/src/main/res/values-en-rGB/strings.xml rename to facebook-common/src/main/res/values-en-rGB/strings.xml diff --git a/facebook/src/main/res/values-es-rES/strings.xml b/facebook-common/src/main/res/values-es-rES/strings.xml similarity index 100% rename from facebook/src/main/res/values-es-rES/strings.xml rename to facebook-common/src/main/res/values-es-rES/strings.xml diff --git a/facebook/src/main/res/values-es/strings.xml b/facebook-common/src/main/res/values-es/strings.xml similarity index 100% rename from facebook/src/main/res/values-es/strings.xml rename to facebook-common/src/main/res/values-es/strings.xml diff --git a/facebook/src/main/res/values-fi/strings.xml b/facebook-common/src/main/res/values-fi/strings.xml similarity index 100% rename from facebook/src/main/res/values-fi/strings.xml rename to facebook-common/src/main/res/values-fi/strings.xml diff --git a/facebook/src/main/res/values-fr/strings.xml b/facebook-common/src/main/res/values-fr/strings.xml similarity index 100% rename from facebook/src/main/res/values-fr/strings.xml rename to facebook-common/src/main/res/values-fr/strings.xml diff --git a/facebook/src/main/res/values-gu/strings.xml b/facebook-common/src/main/res/values-gu/strings.xml similarity index 100% rename from facebook/src/main/res/values-gu/strings.xml rename to facebook-common/src/main/res/values-gu/strings.xml diff --git a/facebook/src/main/res/values-hi/strings.xml b/facebook-common/src/main/res/values-hi/strings.xml similarity index 100% rename from facebook/src/main/res/values-hi/strings.xml rename to facebook-common/src/main/res/values-hi/strings.xml diff --git a/facebook/src/main/res/values-hr/strings.xml b/facebook-common/src/main/res/values-hr/strings.xml similarity index 100% rename from facebook/src/main/res/values-hr/strings.xml rename to facebook-common/src/main/res/values-hr/strings.xml diff --git a/facebook/src/main/res/values-hu/strings.xml b/facebook-common/src/main/res/values-hu/strings.xml similarity index 100% rename from facebook/src/main/res/values-hu/strings.xml rename to facebook-common/src/main/res/values-hu/strings.xml diff --git a/facebook/src/main/res/values-id/strings.xml b/facebook-common/src/main/res/values-id/strings.xml similarity index 100% rename from facebook/src/main/res/values-id/strings.xml rename to facebook-common/src/main/res/values-id/strings.xml diff --git a/facebook/src/main/res/values-in/strings.xml b/facebook-common/src/main/res/values-in/strings.xml similarity index 100% rename from facebook/src/main/res/values-in/strings.xml rename to facebook-common/src/main/res/values-in/strings.xml diff --git a/facebook/src/main/res/values-it/strings.xml b/facebook-common/src/main/res/values-it/strings.xml similarity index 100% rename from facebook/src/main/res/values-it/strings.xml rename to facebook-common/src/main/res/values-it/strings.xml diff --git a/facebook/src/main/res/values-iw/strings.xml b/facebook-common/src/main/res/values-iw/strings.xml similarity index 100% rename from facebook/src/main/res/values-iw/strings.xml rename to facebook-common/src/main/res/values-iw/strings.xml diff --git a/facebook/src/main/res/values-ja/strings.xml b/facebook-common/src/main/res/values-ja/strings.xml similarity index 100% rename from facebook/src/main/res/values-ja/strings.xml rename to facebook-common/src/main/res/values-ja/strings.xml diff --git a/facebook/src/main/res/values-kn/strings.xml b/facebook-common/src/main/res/values-kn/strings.xml similarity index 100% rename from facebook/src/main/res/values-kn/strings.xml rename to facebook-common/src/main/res/values-kn/strings.xml diff --git a/facebook/src/main/res/values-ko/strings.xml b/facebook-common/src/main/res/values-ko/strings.xml similarity index 100% rename from facebook/src/main/res/values-ko/strings.xml rename to facebook-common/src/main/res/values-ko/strings.xml diff --git a/facebook/src/main/res/values-ml/strings.xml b/facebook-common/src/main/res/values-ml/strings.xml similarity index 100% rename from facebook/src/main/res/values-ml/strings.xml rename to facebook-common/src/main/res/values-ml/strings.xml diff --git a/facebook/src/main/res/values-mr/strings.xml b/facebook-common/src/main/res/values-mr/strings.xml similarity index 100% rename from facebook/src/main/res/values-mr/strings.xml rename to facebook-common/src/main/res/values-mr/strings.xml diff --git a/facebook/src/main/res/values-ms/strings.xml b/facebook-common/src/main/res/values-ms/strings.xml similarity index 100% rename from facebook/src/main/res/values-ms/strings.xml rename to facebook-common/src/main/res/values-ms/strings.xml diff --git a/facebook/src/main/res/values-nb/strings.xml b/facebook-common/src/main/res/values-nb/strings.xml similarity index 100% rename from facebook/src/main/res/values-nb/strings.xml rename to facebook-common/src/main/res/values-nb/strings.xml diff --git a/facebook/src/main/res/values-nl/strings.xml b/facebook-common/src/main/res/values-nl/strings.xml similarity index 100% rename from facebook/src/main/res/values-nl/strings.xml rename to facebook-common/src/main/res/values-nl/strings.xml diff --git a/facebook/src/main/res/values-pa/strings.xml b/facebook-common/src/main/res/values-pa/strings.xml similarity index 100% rename from facebook/src/main/res/values-pa/strings.xml rename to facebook-common/src/main/res/values-pa/strings.xml diff --git a/facebook/src/main/res/values-pl/strings.xml b/facebook-common/src/main/res/values-pl/strings.xml similarity index 100% rename from facebook/src/main/res/values-pl/strings.xml rename to facebook-common/src/main/res/values-pl/strings.xml diff --git a/facebook/src/main/res/values-pt-rPT/strings.xml b/facebook-common/src/main/res/values-pt-rPT/strings.xml similarity index 100% rename from facebook/src/main/res/values-pt-rPT/strings.xml rename to facebook-common/src/main/res/values-pt-rPT/strings.xml diff --git a/facebook/src/main/res/values-pt/strings.xml b/facebook-common/src/main/res/values-pt/strings.xml similarity index 100% rename from facebook/src/main/res/values-pt/strings.xml rename to facebook-common/src/main/res/values-pt/strings.xml diff --git a/facebook/src/main/res/values-ru/strings.xml b/facebook-common/src/main/res/values-ru/strings.xml similarity index 100% rename from facebook/src/main/res/values-ru/strings.xml rename to facebook-common/src/main/res/values-ru/strings.xml diff --git a/facebook/src/main/res/values-sk/strings.xml b/facebook-common/src/main/res/values-sk/strings.xml similarity index 100% rename from facebook/src/main/res/values-sk/strings.xml rename to facebook-common/src/main/res/values-sk/strings.xml diff --git a/facebook/src/main/res/values-sv/strings.xml b/facebook-common/src/main/res/values-sv/strings.xml similarity index 100% rename from facebook/src/main/res/values-sv/strings.xml rename to facebook-common/src/main/res/values-sv/strings.xml diff --git a/facebook/src/main/res/values-ta/strings.xml b/facebook-common/src/main/res/values-ta/strings.xml similarity index 100% rename from facebook/src/main/res/values-ta/strings.xml rename to facebook-common/src/main/res/values-ta/strings.xml diff --git a/facebook/src/main/res/values-te/strings.xml b/facebook-common/src/main/res/values-te/strings.xml similarity index 100% rename from facebook/src/main/res/values-te/strings.xml rename to facebook-common/src/main/res/values-te/strings.xml diff --git a/facebook/src/main/res/values-th/strings.xml b/facebook-common/src/main/res/values-th/strings.xml similarity index 100% rename from facebook/src/main/res/values-th/strings.xml rename to facebook-common/src/main/res/values-th/strings.xml diff --git a/facebook/src/main/res/values-tl/strings.xml b/facebook-common/src/main/res/values-tl/strings.xml similarity index 100% rename from facebook/src/main/res/values-tl/strings.xml rename to facebook-common/src/main/res/values-tl/strings.xml diff --git a/facebook/src/main/res/values-tr/strings.xml b/facebook-common/src/main/res/values-tr/strings.xml similarity index 100% rename from facebook/src/main/res/values-tr/strings.xml rename to facebook-common/src/main/res/values-tr/strings.xml diff --git a/facebook/src/main/res/values-vi/strings.xml b/facebook-common/src/main/res/values-vi/strings.xml similarity index 100% rename from facebook/src/main/res/values-vi/strings.xml rename to facebook-common/src/main/res/values-vi/strings.xml diff --git a/facebook/src/main/res/values-zh-rCN/strings.xml b/facebook-common/src/main/res/values-zh-rCN/strings.xml similarity index 100% rename from facebook/src/main/res/values-zh-rCN/strings.xml rename to facebook-common/src/main/res/values-zh-rCN/strings.xml diff --git a/facebook/src/main/res/values-zh-rHK/strings.xml b/facebook-common/src/main/res/values-zh-rHK/strings.xml similarity index 100% rename from facebook/src/main/res/values-zh-rHK/strings.xml rename to facebook-common/src/main/res/values-zh-rHK/strings.xml diff --git a/facebook/src/main/res/values-zh-rTW/strings.xml b/facebook-common/src/main/res/values-zh-rTW/strings.xml similarity index 100% rename from facebook/src/main/res/values-zh-rTW/strings.xml rename to facebook-common/src/main/res/values-zh-rTW/strings.xml diff --git a/facebook/src/main/res/values/attrs.xml b/facebook-common/src/main/res/values/attrs.xml similarity index 71% rename from facebook/src/main/res/values/attrs.xml rename to facebook-common/src/main/res/values/attrs.xml index ecd88b321b..bd889806bb 100644 --- a/facebook/src/main/res/values/attrs.xml +++ b/facebook-common/src/main/res/values/attrs.xml @@ -20,26 +20,6 @@ --> - - - - - - - - - - - - - - - - - - - - diff --git a/facebook-common/src/main/res/values/dimens.xml b/facebook-common/src/main/res/values/dimens.xml new file mode 100644 index 0000000000..08d5c19df0 --- /dev/null +++ b/facebook-common/src/main/res/values/dimens.xml @@ -0,0 +1,39 @@ + + + + + 2dp + + 4dp + 2dp + + 11.0sp + 2dp + 6dp + + 6dp + 3dp + 3dp + 1dp + 11.0sp + 6dp + diff --git a/facebook/src/main/res/values/strings.xml b/facebook-common/src/main/res/values/strings.xml similarity index 100% rename from facebook/src/main/res/values/strings.xml rename to facebook-common/src/main/res/values/strings.xml diff --git a/facebook-common/src/main/res/values/styles.xml b/facebook-common/src/main/res/values/styles.xml new file mode 100644 index 0000000000..be8212e85c --- /dev/null +++ b/facebook-common/src/main/res/values/styles.xml @@ -0,0 +1,77 @@ + + + + + #3B5998 + #90949C + #3C6499 + #84878c + #bdc1c9 + #FFFFFe + #dedee6 + #2f477a + #415dae + #6a7180 + #6a7180 + #6a7180 + #7c8fc8 + + + + + + + + + + + diff --git a/facebook-core/.gitignore b/facebook-core/.gitignore new file mode 100644 index 0000000000..796b96d1c4 --- /dev/null +++ b/facebook-core/.gitignore @@ -0,0 +1 @@ +/build diff --git a/facebook-core/build.gradle b/facebook-core/build.gradle new file mode 100644 index 0000000000..7f967b30ce --- /dev/null +++ b/facebook-core/build.gradle @@ -0,0 +1,40 @@ +apply plugin: 'com.android.library' + +project.group = 'com.facebook.android' + +project.ext.name = 'Facebook-Core-Android-SDK' +project.ext.artifactId = "facebook-core" +project.ext.description = 'Facebook Core Android SDK' +project.ext.url = 'https://github.com/facebook/facebook-android-sdk/facebook-core' + +dependencies { + // Facebook Dependencies + compile 'com.parse.bolts:bolts-android:1.4.0' + compile 'com.android.support:support-annotations:25.3.1' + compile 'com.android.support:support-core-utils:25.3.1' + + // Unit Tests + testCompile 'junit:junit:4.12' +} + +android { + compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION) + buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION + + defaultConfig { + minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION) + targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION) + consumerProguardFiles 'proguard-rules.pro' + } + + lintOptions { + abortOnError false + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_7 + targetCompatibility JavaVersion.VERSION_1_7 + } +} + +apply from: "${rootDir}/maven.gradle" diff --git a/facebook-core/proguard-rules.pro b/facebook-core/proguard-rules.pro new file mode 100644 index 0000000000..4f8fdcdc77 --- /dev/null +++ b/facebook-core/proguard-rules.pro @@ -0,0 +1,38 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +-keepclassmembers class * implements java.io.Serializable { + private static final java.io.ObjectStreamField[] serialPersistentFields; + private void writeObject(java.io.ObjectOutputStream); + private void readObject(java.io.ObjectInputStream); + java.lang.Object writeReplace(); + java.lang.Object readResolve(); +} + +-keepnames class com.facebook.FacebookActivity +-keepnames class com.facebook.CustomTabActivity + +-keep class com.facebook.core.Core + +-keep public class com.android.vending.billing.IInAppBillingService { + public static com.android.vending.billing.IInAppBillingService asInterface(android.os.IBinder); + public android.os.Bundle getSkuDetails(int, java.lang.String, java.lang.String, android.os.Bundle); +} diff --git a/facebook-core/src/main/AndroidManifest.xml b/facebook-core/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..5fee380867 --- /dev/null +++ b/facebook-core/src/main/AndroidManifest.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + diff --git a/facebook/src/main/java/com/facebook/AccessToken.java b/facebook-core/src/main/java/com/facebook/AccessToken.java similarity index 100% rename from facebook/src/main/java/com/facebook/AccessToken.java rename to facebook-core/src/main/java/com/facebook/AccessToken.java diff --git a/facebook/src/main/java/com/facebook/AccessTokenCache.java b/facebook-core/src/main/java/com/facebook/AccessTokenCache.java similarity index 100% rename from facebook/src/main/java/com/facebook/AccessTokenCache.java rename to facebook-core/src/main/java/com/facebook/AccessTokenCache.java diff --git a/facebook/src/main/java/com/facebook/AccessTokenManager.java b/facebook-core/src/main/java/com/facebook/AccessTokenManager.java similarity index 97% rename from facebook/src/main/java/com/facebook/AccessTokenManager.java rename to facebook-core/src/main/java/com/facebook/AccessTokenManager.java index 6171527d76..1d38756b53 100644 --- a/facebook/src/main/java/com/facebook/AccessTokenManager.java +++ b/facebook-core/src/main/java/com/facebook/AccessTokenManager.java @@ -40,16 +40,16 @@ import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; -final class AccessTokenManager { - static final String TAG = "AccessTokenManager"; +final public class AccessTokenManager { + public static final String TAG = "AccessTokenManager"; - static final String ACTION_CURRENT_ACCESS_TOKEN_CHANGED = + public static final String ACTION_CURRENT_ACCESS_TOKEN_CHANGED = "com.facebook.sdk.ACTION_CURRENT_ACCESS_TOKEN_CHANGED"; - static final String EXTRA_OLD_ACCESS_TOKEN = + public static final String EXTRA_OLD_ACCESS_TOKEN = "com.facebook.sdk.EXTRA_OLD_ACCESS_TOKEN"; - static final String EXTRA_NEW_ACCESS_TOKEN = + public static final String EXTRA_NEW_ACCESS_TOKEN = "com.facebook.sdk.EXTRA_NEW_ACCESS_TOKEN"; - static final String SHARED_PREFERENCES_NAME = + public static final String SHARED_PREFERENCES_NAME = "com.facebook.AccessTokenManager.SharedPreferences"; // Token extension constants diff --git a/facebook/src/main/java/com/facebook/AccessTokenSource.java b/facebook-core/src/main/java/com/facebook/AccessTokenSource.java similarity index 100% rename from facebook/src/main/java/com/facebook/AccessTokenSource.java rename to facebook-core/src/main/java/com/facebook/AccessTokenSource.java diff --git a/facebook/src/main/java/com/facebook/CallbackManager.java b/facebook-core/src/main/java/com/facebook/CallbackManager.java similarity index 100% rename from facebook/src/main/java/com/facebook/CallbackManager.java rename to facebook-core/src/main/java/com/facebook/CallbackManager.java diff --git a/facebook/src/main/java/com/facebook/FacebookBroadcastReceiver.java b/facebook-core/src/main/java/com/facebook/FacebookBroadcastReceiver.java similarity index 100% rename from facebook/src/main/java/com/facebook/FacebookBroadcastReceiver.java rename to facebook-core/src/main/java/com/facebook/FacebookBroadcastReceiver.java diff --git a/facebook/src/main/java/com/facebook/FacebookContentProvider.java b/facebook-core/src/main/java/com/facebook/FacebookContentProvider.java similarity index 100% rename from facebook/src/main/java/com/facebook/FacebookContentProvider.java rename to facebook-core/src/main/java/com/facebook/FacebookContentProvider.java diff --git a/facebook/src/main/java/com/facebook/FacebookException.java b/facebook-core/src/main/java/com/facebook/FacebookException.java similarity index 100% rename from facebook/src/main/java/com/facebook/FacebookException.java rename to facebook-core/src/main/java/com/facebook/FacebookException.java diff --git a/facebook/src/main/java/com/facebook/FacebookGraphResponseException.java b/facebook-core/src/main/java/com/facebook/FacebookGraphResponseException.java similarity index 100% rename from facebook/src/main/java/com/facebook/FacebookGraphResponseException.java rename to facebook-core/src/main/java/com/facebook/FacebookGraphResponseException.java diff --git a/facebook/src/main/java/com/facebook/FacebookOperationCanceledException.java b/facebook-core/src/main/java/com/facebook/FacebookOperationCanceledException.java similarity index 100% rename from facebook/src/main/java/com/facebook/FacebookOperationCanceledException.java rename to facebook-core/src/main/java/com/facebook/FacebookOperationCanceledException.java diff --git a/facebook/src/main/java/com/facebook/FacebookRequestError.java b/facebook-core/src/main/java/com/facebook/FacebookRequestError.java similarity index 100% rename from facebook/src/main/java/com/facebook/FacebookRequestError.java rename to facebook-core/src/main/java/com/facebook/FacebookRequestError.java diff --git a/facebook/src/main/java/com/facebook/FacebookSdk.java b/facebook-core/src/main/java/com/facebook/FacebookSdk.java similarity index 98% rename from facebook/src/main/java/com/facebook/FacebookSdk.java rename to facebook-core/src/main/java/com/facebook/FacebookSdk.java index 977afcd520..9aa5fdcb09 100644 --- a/facebook/src/main/java/com/facebook/FacebookSdk.java +++ b/facebook-core/src/main/java/com/facebook/FacebookSdk.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -32,6 +32,7 @@ import android.util.Log; import com.facebook.appevents.AppEventsLogger; +import com.facebook.core.BuildConfig; import com.facebook.internal.AppEventsLoggerUtility; import com.facebook.internal.FetchedAppSettingsManager; import com.facebook.internal.LockOnGetVariable; @@ -70,7 +71,6 @@ public final class FacebookSdk { private static volatile String applicationId; private static volatile String applicationName; private static volatile String appClientToken; - private static volatile int webDialogTheme; private static volatile Boolean autoLogAppEventsEnabled; private static final String FACEBOOK_COM = "facebook.com"; private static volatile String facebookDomain = FACEBOOK_COM; @@ -84,7 +84,6 @@ public final class FacebookSdk { private static final int DEFAULT_KEEP_ALIVE = 1; private static int callbackRequestCodeOffset = DEFAULT_CALLBACK_REQUEST_CODE_OFFSET; private static final Object LOCK = new Object(); - private static final int DEFAULT_THEME = R.style.com_facebook_activity_theme; private static String graphApiVersion = ServerProtocol.getDefaultAPIVersion(); private static final int MAX_REQUEST_CODE_RANGE = 100; @@ -295,7 +294,6 @@ public File call() throws Exception { return FacebookSdk.applicationContext.getCacheDir(); } }); - FutureTask futureTask = new FutureTask<>(new Callable() { @Override @@ -313,6 +311,10 @@ public Void call() throws Exception { callback.onInitialized(); } + AppEventsLogger.initializeLib( + FacebookSdk.applicationContext, + applicationId); + // Flush any app events that might have been persisted during last run. AppEventsLogger.newLogger( applicationContext.getApplicationContext()).flush(); @@ -720,10 +722,6 @@ static void loadDefaultsFromMetadata(Context context) { appClientToken = ai.metaData.getString(CLIENT_TOKEN_PROPERTY); } - if (webDialogTheme == 0) { - setWebDialogTheme(ai.metaData.getInt(WEB_DIALOG_THEME)); - } - if (callbackRequestCodeOffset == DEFAULT_CALLBACK_REQUEST_CODE_OFFSET) { callbackRequestCodeOffset = ai.metaData.getInt( CALLBACK_OFFSET_PROPERTY, @@ -832,23 +830,6 @@ public static void setClientToken(String clientToken) { appClientToken = clientToken; } - /** - * Gets the theme used by {@link com.facebook.internal.WebDialog} - * @return the theme - */ - public static int getWebDialogTheme() { - Validate.sdkInitialized(); - return webDialogTheme; - } - - /** - * Sets the theme used by {@link com.facebook.internal.WebDialog} - * @param theme A theme to use - */ - public static void setWebDialogTheme(int theme) { - webDialogTheme = (theme != 0) ? theme : DEFAULT_THEME; - } - /** * Gets the flag used by {@link com.facebook.appevents.AppEventsLogger} * @return the auto logging events flag for the application diff --git a/facebook/src/main/java/com/facebook/FacebookSdkNotInitializedException.java b/facebook-core/src/main/java/com/facebook/FacebookSdkNotInitializedException.java similarity index 100% rename from facebook/src/main/java/com/facebook/FacebookSdkNotInitializedException.java rename to facebook-core/src/main/java/com/facebook/FacebookSdkNotInitializedException.java diff --git a/facebook/src/main/java/com/facebook/FacebookSdkVersion.java b/facebook-core/src/main/java/com/facebook/FacebookSdkVersion.java similarity index 95% rename from facebook/src/main/java/com/facebook/FacebookSdkVersion.java rename to facebook-core/src/main/java/com/facebook/FacebookSdkVersion.java index 4e72434918..7577364e14 100644 --- a/facebook/src/main/java/com/facebook/FacebookSdkVersion.java +++ b/facebook-core/src/main/java/com/facebook/FacebookSdkVersion.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -21,5 +21,5 @@ package com.facebook; final class FacebookSdkVersion { - public static final String BUILD = "4.26.0"; + public static final String BUILD = "4.27.0"; } diff --git a/facebook/src/main/java/com/facebook/FacebookServiceException.java b/facebook-core/src/main/java/com/facebook/FacebookServiceException.java similarity index 100% rename from facebook/src/main/java/com/facebook/FacebookServiceException.java rename to facebook-core/src/main/java/com/facebook/FacebookServiceException.java diff --git a/facebook/src/main/java/com/facebook/GraphRequest.java b/facebook-core/src/main/java/com/facebook/GraphRequest.java similarity index 97% rename from facebook/src/main/java/com/facebook/GraphRequest.java rename to facebook-core/src/main/java/com/facebook/GraphRequest.java index 5368774e7d..35dbf155fd 100644 --- a/facebook/src/main/java/com/facebook/GraphRequest.java +++ b/facebook-core/src/main/java/com/facebook/GraphRequest.java @@ -30,9 +30,6 @@ import android.util.Pair; import com.facebook.internal.*; -import com.facebook.share.internal.OpenGraphJSONUtility; -import com.facebook.share.model.ShareOpenGraphObject; -import com.facebook.share.model.SharePhoto; import org.json.JSONArray; import org.json.JSONException; @@ -1830,65 +1827,6 @@ private static void processGraphObject( } } - /** - * Create an User Owned Open Graph object - * - * Use this method to create an open graph object, which can then be posted utilizing the same - * GraphRequest methods as other GraphRequests. - * - * @param openGraphObject The open graph object to create. Only SharePhotos with the imageUrl - * set are accepted through this helper method. - * @return GraphRequest for creating the given openGraphObject - * @throws FacebookException thrown in the case of a JSONException or in the case of invalid - * format for SharePhoto (missing imageUrl) - */ - - public static GraphRequest createOpenGraphObject(final ShareOpenGraphObject openGraphObject) - throws FacebookException { - String type = openGraphObject.getString("type"); - if (type == null) { - type = openGraphObject.getString("og:type"); - } - - if (type == null) { - throw new FacebookException("Open graph object type cannot be null"); - } - try { - JSONObject stagedObject = (JSONObject) OpenGraphJSONUtility.toJSONValue( - openGraphObject, - new OpenGraphJSONUtility.PhotoJSONProcessor() { - @Override - public JSONObject toJSONObject(SharePhoto photo) { - Uri photoUri = photo.getImageUrl(); - JSONObject photoJSONObject = new JSONObject(); - try { - photoJSONObject.put( - NativeProtocol.IMAGE_URL_KEY, photoUri.toString()); - } catch (Exception e) { - throw new FacebookException("Unable to attach images", e); - } - return photoJSONObject; - } - }); - String ogType = type; - Bundle parameters = new Bundle(); - parameters.putString("object", stagedObject.toString()); - - String graphPath = String.format( - Locale.ROOT, GRAPH_PATH_FORMAT, - ME, - "objects/" + ogType); - return new GraphRequest( - AccessToken.getCurrentAccessToken(), - graphPath, - parameters, - HttpMethod.POST); - } - catch(JSONException e){ - throw new FacebookException(e.getMessage()); - } - } - private static void processGraphObjectProperty( String key, Object value, diff --git a/facebook/src/main/java/com/facebook/GraphRequestAsyncTask.java b/facebook-core/src/main/java/com/facebook/GraphRequestAsyncTask.java similarity index 100% rename from facebook/src/main/java/com/facebook/GraphRequestAsyncTask.java rename to facebook-core/src/main/java/com/facebook/GraphRequestAsyncTask.java diff --git a/facebook/src/main/java/com/facebook/GraphRequestBatch.java b/facebook-core/src/main/java/com/facebook/GraphRequestBatch.java similarity index 100% rename from facebook/src/main/java/com/facebook/GraphRequestBatch.java rename to facebook-core/src/main/java/com/facebook/GraphRequestBatch.java diff --git a/facebook/src/main/java/com/facebook/GraphResponse.java b/facebook-core/src/main/java/com/facebook/GraphResponse.java similarity index 100% rename from facebook/src/main/java/com/facebook/GraphResponse.java rename to facebook-core/src/main/java/com/facebook/GraphResponse.java diff --git a/facebook/src/main/java/com/facebook/HttpMethod.java b/facebook-core/src/main/java/com/facebook/HttpMethod.java similarity index 100% rename from facebook/src/main/java/com/facebook/HttpMethod.java rename to facebook-core/src/main/java/com/facebook/HttpMethod.java diff --git a/facebook/src/main/java/com/facebook/LegacyTokenHelper.java b/facebook-core/src/main/java/com/facebook/LegacyTokenHelper.java similarity index 100% rename from facebook/src/main/java/com/facebook/LegacyTokenHelper.java rename to facebook-core/src/main/java/com/facebook/LegacyTokenHelper.java diff --git a/facebook/src/main/java/com/facebook/LoggingBehavior.java b/facebook-core/src/main/java/com/facebook/LoggingBehavior.java similarity index 100% rename from facebook/src/main/java/com/facebook/LoggingBehavior.java rename to facebook-core/src/main/java/com/facebook/LoggingBehavior.java diff --git a/facebook/src/main/java/com/facebook/Profile.java b/facebook-core/src/main/java/com/facebook/Profile.java similarity index 100% rename from facebook/src/main/java/com/facebook/Profile.java rename to facebook-core/src/main/java/com/facebook/Profile.java diff --git a/facebook/src/main/java/com/facebook/ProfileCache.java b/facebook-core/src/main/java/com/facebook/ProfileCache.java similarity index 100% rename from facebook/src/main/java/com/facebook/ProfileCache.java rename to facebook-core/src/main/java/com/facebook/ProfileCache.java diff --git a/facebook/src/main/java/com/facebook/ProfileManager.java b/facebook-core/src/main/java/com/facebook/ProfileManager.java similarity index 95% rename from facebook/src/main/java/com/facebook/ProfileManager.java rename to facebook-core/src/main/java/com/facebook/ProfileManager.java index 1f14b25546..666d1c8163 100644 --- a/facebook/src/main/java/com/facebook/ProfileManager.java +++ b/facebook-core/src/main/java/com/facebook/ProfileManager.java @@ -27,12 +27,12 @@ import com.facebook.internal.Utility; import com.facebook.internal.Validate; -final class ProfileManager { - static final String ACTION_CURRENT_PROFILE_CHANGED = +final public class ProfileManager { + public static final String ACTION_CURRENT_PROFILE_CHANGED = "com.facebook.sdk.ACTION_CURRENT_PROFILE_CHANGED"; - static final String EXTRA_OLD_PROFILE = + public static final String EXTRA_OLD_PROFILE = "com.facebook.sdk.EXTRA_OLD_PROFILE"; - static final String EXTRA_NEW_PROFILE = + public static final String EXTRA_NEW_PROFILE = "com.facebook.sdk.EXTRA_NEW_PROFILE"; private static volatile ProfileManager instance; diff --git a/facebook/src/main/java/com/facebook/ProfileTracker.java b/facebook-core/src/main/java/com/facebook/ProfileTracker.java similarity index 93% rename from facebook/src/main/java/com/facebook/ProfileTracker.java rename to facebook-core/src/main/java/com/facebook/ProfileTracker.java index 8ee010c8e7..ad18f74b77 100644 --- a/facebook/src/main/java/com/facebook/ProfileTracker.java +++ b/facebook-core/src/main/java/com/facebook/ProfileTracker.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -97,10 +97,8 @@ private class ProfileBroadcastReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { if (ProfileManager.ACTION_CURRENT_PROFILE_CHANGED.equals(intent.getAction())) { - Profile oldProfile = (Profile) intent - .getParcelableExtra(ProfileManager.EXTRA_OLD_PROFILE); - Profile newProfile = (Profile) intent - .getParcelableExtra(ProfileManager.EXTRA_NEW_PROFILE); + Profile oldProfile = intent.getParcelableExtra(ProfileManager.EXTRA_OLD_PROFILE); + Profile newProfile = intent.getParcelableExtra(ProfileManager.EXTRA_NEW_PROFILE); onCurrentProfileChanged(oldProfile, newProfile); } diff --git a/facebook/src/main/java/com/facebook/ProgressNoopOutputStream.java b/facebook-core/src/main/java/com/facebook/ProgressNoopOutputStream.java similarity index 100% rename from facebook/src/main/java/com/facebook/ProgressNoopOutputStream.java rename to facebook-core/src/main/java/com/facebook/ProgressNoopOutputStream.java diff --git a/facebook/src/main/java/com/facebook/ProgressOutputStream.java b/facebook-core/src/main/java/com/facebook/ProgressOutputStream.java similarity index 100% rename from facebook/src/main/java/com/facebook/ProgressOutputStream.java rename to facebook-core/src/main/java/com/facebook/ProgressOutputStream.java diff --git a/facebook/src/main/java/com/facebook/RequestOutputStream.java b/facebook-core/src/main/java/com/facebook/RequestOutputStream.java similarity index 100% rename from facebook/src/main/java/com/facebook/RequestOutputStream.java rename to facebook-core/src/main/java/com/facebook/RequestOutputStream.java diff --git a/facebook/src/main/java/com/facebook/RequestProgress.java b/facebook-core/src/main/java/com/facebook/RequestProgress.java similarity index 100% rename from facebook/src/main/java/com/facebook/RequestProgress.java rename to facebook-core/src/main/java/com/facebook/RequestProgress.java diff --git a/facebook/src/main/java/com/facebook/appevents/AccessTokenAppIdPair.java b/facebook-core/src/main/java/com/facebook/appevents/AccessTokenAppIdPair.java similarity index 100% rename from facebook/src/main/java/com/facebook/appevents/AccessTokenAppIdPair.java rename to facebook-core/src/main/java/com/facebook/appevents/AccessTokenAppIdPair.java diff --git a/facebook/src/main/java/com/facebook/appevents/AnalyticsUserIDStore.java b/facebook-core/src/main/java/com/facebook/appevents/AnalyticsUserIDStore.java similarity index 100% rename from facebook/src/main/java/com/facebook/appevents/AnalyticsUserIDStore.java rename to facebook-core/src/main/java/com/facebook/appevents/AnalyticsUserIDStore.java diff --git a/facebook/src/main/java/com/facebook/appevents/AppEvent.java b/facebook-core/src/main/java/com/facebook/appevents/AppEvent.java similarity index 100% rename from facebook/src/main/java/com/facebook/appevents/AppEvent.java rename to facebook-core/src/main/java/com/facebook/appevents/AppEvent.java diff --git a/facebook/src/main/java/com/facebook/appevents/AppEventCollection.java b/facebook-core/src/main/java/com/facebook/appevents/AppEventCollection.java similarity index 100% rename from facebook/src/main/java/com/facebook/appevents/AppEventCollection.java rename to facebook-core/src/main/java/com/facebook/appevents/AppEventCollection.java diff --git a/facebook/src/main/java/com/facebook/appevents/AppEventQueue.java b/facebook-core/src/main/java/com/facebook/appevents/AppEventQueue.java similarity index 99% rename from facebook/src/main/java/com/facebook/appevents/AppEventQueue.java rename to facebook-core/src/main/java/com/facebook/appevents/AppEventQueue.java index 616270d993..70a2ff3643 100644 --- a/facebook/src/main/java/com/facebook/appevents/AppEventQueue.java +++ b/facebook-core/src/main/java/com/facebook/appevents/AppEventQueue.java @@ -34,7 +34,6 @@ import com.facebook.internal.FetchedAppSettings; import com.facebook.internal.FetchedAppSettingsManager; import com.facebook.internal.Logger; -import com.facebook.internal.Utility; import org.json.JSONArray; import org.json.JSONException; diff --git a/facebook/src/main/java/com/facebook/appevents/AppEventStore.java b/facebook-core/src/main/java/com/facebook/appevents/AppEventStore.java similarity index 97% rename from facebook/src/main/java/com/facebook/appevents/AppEventStore.java rename to facebook-core/src/main/java/com/facebook/appevents/AppEventStore.java index fb5f45ffeb..ca21cb27ad 100644 --- a/facebook/src/main/java/com/facebook/appevents/AppEventStore.java +++ b/facebook-core/src/main/java/com/facebook/appevents/AppEventStore.java @@ -151,11 +151,11 @@ protected ObjectStreamClass readClassDescriptor() if (resultClassDescriptor.getName().equals( ACCESS_TOKEN_APP_ID_PAIR_SERIALIZATION_PROXY_V1_CLASS_NAME)) { resultClassDescriptor = ObjectStreamClass.lookup( - com.facebook.appevents.AccessTokenAppIdPair.SerializationProxyV1.class); + AccessTokenAppIdPair.SerializationProxyV1.class); } else if (resultClassDescriptor.getName().equals( APP_EVENT_SERIALIZATION_PROXY_V1_CLASS_NAME)) { resultClassDescriptor = ObjectStreamClass.lookup( - com.facebook.appevents.AppEvent.SerializationProxyV1.class); + AppEvent.SerializationProxyV1.class); } return resultClassDescriptor; diff --git a/facebook/src/main/java/com/facebook/appevents/AppEventsConstants.java b/facebook-core/src/main/java/com/facebook/appevents/AppEventsConstants.java similarity index 100% rename from facebook/src/main/java/com/facebook/appevents/AppEventsConstants.java rename to facebook-core/src/main/java/com/facebook/appevents/AppEventsConstants.java diff --git a/facebook/src/main/java/com/facebook/appevents/AppEventsLogger.java b/facebook-core/src/main/java/com/facebook/appevents/AppEventsLogger.java similarity index 91% rename from facebook/src/main/java/com/facebook/appevents/AppEventsLogger.java rename to facebook-core/src/main/java/com/facebook/appevents/AppEventsLogger.java index b6687ef8b2..42e695f1e9 100644 --- a/facebook/src/main/java/com/facebook/appevents/AppEventsLogger.java +++ b/facebook-core/src/main/java/com/facebook/appevents/AppEventsLogger.java @@ -34,13 +34,12 @@ import com.facebook.AccessToken; import com.facebook.FacebookException; -import com.facebook.FacebookRequestError; import com.facebook.FacebookSdk; import com.facebook.GraphRequest; -import com.facebook.GraphResponse; import com.facebook.HttpMethod; import com.facebook.LoggingBehavior; import com.facebook.appevents.internal.ActivityLifecycleTracker; +import com.facebook.internal.AnalyticsEvents; import com.facebook.internal.AttributionIdentifiers; import com.facebook.internal.BundleJSONConverter; import com.facebook.internal.FetchedAppSettingsManager; @@ -391,6 +390,53 @@ private void logAppSessionSuspendEvent(long eventTime) { eventTime); } + /** + * Notifies the events system which internal SDK Libraries the app is utilizing. + * This is called internally and does NOT need to be called externally. + * + * @param context The Context + * @param applicationId The String applicationId + */ + public static void initializeLib(Context context, String applicationId) { + final AppEventsLogger logger = new AppEventsLogger(context, applicationId, null); + backgroundExecutor.execute(new Runnable() { + @Override + public void run() { + Bundle params = new Bundle(); + try { + Class.forName("com.facebook.core.Core"); + params.putInt("core_lib_included", 1); + } catch (ClassNotFoundException ignored) { /* no op */ } + try { + Class.forName("com.facebook.login.Login"); + params.putInt("login_lib_included", 1); + } catch (ClassNotFoundException ignored) { /* no op */ } + try { + Class.forName("com.facebook.share.Share"); + params.putInt("share_lib_included", 1); + } catch (ClassNotFoundException ignored) { /* no op */ } + try { + Class.forName("com.facebook.places.Places"); + params.putInt("places_lib_included", 1); + } catch (ClassNotFoundException ignored) { /* no op */ } + try { + Class.forName("com.facebook.messenger.Messenger"); + params.putInt("messenger_lib_included", 1); + } catch (ClassNotFoundException ignored) { /* no op */ } + try { + Class.forName("com.facebook.applinks.AppLinks"); + params.putInt("applinks_lib_included", 1); + } catch (ClassNotFoundException ignored) { /* no op */ } + try { + Class.forName("com.facebook.all.All"); + params.putInt("all_lib_included", 1); + } catch (ClassNotFoundException ignored) { /* no op */ } + + logger.logSdkEvent(AnalyticsEvents.EVENT_SDK_INITIALIZE, null, params); + } + }); + } + /** * Build an AppEventsLogger instance to log events through. The Facebook app that these events * are targeted at comes from this application's metadata. The application ID used to log events @@ -584,7 +630,41 @@ public void logEvent(String eventName, double valueToSum, Bundle parameters) { * @param currency Currency used to specify the amount. */ public void logPurchase(BigDecimal purchaseAmount, Currency currency) { - logPurchase(purchaseAmount, currency, null); + logPurchase(purchaseAmount, currency, null, false); + } + + /** + * Logs a purchase event with Facebook explicitly, in the specified amount and with the + * specified currency. Additional detail about the purchase can be passed in through the + * parameters bundle. + * @param purchaseAmount Amount of purchase, in the currency specified by the 'currency' + * parameter. This value will be rounded to the thousandths place (e.g., + * 12.34567 becomes 12.346). + * @param currency Currency used to specify the amount. + * @param parameters Arbitrary additional information for describing this event. This should + * have no more than 24 entries, and keys should be mostly consistent from + * one purchase event to the next. + */ + public void logPurchase( + BigDecimal purchaseAmount, Currency currency, Bundle parameters) { + logPurchase(purchaseAmount, currency, parameters, false); + } + + /** + * Logs purchase event implicitly, in the specified amount and with the + * specified currency. Additional detail about the purchase can be passed in through the + * parameters bundle. + * @param purchaseAmount Amount of purchase, in the currency specified by the 'currency' + * parameter. This value will be rounded to the thousandths place (e.g., + * 12.34567 becomes 12.346). + * @param currency Currency used to specify the amount. + * @param parameters Arbitrary additional information for describing this event. This should + * have no more than 24 entries, and keys should be mostly consistent from + * one purchase event to the next. + */ + public void logPurchaseImplicitly( + BigDecimal purchaseAmount, Currency currency, Bundle parameters) { + logPurchase(purchaseAmount, currency, parameters, true); } /** @@ -600,7 +680,11 @@ public void logPurchase(BigDecimal purchaseAmount, Currency currency) { * one purchase event to the next. */ @SuppressWarnings("deprecation") - public void logPurchase(BigDecimal purchaseAmount, Currency currency, Bundle parameters) { + public void logPurchase( + BigDecimal purchaseAmount, + Currency currency, + Bundle parameters, + boolean isImplicitlyLogged) { if (purchaseAmount == null) { notifyDeveloperError("purchaseAmount cannot be null"); @@ -615,7 +699,12 @@ public void logPurchase(BigDecimal purchaseAmount, Currency currency, Bundle par } parameters.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, currency.getCurrencyCode()); - logEvent(AppEventsConstants.EVENT_NAME_PURCHASED, purchaseAmount.doubleValue(), parameters); + logEvent( + AppEventsConstants.EVENT_NAME_PURCHASED, + purchaseAmount.doubleValue(), + parameters, + isImplicitlyLogged, + ActivityLifecycleTracker.getCurrentSessionGuid()); eagerFlush(); } diff --git a/facebook/src/main/java/com/facebook/appevents/FacebookTimeSpentData.java b/facebook-core/src/main/java/com/facebook/appevents/FacebookTimeSpentData.java similarity index 100% rename from facebook/src/main/java/com/facebook/appevents/FacebookTimeSpentData.java rename to facebook-core/src/main/java/com/facebook/appevents/FacebookTimeSpentData.java diff --git a/facebook/src/main/java/com/facebook/appevents/FlushReason.java b/facebook-core/src/main/java/com/facebook/appevents/FlushReason.java similarity index 100% rename from facebook/src/main/java/com/facebook/appevents/FlushReason.java rename to facebook-core/src/main/java/com/facebook/appevents/FlushReason.java diff --git a/facebook/src/main/java/com/facebook/appevents/FlushResult.java b/facebook-core/src/main/java/com/facebook/appevents/FlushResult.java similarity index 100% rename from facebook/src/main/java/com/facebook/appevents/FlushResult.java rename to facebook-core/src/main/java/com/facebook/appevents/FlushResult.java diff --git a/facebook/src/main/java/com/facebook/appevents/FlushStatistics.java b/facebook-core/src/main/java/com/facebook/appevents/FlushStatistics.java similarity index 100% rename from facebook/src/main/java/com/facebook/appevents/FlushStatistics.java rename to facebook-core/src/main/java/com/facebook/appevents/FlushStatistics.java diff --git a/facebook/src/main/java/com/facebook/appevents/PersistedEvents.java b/facebook-core/src/main/java/com/facebook/appevents/PersistedEvents.java similarity index 99% rename from facebook/src/main/java/com/facebook/appevents/PersistedEvents.java rename to facebook-core/src/main/java/com/facebook/appevents/PersistedEvents.java index df47a7ac85..283263126d 100644 --- a/facebook/src/main/java/com/facebook/appevents/PersistedEvents.java +++ b/facebook-core/src/main/java/com/facebook/appevents/PersistedEvents.java @@ -59,7 +59,7 @@ public void addEvents(AccessTokenAppIdPair accessTokenAppIdPair, List } static class SerializationProxyV1 implements Serializable { - private static final long serialVersionUID = 2016_06_29_001L;; + private static final long serialVersionUID = 2016_06_29_001L; private final HashMap> proxyEvents; private SerializationProxyV1(HashMap> events) { diff --git a/facebook/src/main/java/com/facebook/appevents/SessionEventsState.java b/facebook-core/src/main/java/com/facebook/appevents/SessionEventsState.java similarity index 100% rename from facebook/src/main/java/com/facebook/appevents/SessionEventsState.java rename to facebook-core/src/main/java/com/facebook/appevents/SessionEventsState.java diff --git a/facebook/src/main/java/com/facebook/appevents/internal/ActivityLifecycleTracker.java b/facebook-core/src/main/java/com/facebook/appevents/internal/ActivityLifecycleTracker.java similarity index 94% rename from facebook/src/main/java/com/facebook/appevents/internal/ActivityLifecycleTracker.java rename to facebook-core/src/main/java/com/facebook/appevents/internal/ActivityLifecycleTracker.java index 79346538b3..9d82fe2e2a 100644 --- a/facebook/src/main/java/com/facebook/appevents/internal/ActivityLifecycleTracker.java +++ b/facebook-core/src/main/java/com/facebook/appevents/internal/ActivityLifecycleTracker.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -49,6 +49,7 @@ public class ActivityLifecycleTracker { private static final ScheduledExecutorService singleThreadExecutor = Executors.newSingleThreadScheduledExecutor(); private static volatile ScheduledFuture currentFuture; + private static final Object currentFutureLock = new Object(); private static AtomicInteger foregroundActivityCount = new AtomicInteger(0); // This member should only be changed or updated when executing on the singleThreadExecutor. private static volatile SessionInfo currentSession; @@ -238,13 +239,18 @@ public void run() { currentSession = null; } - currentFuture = null; + synchronized (currentFutureLock) { + currentFuture = null; + } } }; - currentFuture = singleThreadExecutor.schedule( - task, - getSessionTimeoutInSeconds(), - TimeUnit.SECONDS); + + synchronized (currentFutureLock) { + currentFuture = singleThreadExecutor.schedule( + task, + getSessionTimeoutInSeconds(), + TimeUnit.SECONDS); + } } @@ -274,10 +280,12 @@ private static int getSessionTimeoutInSeconds() { } private static void cancelCurrentTask() { - if (currentFuture != null) { - currentFuture.cancel(false); - } + synchronized (currentFutureLock) { + if (currentFuture != null) { + currentFuture.cancel(false); + } - currentFuture = null; + currentFuture = null; + } } } diff --git a/facebook/src/main/java/com/facebook/appevents/internal/AppEventUtility.java b/facebook-core/src/main/java/com/facebook/appevents/internal/AppEventUtility.java similarity index 97% rename from facebook/src/main/java/com/facebook/appevents/internal/AppEventUtility.java rename to facebook-core/src/main/java/com/facebook/appevents/internal/AppEventUtility.java index c9455ce57c..b36e827419 100644 --- a/facebook/src/main/java/com/facebook/appevents/internal/AppEventUtility.java +++ b/facebook-core/src/main/java/com/facebook/appevents/internal/AppEventUtility.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -21,7 +21,8 @@ package com.facebook.appevents.internal; import android.os.Looper; -import android.support.v4.BuildConfig; + +import com.facebook.core.BuildConfig; import junit.framework.Assert; diff --git a/facebook-core/src/main/java/com/facebook/appevents/internal/AutomaticAnalyticsLogger.java b/facebook-core/src/main/java/com/facebook/appevents/internal/AutomaticAnalyticsLogger.java new file mode 100644 index 0000000000..b0d556a8e5 --- /dev/null +++ b/facebook-core/src/main/java/com/facebook/appevents/internal/AutomaticAnalyticsLogger.java @@ -0,0 +1,180 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, + * copy, modify, and distribute this software in source code or binary form for use + * in connection with the web services and APIs provided by Facebook. + * + * As with any software that integrates with the Facebook platform, your use of + * this software is subject to the Facebook Developer Principles and Policies + * [http://developers.facebook.com/policy/]. This copyright notice shall be + * included in all copies or substantial portions of the software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.facebook.appevents.internal; + +import android.app.Activity; +import android.app.Application; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.ServiceConnection; +import android.os.Bundle; +import android.os.IBinder; +import android.support.annotation.Nullable; +import android.util.Log; + +import com.facebook.FacebookSdk; +import com.facebook.appevents.AppEventsLogger; +import com.facebook.internal.FetchedAppSettings; +import com.facebook.internal.FetchedAppSettingsManager; +import com.facebook.internal.Utility; +import com.facebook.internal.Validate; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.math.BigDecimal; +import java.util.Currency; + +/** + * com.facebook.appevents.internal is solely for the use of other packages within the + * Facebook SDK for Android. Use of any of the classes in this package is + * unsupported, and they may be modified or removed without warning at any time. + */ +public class AutomaticAnalyticsLogger { + // Constants + private static final String TAG = AutomaticAnalyticsLogger.class.getCanonicalName(); + + private static final String INAPP_PURCHASE_DATA = "INAPP_PURCHASE_DATA"; + + @Nullable private static Object inAppBillingObj; + + public static void logActivateAppEvent() { + final Context context = FacebookSdk.getApplicationContext(); + final String appId = FacebookSdk.getApplicationId(); + final boolean autoLogAppEvents = FacebookSdk.getAutoLogAppEventsEnabled(); + Validate.notNull(context, "context"); + if (autoLogAppEvents) { + if (context instanceof Application) { + AppEventsLogger.activateApp((Application) context, appId); + } else { // Context is probably originated from ContentProvider or Mocked + Log.w( + TAG, + "Automatic logging of basic events will not happen, because " + + "FacebookSdk.getApplicationContext() returns object that is not " + + "instance of android.app.Application. Make sure you call " + + "FacebookSdk.sdkInitialize() from Application class and pass " + + "application context."); + } + } + } + + public static void logActivityTimeSpentEvent(String activityName, long timeSpentInSeconds) { + final Context context = FacebookSdk.getApplicationContext(); + final String appId = FacebookSdk.getApplicationId(); + Validate.notNull(context, "context"); + final FetchedAppSettings settings = FetchedAppSettingsManager.queryAppSettings( + appId, false); + if (settings != null && settings.getAutomaticLoggingEnabled() && timeSpentInSeconds > 0) { + AppEventsLogger appEventsLogger = AppEventsLogger.newLogger(context); + Bundle params = new Bundle(1); + params.putCharSequence(Constants.AA_TIME_SPENT_SCREEN_PARAMETER_NAME, activityName); + appEventsLogger.logEvent( + Constants.AA_TIME_SPENT_EVENT_NAME, timeSpentInSeconds, params); + } + } + + public static boolean logInAppPurchaseEvent( + final Context context, + int resultCode, + Intent data) { + final String appId = FacebookSdk.getApplicationId(); + final FetchedAppSettings settings = FetchedAppSettingsManager.queryAppSettings( + appId, false); + if (data == null || !FacebookSdk.getAutoLogAppEventsEnabled() + || !settings.getIAPAutomaticLoggingEnabled()) { + return false; + } + final String purchaseData = data.getStringExtra(INAPP_PURCHASE_DATA); + + if (resultCode == Activity.RESULT_OK) { + ServiceConnection serviceConnection = new ServiceConnection() { + @Override + public void onServiceDisconnected(ComponentName name) { + inAppBillingObj = null; + Utility.logd(TAG, "In-app billing service disconnected"); + } + + @Override + public void onServiceConnected( + ComponentName name, + IBinder service) { + inAppBillingObj = InAppPurchaseEventManager + .getServiceInterface(context, service); + try { + JSONObject purchaseDetails = new JSONObject(purchaseData); + String sku = purchaseDetails.getString("productId"); + String skuDetails = InAppPurchaseEventManager.getPurchaseDetails( + context, sku, inAppBillingObj); + if (skuDetails.equals("")) { + return; + } + JSONObject jsonSkuDetails = new JSONObject(skuDetails); + AppEventsLogger appEventsLogger = AppEventsLogger.newLogger(context); + Bundle params = new Bundle(1); + params.putCharSequence(Constants.IAP_PRODUCT_ID, sku); + params.putCharSequence( + Constants.IAP_PURCHASE_TIME, + purchaseDetails.getString("purchaseTime")); + params.putCharSequence( + Constants.IAP_PURCHASE_STATE, + purchaseDetails.getString("purchaseState")); + params.putCharSequence( + Constants.IAP_PURCHASE_TOKEN, + purchaseDetails.getString("purchaseToken")); + params.putCharSequence( + Constants.IAP_PACKAGE_NAME, + purchaseDetails.getString("packageName")); + params.putCharSequence( + Constants.IAP_PRODUCT_TYPE, + jsonSkuDetails.getString("type")); + params.putCharSequence( + Constants.IAP_PRODUCT_TITLE, + jsonSkuDetails.getString("title")); + params.putCharSequence( + Constants.IAP_PRODUCT_DESCRIPTION, + jsonSkuDetails.getString("description")); + + appEventsLogger.logPurchaseImplicitly( + new BigDecimal(jsonSkuDetails.getInt("price_amount_micros") / 1000000.0), + Currency.getInstance(jsonSkuDetails.getString("price_currency_code")), + params); + } + catch (JSONException e) { + Log.e(TAG, "Error parsing in-app purchase data.", e); + } + finally { + context.unbindService(this); + } + } + }; + + // Bind to InAppBillingService. This service reference should only be used + // to query in-app product details before logging. Do not use it for actual in-app + // purchase. + Intent serviceIntent = + new Intent("com.android.vending.billing.InAppBillingService.BIND"); + serviceIntent.setPackage("com.android.vending"); + context.bindService(serviceIntent, serviceConnection, Context.BIND_AUTO_CREATE); + } + return true; + } +} diff --git a/facebook/src/main/java/com/facebook/appevents/internal/Constants.java b/facebook-core/src/main/java/com/facebook/appevents/internal/Constants.java similarity index 74% rename from facebook/src/main/java/com/facebook/appevents/internal/Constants.java rename to facebook-core/src/main/java/com/facebook/appevents/internal/Constants.java index ca120fb4be..b9d308f138 100644 --- a/facebook/src/main/java/com/facebook/appevents/internal/Constants.java +++ b/facebook-core/src/main/java/com/facebook/appevents/internal/Constants.java @@ -28,6 +28,14 @@ public class Constants { // The following are for Automatic Analytics events and parameters public static final String AA_TIME_SPENT_EVENT_NAME = "fb_aa_time_spent_on_view"; public static final String AA_TIME_SPENT_SCREEN_PARAMETER_NAME = "fb_aa_time_spent_view_name"; + public static final String IAP_PRODUCT_ID = "fb_iap_product_id"; + public static final String IAP_PURCHASE_TIME = "fb_iap_purchase_time"; + public static final String IAP_PURCHASE_STATE = "fb_iap_purchase_state"; + public static final String IAP_PURCHASE_TOKEN = "fb_iap_purchase_token"; + public static final String IAP_PRODUCT_TYPE = "fb_iap_product_type"; + public static final String IAP_PRODUCT_TITLE = "fb_iap_product_title"; + public static final String IAP_PRODUCT_DESCRIPTION = "fb_iap_product_description"; + public static final String IAP_PACKAGE_NAME = "fb_iap_package_name"; public static int getDefaultAppEventsSessionTimeoutInSeconds() { return 60; diff --git a/facebook-core/src/main/java/com/facebook/appevents/internal/InAppPurchaseEventManager.java b/facebook-core/src/main/java/com/facebook/appevents/internal/InAppPurchaseEventManager.java new file mode 100644 index 0000000000..cdeee7c9f9 --- /dev/null +++ b/facebook-core/src/main/java/com/facebook/appevents/internal/InAppPurchaseEventManager.java @@ -0,0 +1,148 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, + * copy, modify, and distribute this software in source code or binary form for use + * in connection with the web services and APIs provided by Facebook. + * + * As with any software that integrates with the Facebook platform, your use of + * this software is subject to the Facebook Developer Principles and Policies + * [http://developers.facebook.com/policy/]. This copyright notice shall be + * included in all copies or substantial portions of the software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.facebook.appevents.internal; + +import android.content.Context; +import android.os.Bundle; +import android.os.IBinder; +import android.util.Log; + +import com.facebook.internal.Utility; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.HashMap; + +public class InAppPurchaseEventManager { + private static final HashMap methodMap = + new HashMap<>(); + private static final HashMap> classMap = + new HashMap<>(); + private static final String TAG = InAppPurchaseEventManager.class.getCanonicalName(); + private static final String GET_INTERFACE_METHOD = "iap_get_interface"; + private static final String GET_SKU_DETAILS_METHOD = "iap_get_sku_details"; + private static final String IN_APP_BILLING_SERVICE_STUB = + "com.android.vending.billing.IInAppBillingService$Stub"; + private static final String IN_APP_BILLING_SERVICE = + "com.android.vending.billing.IInAppBillingService"; + private static final String ITEM_ID_LIST = "ITEM_ID_LIST"; + private static final String RESPONSE_CODE = "RESPONSE_CODE"; + private static final String DETAILS_LIST = "DETAILS_LIST"; + + public static Object getServiceInterface(Context context, IBinder service) { + try { + Method getInterfaceMethod = methodMap.get(GET_INTERFACE_METHOD); + if (getInterfaceMethod == null) { + Class iapClass = context.getClassLoader().loadClass(IN_APP_BILLING_SERVICE_STUB); + Class[] paramTypes = new Class[1]; + paramTypes[0] = IBinder.class; + getInterfaceMethod = iapClass.getDeclaredMethod("asInterface", paramTypes); + methodMap.put(GET_INTERFACE_METHOD, getInterfaceMethod); + } + + Object[] args = new Object[1]; + args[0] = service; + Utility.logd(TAG, "In-app billing service connected"); + return getInterfaceMethod.invoke(null, args); + } + catch (ClassNotFoundException e) { + Log.e( + TAG, + IN_APP_BILLING_SERVICE_STUB + " is not available, please add " + + IN_APP_BILLING_SERVICE + " to the project.", + e); + } + catch (NoSuchMethodException e) { + Log.e(TAG, IN_APP_BILLING_SERVICE_STUB + ".asInterface method not found", e); + } + catch (IllegalAccessException e) { + Log.e( + TAG, "Illegal access to method " + IN_APP_BILLING_SERVICE_STUB + ".asInterface", + e); + } + catch (InvocationTargetException e) { + Log.e(TAG, "Invocation target exception in " + IN_APP_BILLING_SERVICE_STUB + + ".asInterface", e); + } + return null; + } + + public static String getPurchaseDetails(Context context, String sku, Object inAppBillingObj) { + if (inAppBillingObj == null || sku == "") { + return ""; + } + try { + Method getSkuDetailsMethod = methodMap.get(GET_SKU_DETAILS_METHOD); + Class iapClass = classMap.get(IN_APP_BILLING_SERVICE); + if (getSkuDetailsMethod == null || iapClass == null) { + iapClass = context.getClassLoader().loadClass(IN_APP_BILLING_SERVICE); + Class[] paramTypes = new Class[4]; + paramTypes[0] = Integer.TYPE; + paramTypes[1] = String.class; + paramTypes[2] = String.class; + paramTypes[3] = Bundle.class; + getSkuDetailsMethod = iapClass.getDeclaredMethod("getSkuDetails", paramTypes); + methodMap.put(GET_SKU_DETAILS_METHOD, getSkuDetailsMethod); + classMap.put(IN_APP_BILLING_SERVICE, iapClass); + } + + ArrayList skuList = new ArrayList<>(); + skuList.add(sku); + Bundle querySkus = new Bundle(); + querySkus.putStringArrayList(ITEM_ID_LIST, skuList); + Object localObj = iapClass.cast(inAppBillingObj); + Object[] args = new Object[4]; + args[0] = Integer.valueOf(3); + args[1] = context.getPackageName(); + args[2] = "inapp"; + args[3] = querySkus; + Bundle skuDetails = (Bundle) getSkuDetailsMethod.invoke(localObj, args); + + int response = skuDetails.getInt(RESPONSE_CODE); + if (response == 0) { + ArrayList details = skuDetails.getStringArrayList(DETAILS_LIST); + String detail = details.size() < 1 ? "" : details.get(0); + return detail; + } + } + catch (ClassNotFoundException e) { + Log.e( + TAG, + IN_APP_BILLING_SERVICE + " is not available, please add " + + IN_APP_BILLING_SERVICE + " to the project, and import the " + + "IInAppBillingService.aidl file into this package", + e); + } + catch (NoSuchMethodException e) { + Log.e(TAG, IN_APP_BILLING_SERVICE + ".getSkuDetails method is not available", e); + } + catch (InvocationTargetException e) { + Log.e(TAG, + "Invocation target exception in " + IN_APP_BILLING_SERVICE + ".getSkuDetails", + e); + } + catch (IllegalAccessException e) { + Log.e(TAG, "Illegal access to method " + IN_APP_BILLING_SERVICE + ".getSkuDetails", e); + } + return ""; + } +} diff --git a/facebook/src/main/java/com/facebook/appevents/internal/InternalAppEventsLogger.java b/facebook-core/src/main/java/com/facebook/appevents/internal/InternalAppEventsLogger.java similarity index 100% rename from facebook/src/main/java/com/facebook/appevents/internal/InternalAppEventsLogger.java rename to facebook-core/src/main/java/com/facebook/appevents/internal/InternalAppEventsLogger.java diff --git a/facebook/src/main/java/com/facebook/appevents/internal/SessionInfo.java b/facebook-core/src/main/java/com/facebook/appevents/internal/SessionInfo.java similarity index 99% rename from facebook/src/main/java/com/facebook/appevents/internal/SessionInfo.java rename to facebook-core/src/main/java/com/facebook/appevents/internal/SessionInfo.java index 7e6b187926..ac3823601d 100644 --- a/facebook/src/main/java/com/facebook/appevents/internal/SessionInfo.java +++ b/facebook-core/src/main/java/com/facebook/appevents/internal/SessionInfo.java @@ -62,7 +62,7 @@ public static SessionInfo getStoredSessionInfo() { SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences( FacebookSdk.getApplicationContext()); - + long startTime = sharedPreferences.getLong(LAST_SESSION_INFO_START_KEY, 0); long endTime = sharedPreferences.getLong(LAST_SESSION_INFO_END_KEY, 0); String sessionIDStr = sharedPreferences.getString(SESSION_ID_KEY, null); diff --git a/facebook/src/main/java/com/facebook/appevents/internal/SessionLogger.java b/facebook-core/src/main/java/com/facebook/appevents/internal/SessionLogger.java similarity index 100% rename from facebook/src/main/java/com/facebook/appevents/internal/SessionLogger.java rename to facebook-core/src/main/java/com/facebook/appevents/internal/SessionLogger.java diff --git a/facebook/src/main/java/com/facebook/appevents/internal/SourceApplicationInfo.java b/facebook-core/src/main/java/com/facebook/appevents/internal/SourceApplicationInfo.java similarity index 100% rename from facebook/src/main/java/com/facebook/appevents/internal/SourceApplicationInfo.java rename to facebook-core/src/main/java/com/facebook/appevents/internal/SourceApplicationInfo.java diff --git a/facebook-core/src/main/java/com/facebook/core/Core.java b/facebook-core/src/main/java/com/facebook/core/Core.java new file mode 100644 index 0000000000..1f351f1079 --- /dev/null +++ b/facebook-core/src/main/java/com/facebook/core/Core.java @@ -0,0 +1,5 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +package com.facebook.core; + +public class Core { } diff --git a/facebook/src/main/java/com/facebook/internal/AnalyticsEvents.java b/facebook-core/src/main/java/com/facebook/internal/AnalyticsEvents.java similarity index 99% rename from facebook/src/main/java/com/facebook/internal/AnalyticsEvents.java rename to facebook-core/src/main/java/com/facebook/internal/AnalyticsEvents.java index bf23211b29..32326d8d7b 100644 --- a/facebook/src/main/java/com/facebook/internal/AnalyticsEvents.java +++ b/facebook-core/src/main/java/com/facebook/internal/AnalyticsEvents.java @@ -115,4 +115,6 @@ public class AnalyticsEvents { public static final String EVENT_DEVICE_SHARE_BUTTON_DID_TAP= "fb_device_share_button_did_tap"; public static final String EVENT_SMART_LOGIN_SERVICE = "fb_smart_login_service"; + + public static final String EVENT_SDK_INITIALIZE = "fb_sdk_initialize"; } diff --git a/facebook/src/main/java/com/facebook/internal/AppEventsLoggerUtility.java b/facebook-core/src/main/java/com/facebook/internal/AppEventsLoggerUtility.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/AppEventsLoggerUtility.java rename to facebook-core/src/main/java/com/facebook/internal/AppEventsLoggerUtility.java diff --git a/facebook/src/main/java/com/facebook/internal/AttributionIdentifiers.java b/facebook-core/src/main/java/com/facebook/internal/AttributionIdentifiers.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/AttributionIdentifiers.java rename to facebook-core/src/main/java/com/facebook/internal/AttributionIdentifiers.java diff --git a/facebook/src/main/java/com/facebook/internal/BoltsMeasurementEventListener.java b/facebook-core/src/main/java/com/facebook/internal/BoltsMeasurementEventListener.java similarity index 98% rename from facebook/src/main/java/com/facebook/internal/BoltsMeasurementEventListener.java rename to facebook-core/src/main/java/com/facebook/internal/BoltsMeasurementEventListener.java index 681a948389..1dd813d97b 100644 --- a/facebook/src/main/java/com/facebook/internal/BoltsMeasurementEventListener.java +++ b/facebook-core/src/main/java/com/facebook/internal/BoltsMeasurementEventListener.java @@ -89,7 +89,7 @@ public void onReceive(Context context, Intent intent) { for(String key : eventArgs.keySet()) { String safeKey = key.replaceAll( "[^0-9a-zA-Z _-]", "-").replaceAll("^[ -]*", "").replaceAll("[ -]*$", ""); - logData.putString(safeKey, (String)eventArgs.get(key)); + logData.putString(safeKey, (String) eventArgs.get(key)); } appEventsLogger.logEvent(eventName, logData); } diff --git a/facebook/src/main/java/com/facebook/internal/BundleJSONConverter.java b/facebook-core/src/main/java/com/facebook/internal/BundleJSONConverter.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/BundleJSONConverter.java rename to facebook-core/src/main/java/com/facebook/internal/BundleJSONConverter.java diff --git a/facebook/src/main/java/com/facebook/internal/CallbackManagerImpl.java b/facebook-core/src/main/java/com/facebook/internal/CallbackManagerImpl.java similarity index 79% rename from facebook/src/main/java/com/facebook/internal/CallbackManagerImpl.java rename to facebook-core/src/main/java/com/facebook/internal/CallbackManagerImpl.java index d6d48272e3..80050b2464 100644 --- a/facebook/src/main/java/com/facebook/internal/CallbackManagerImpl.java +++ b/facebook-core/src/main/java/com/facebook/internal/CallbackManagerImpl.java @@ -21,10 +21,14 @@ package com.facebook.internal; import android.content.Intent; +import android.util.Log; import com.facebook.CallbackManager; import com.facebook.FacebookSdk; +import org.json.JSONException; +import org.json.JSONObject; + import java.util.HashMap; import java.util.Map; @@ -34,6 +38,8 @@ * unsupported, and they may be modified or removed without warning at any time. */ public final class CallbackManagerImpl implements CallbackManager { + private static final String TAG = CallbackManagerImpl.class.getSimpleName(); + private static final String INAPP_PURCHASE_DATA = "INAPP_PURCHASE_DATA"; private static Map staticCallbacks = new HashMap<>(); /** @@ -81,6 +87,9 @@ public void unregisterCallback(int requestCode) { @Override public boolean onActivityResult(int requestCode, int resultCode, Intent data) { + if (isPurchaseIntent(data)) { + requestCode = RequestCodeOffset.InAppPurchase.toRequestCode(); + } Callback callback = callbacks.get(requestCode); if (callback != null) { return callback.onActivityResult(resultCode, data); @@ -102,6 +111,7 @@ public enum RequestCodeOffset { AppGroupJoin(6), AppInvite(7), DeviceShare(8), + InAppPurchase(9), ; private final int offset; @@ -114,4 +124,23 @@ public int toRequestCode() { return FacebookSdk.getCallbackRequestCodeOffset() + offset; } } + + private static boolean isPurchaseIntent(Intent data) { + final String purchaseData; + if (data == null || (purchaseData = data.getStringExtra(INAPP_PURCHASE_DATA)) == null) { + return false; + } + + try { + JSONObject jo = new JSONObject(purchaseData); + return jo.has("orderId") && jo.has("packageName") && jo.has("productId") + && jo.has("purchaseTime") && jo.has("purchaseState") + && jo.has("developerPayload") && jo.has("purchaseToken"); + } + catch (JSONException e) { + Log.e(TAG, "Error parsing intent data.", e); + } + + return false; + } } diff --git a/facebook/src/main/java/com/facebook/internal/FacebookInitProvider.java b/facebook-core/src/main/java/com/facebook/internal/FacebookInitProvider.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/FacebookInitProvider.java rename to facebook-core/src/main/java/com/facebook/internal/FacebookInitProvider.java diff --git a/facebook/src/main/java/com/facebook/internal/FacebookRequestErrorClassification.java b/facebook-core/src/main/java/com/facebook/internal/FacebookRequestErrorClassification.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/FacebookRequestErrorClassification.java rename to facebook-core/src/main/java/com/facebook/internal/FacebookRequestErrorClassification.java diff --git a/facebook/src/main/java/com/facebook/internal/FacebookSignatureValidator.java b/facebook-core/src/main/java/com/facebook/internal/FacebookSignatureValidator.java similarity index 90% rename from facebook/src/main/java/com/facebook/internal/FacebookSignatureValidator.java rename to facebook-core/src/main/java/com/facebook/internal/FacebookSignatureValidator.java index ee52d7955e..734abfe9b6 100644 --- a/facebook/src/main/java/com/facebook/internal/FacebookSignatureValidator.java +++ b/facebook-core/src/main/java/com/facebook/internal/FacebookSignatureValidator.java @@ -38,15 +38,21 @@ public class FacebookSignatureValidator { private static final String FBI_HASH = "a4b7452e2ed8f5f191058ca7bbfd26b0d3214bfc"; private static final String FBL_HASH = "5e8f16062ea3cd2c4a0d547876baa6f38cabf625"; + private static final String FBL2_HASH = "df6b721c8b4d3b6eb44c861d4415007e5a35fc95"; private static final String FBR_HASH = "8a3c4b262d721acd49a4bf97d5213199c86fa2b9"; + private static final String FBR2_HASH = "cc2751449a350f668590264ed76692694a80308a"; + private static final String MSR_HASH = "9b8f518b086098de3d77736f9458a3d2f6f95a37"; private static final HashSet validAppSignatureHashes = buildAppSignatureHashes(); private static HashSet buildAppSignatureHashes() { HashSet set = new HashSet(); set.add(FBR_HASH); + set.add(FBR2_HASH); set.add(FBI_HASH); set.add(FBL_HASH); + set.add(FBL2_HASH); + set.add(MSR_HASH); return set; } diff --git a/facebook/src/main/java/com/facebook/internal/FetchedAppSettings.java b/facebook-core/src/main/java/com/facebook/internal/FetchedAppSettings.java similarity index 96% rename from facebook/src/main/java/com/facebook/internal/FetchedAppSettings.java rename to facebook-core/src/main/java/com/facebook/internal/FetchedAppSettings.java index 8b6728f518..42ca0ee36d 100644 --- a/facebook/src/main/java/com/facebook/internal/FetchedAppSettings.java +++ b/facebook-core/src/main/java/com/facebook/internal/FetchedAppSettings.java @@ -45,6 +45,7 @@ public final class FetchedAppSettings { private FacebookRequestErrorClassification errorClassification; private String smartLoginBookmarkIconURL; private String smartLoginMenuIconURL; + private boolean IAPAutomaticLoggingEnabled; public FetchedAppSettings(boolean supportsImplicitLogging, String nuxContent, @@ -56,7 +57,8 @@ public FetchedAppSettings(boolean supportsImplicitLogging, boolean automaticLoggingEnabled, FacebookRequestErrorClassification errorClassification, String smartLoginBookmarkIconURL, - String smartLoginMenuIconURL + String smartLoginMenuIconURL, + boolean IAPAutomaticLoggingEnabled ) { this.supportsImplicitLogging = supportsImplicitLogging; this.nuxContent = nuxContent; @@ -69,6 +71,7 @@ public FetchedAppSettings(boolean supportsImplicitLogging, this.smartLoginOptions = smartLoginOptions; this.smartLoginBookmarkIconURL = smartLoginBookmarkIconURL; this.smartLoginMenuIconURL = smartLoginMenuIconURL; + this.IAPAutomaticLoggingEnabled = IAPAutomaticLoggingEnabled; } public boolean supportsImplicitLogging() { @@ -110,6 +113,9 @@ public FacebookRequestErrorClassification getErrorClassification() { public String getSmartLoginBookmarkIconURL() { return smartLoginBookmarkIconURL; } public String getSmartLoginMenuIconURL() { return smartLoginMenuIconURL; } + public boolean getIAPAutomaticLoggingEnabled() { + return IAPAutomaticLoggingEnabled; + } public static class DialogFeatureConfig { private static final String DIALOG_CONFIG_DIALOG_NAME_FEATURE_NAME_SEPARATOR = "\\|"; diff --git a/facebook/src/main/java/com/facebook/internal/FetchedAppSettingsManager.java b/facebook-core/src/main/java/com/facebook/internal/FetchedAppSettingsManager.java similarity index 88% rename from facebook/src/main/java/com/facebook/internal/FetchedAppSettingsManager.java rename to facebook-core/src/main/java/com/facebook/internal/FetchedAppSettingsManager.java index 901e89b054..9494d95992 100644 --- a/facebook/src/main/java/com/facebook/internal/FetchedAppSettingsManager.java +++ b/facebook-core/src/main/java/com/facebook/internal/FetchedAppSettingsManager.java @@ -20,15 +20,21 @@ package com.facebook.internal; +import android.content.ComponentName; import android.content.Context; +import android.content.Intent; +import android.content.ServiceConnection; import android.content.SharedPreferences; import android.os.Bundle; +import android.os.IBinder; +import android.support.annotation.Nullable; import android.text.TextUtils; import com.facebook.FacebookSdk; import com.facebook.GraphRequest; import com.facebook.appevents.internal.AutomaticAnalyticsLogger; import com.facebook.appevents.internal.Constants; +import com.facebook.appevents.internal.InAppPurchaseEventManager; import org.json.JSONArray; import org.json.JSONException; @@ -45,6 +51,7 @@ * removed without warning at any time. */ public final class FetchedAppSettingsManager { + private static final String TAG = FetchedAppSettingsManager.class.getCanonicalName(); private static final String APP_SETTINGS_PREFS_STORE = "com.facebook.internal.preferences.APP_SETTINGS"; private static final String APP_SETTINGS_PREFS_KEY_FORMAT = @@ -63,6 +70,9 @@ public final class FetchedAppSettingsManager { private static final String APP_SETTING_APP_EVENTS_FEATURE_BITMASK = "app_events_feature_bitmask"; private static final int AUTOMATIC_LOGGING_ENABLED_BITMASK_FIELD = 1 << 3; + // The second bit of app_events_feature_bitmask is used for iOS in-app purchase automatic + // logging, while the fourth bit is used for Android in-app purchase automatic logging. + private static final int IAP_AUTOMATIC_LOGGING_ENABLED_BITMASK_FIELD = 1 << 4; private static final String APP_SETTING_SMART_LOGIN_OPTIONS = "seamless_login"; private static final String SMART_LOGIN_BOOKMARK_ICON_URL = "smart_login_bookmark_icon_url"; @@ -131,6 +141,9 @@ public void run() { // Start log activate & deactivate app events, in case autoLogAppEvents flag is set AutomaticAnalyticsLogger.logActivateAppEvent(); + // Automatically log In App Purchase events + startInAppPurchaseAutoLogging(context); + loadingSettings.set(false); } }); @@ -173,6 +186,8 @@ private static FetchedAppSettings parseAppSettingsFromJSON( int featureBitmask = settingsJSON.optInt(APP_SETTING_APP_EVENTS_FEATURE_BITMASK,0); boolean automaticLoggingEnabled = (featureBitmask & AUTOMATIC_LOGGING_ENABLED_BITMASK_FIELD) != 0; + boolean inAppPurchaseAutomaticLoggingEnabled = + (featureBitmask & IAP_AUTOMATIC_LOGGING_ENABLED_BITMASK_FIELD) != 0; FetchedAppSettings result = new FetchedAppSettings( settingsJSON.optBoolean(APP_SETTING_SUPPORTS_IMPLICIT_SDK_LOGGING, false), settingsJSON.optString(APP_SETTING_NUX_CONTENT, ""), @@ -186,7 +201,8 @@ private static FetchedAppSettings parseAppSettingsFromJSON( automaticLoggingEnabled, errorClassification, settingsJSON.optString(SMART_LOGIN_BOOKMARK_ICON_URL), - settingsJSON.optString(SMART_LOGIN_MENU_ICON_URL) + settingsJSON.optString(SMART_LOGIN_MENU_ICON_URL), + inAppPurchaseAutomaticLoggingEnabled ); fetchedAppSettings.put(applicationId, result); @@ -237,4 +253,17 @@ private static Map> return dialogConfigMap; } + + private static void startInAppPurchaseAutoLogging(final Context context) { + // Register callback to do auto logging. + CallbackManagerImpl.registerStaticCallback( + CallbackManagerImpl.RequestCodeOffset.InAppPurchase.toRequestCode(), + new CallbackManagerImpl.Callback() { + @Override + public boolean onActivityResult(int resultCode, Intent data) { + return AutomaticAnalyticsLogger.logInAppPurchaseEvent( + context, resultCode, data); + } + }); + } } diff --git a/facebook/src/main/java/com/facebook/internal/FileLruCache.java b/facebook-core/src/main/java/com/facebook/internal/FileLruCache.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/FileLruCache.java rename to facebook-core/src/main/java/com/facebook/internal/FileLruCache.java diff --git a/facebook/src/main/java/com/facebook/internal/ImageDownloader.java b/facebook-core/src/main/java/com/facebook/internal/ImageDownloader.java similarity index 98% rename from facebook/src/main/java/com/facebook/internal/ImageDownloader.java rename to facebook-core/src/main/java/com/facebook/internal/ImageDownloader.java index 14b3089202..33ded785fb 100644 --- a/facebook/src/main/java/com/facebook/internal/ImageDownloader.java +++ b/facebook-core/src/main/java/com/facebook/internal/ImageDownloader.java @@ -27,7 +27,6 @@ import android.os.Handler; import android.os.Looper; import com.facebook.FacebookException; -import com.facebook.R; import java.io.IOException; import java.io.InputStream; @@ -274,8 +273,7 @@ private static void download(RequestKey key, Context context) { } Utility.closeQuietly(reader); } else { - errorMessageBuilder.append( - context.getString(R.string.com_facebook_image_download_unknown_error)); + errorMessageBuilder.append("Unexpected error while downloading an image."); } error = new FacebookException(errorMessageBuilder.toString()); break; diff --git a/facebook/src/main/java/com/facebook/internal/ImageRequest.java b/facebook-core/src/main/java/com/facebook/internal/ImageRequest.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/ImageRequest.java rename to facebook-core/src/main/java/com/facebook/internal/ImageRequest.java diff --git a/facebook/src/main/java/com/facebook/internal/ImageResponse.java b/facebook-core/src/main/java/com/facebook/internal/ImageResponse.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/ImageResponse.java rename to facebook-core/src/main/java/com/facebook/internal/ImageResponse.java diff --git a/facebook/src/main/java/com/facebook/internal/ImageResponseCache.java b/facebook-core/src/main/java/com/facebook/internal/ImageResponseCache.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/ImageResponseCache.java rename to facebook-core/src/main/java/com/facebook/internal/ImageResponseCache.java diff --git a/facebook/src/main/java/com/facebook/internal/InternalSettings.java b/facebook-core/src/main/java/com/facebook/internal/InternalSettings.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/InternalSettings.java rename to facebook-core/src/main/java/com/facebook/internal/InternalSettings.java diff --git a/facebook/src/main/java/com/facebook/internal/LockOnGetVariable.java b/facebook-core/src/main/java/com/facebook/internal/LockOnGetVariable.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/LockOnGetVariable.java rename to facebook-core/src/main/java/com/facebook/internal/LockOnGetVariable.java diff --git a/facebook/src/main/java/com/facebook/internal/Logger.java b/facebook-core/src/main/java/com/facebook/internal/Logger.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/Logger.java rename to facebook-core/src/main/java/com/facebook/internal/Logger.java diff --git a/facebook/src/main/java/com/facebook/internal/NativeAppCallAttachmentStore.java b/facebook-core/src/main/java/com/facebook/internal/NativeAppCallAttachmentStore.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/NativeAppCallAttachmentStore.java rename to facebook-core/src/main/java/com/facebook/internal/NativeAppCallAttachmentStore.java diff --git a/facebook/src/main/java/com/facebook/internal/NativeProtocol.java b/facebook-core/src/main/java/com/facebook/internal/NativeProtocol.java similarity index 95% rename from facebook/src/main/java/com/facebook/internal/NativeProtocol.java rename to facebook-core/src/main/java/com/facebook/internal/NativeProtocol.java index f1c01511c4..338e686761 100644 --- a/facebook/src/main/java/com/facebook/internal/NativeProtocol.java +++ b/facebook-core/src/main/java/com/facebook/internal/NativeProtocol.java @@ -23,15 +23,11 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ProviderInfo; import android.content.pm.ResolveInfo; -import android.content.pm.Signature; import android.database.Cursor; import android.net.Uri; -import android.os.Build; import android.os.Bundle; import android.support.annotation.Nullable; import android.text.TextUtils; @@ -46,7 +42,6 @@ import java.util.Arrays; import java.util.Collection; import java.util.HashMap; -import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -93,7 +88,9 @@ public final class NativeProtocol { public static final int PROTOCOL_VERSION_20141107 = 20141107; // Bucketed Result Intents public static final int PROTOCOL_VERSION_20141218 = 20141218; public static final int PROTOCOL_VERSION_20160327 = 20160327; + public static final int PROTOCOL_VERSION_20170213 = 20170213; public static final int PROTOCOL_VERSION_20170411 = 20170411; // express login + public static final int PROTOCOL_VERSION_20170417 = 20170417; public static final String EXTRA_PROTOCOL_VERSION = "com.facebook.platform.protocol.PROTOCOL_VERSION"; @@ -179,6 +176,8 @@ public final class NativeProtocol { // The value of ACTION_APPINVITE_DIALOG is different since that is what is on the server. public static final String ACTION_APPINVITE_DIALOG = "com.facebook.platform.action.request.APPINVITES_DIALOG"; + public static final String ACTION_CAMERA_EFFECT = + "com.facebook.platform.action.request.CAMERA_EFFECT"; // Extras supported for ACTION_LOGIN_DIALOG: public static final String EXTRA_PERMISSIONS = "com.facebook.platform.extra.PERMISSIONS"; @@ -342,9 +341,26 @@ protected String getLoginActivity() { } } - private static List facebookAppInfoList = buildFacebookAppList(); - private static Map> actionToAppInfoMap = buildActionToAppInfoMap(); - private static AtomicBoolean protocolVersionsAsyncUpdating = new AtomicBoolean(false); + private static class EffectTestAppInfo extends NativeAppInfo { + static final String EFFECT_TEST_APP_PACKAGE = "com.facebook.arstudio.player.android"; + + @Override + protected String getPackage() { + return EFFECT_TEST_APP_PACKAGE; + } + + @Override + protected String getLoginActivity() { + return null; + } + } + + private static final List facebookAppInfoList = buildFacebookAppList(); + private static final List effectCameraAppInfoList = + buildEffectCameraAppInfoList(); + private static final Map> actionToAppInfoMap = + buildActionToAppInfoMap(); + private static final AtomicBoolean protocolVersionsAsyncUpdating = new AtomicBoolean(false); private static List buildFacebookAppList() { List list = new ArrayList(); @@ -357,6 +373,15 @@ private static List buildFacebookAppList() { return list; } + private static List buildEffectCameraAppInfoList() { + List list = new ArrayList<>(buildFacebookAppList()); + + // Add the effect test app in first position to make it the default choice. + list.add(0, new EffectTestAppInfo()); + + return list; + } + private static Map> buildActionToAppInfoMap() { Map> map = new HashMap>(); @@ -370,6 +395,7 @@ private static Map> buildActionToAppInfoMap() { map.put(ACTION_APPINVITE_DIALOG, facebookAppInfoList); map.put(ACTION_MESSAGE_DIALOG, messengerAppInfoList); map.put(ACTION_OGMESSAGEPUBLISH_DIALOG, messengerAppInfoList); + map.put(ACTION_CAMERA_EFFECT, effectCameraAppInfoList); return map; } @@ -385,8 +411,8 @@ static Intent validateActivityIntent(Context context, Intent intent, NativeAppIn } if (!FacebookSignatureValidator.validateSignature( - context, - resolveInfo.activityInfo.packageName)) { + context, + resolveInfo.activityInfo.packageName)) { return null; } @@ -404,8 +430,8 @@ static Intent validateServiceIntent(Context context, Intent intent, NativeAppInf } if (!FacebookSignatureValidator.validateSignature( - context, - resolveInfo.serviceInfo.packageName)) { + context, + resolveInfo.serviceInfo.packageName)) { return null; } @@ -540,6 +566,7 @@ public static final int getLatestKnownVersion() { // Note: be sure this stays sorted in descending order; add new versions at the beginning private static final List KNOWN_PROTOCOL_VERSIONS = Arrays.asList( + PROTOCOL_VERSION_20170417, PROTOCOL_VERSION_20160327, PROTOCOL_VERSION_20141218, PROTOCOL_VERSION_20141107, diff --git a/facebook/src/main/java/com/facebook/internal/ProfileInformationCache.java b/facebook-core/src/main/java/com/facebook/internal/ProfileInformationCache.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/ProfileInformationCache.java rename to facebook-core/src/main/java/com/facebook/internal/ProfileInformationCache.java diff --git a/facebook/src/main/java/com/facebook/internal/ServerProtocol.java b/facebook-core/src/main/java/com/facebook/internal/ServerProtocol.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/ServerProtocol.java rename to facebook-core/src/main/java/com/facebook/internal/ServerProtocol.java diff --git a/facebook/src/main/java/com/facebook/internal/SmartLoginOption.java b/facebook-core/src/main/java/com/facebook/internal/SmartLoginOption.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/SmartLoginOption.java rename to facebook-core/src/main/java/com/facebook/internal/SmartLoginOption.java diff --git a/facebook/src/main/java/com/facebook/internal/UrlRedirectCache.java b/facebook-core/src/main/java/com/facebook/internal/UrlRedirectCache.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/UrlRedirectCache.java rename to facebook-core/src/main/java/com/facebook/internal/UrlRedirectCache.java diff --git a/facebook/src/main/java/com/facebook/internal/Utility.java b/facebook-core/src/main/java/com/facebook/internal/Utility.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/Utility.java rename to facebook-core/src/main/java/com/facebook/internal/Utility.java diff --git a/facebook/src/main/java/com/facebook/internal/Validate.java b/facebook-core/src/main/java/com/facebook/internal/Validate.java similarity index 98% rename from facebook/src/main/java/com/facebook/internal/Validate.java rename to facebook-core/src/main/java/com/facebook/internal/Validate.java index d2813f1660..0f51773e9e 100644 --- a/facebook/src/main/java/com/facebook/internal/Validate.java +++ b/facebook-core/src/main/java/com/facebook/internal/Validate.java @@ -31,8 +31,6 @@ import android.os.Looper; import android.util.Log; -import com.facebook.CustomTabActivity; -import com.facebook.FacebookActivity; import com.facebook.FacebookException; import com.facebook.FacebookSdk; import com.facebook.FacebookSdkNotInitializedException; @@ -214,7 +212,7 @@ public static void hasFacebookActivity(Context context, boolean shouldThrow) { ActivityInfo activityInfo = null; if (pm != null) { ComponentName componentName = - new ComponentName(context, FacebookActivity.class); + new ComponentName(context, "com.facebook.FacebookActivity"); try { activityInfo = pm.getActivityInfo(componentName, PackageManager.GET_ACTIVITIES); } catch (PackageManager.NameNotFoundException e) { @@ -260,7 +258,7 @@ public static boolean hasCustomTabRedirectActivity(Context context) { if (infos != null) { for (ResolveInfo info : infos) { ActivityInfo activityInfo = info.activityInfo; - if (activityInfo.name.equals(CustomTabActivity.class.getName()) && + if (activityInfo.name.equals("com.facebook.CustomTabActivity") && activityInfo.packageName.equals(context.getPackageName())) { hasActivity = true; } else { diff --git a/facebook/src/main/java/com/facebook/internal/WorkQueue.java b/facebook-core/src/main/java/com/facebook/internal/WorkQueue.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/WorkQueue.java rename to facebook-core/src/main/java/com/facebook/internal/WorkQueue.java diff --git a/facebook/src/main/java/com/facebook/internal/package-info.java b/facebook-core/src/main/java/com/facebook/internal/package-info.java similarity index 99% rename from facebook/src/main/java/com/facebook/internal/package-info.java rename to facebook-core/src/main/java/com/facebook/internal/package-info.java index 6c63b4a3f4..f132059ed4 100644 --- a/facebook/src/main/java/com/facebook/internal/package-info.java +++ b/facebook-core/src/main/java/com/facebook/internal/package-info.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, diff --git a/facebook/src/main/java/com/facebook/login/DefaultAudience.java b/facebook-core/src/main/java/com/facebook/login/DefaultAudience.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/DefaultAudience.java rename to facebook-core/src/main/java/com/facebook/login/DefaultAudience.java diff --git a/facebook-login/.gitignore b/facebook-login/.gitignore new file mode 100644 index 0000000000..796b96d1c4 --- /dev/null +++ b/facebook-login/.gitignore @@ -0,0 +1 @@ +/build diff --git a/facebook-login/build.gradle b/facebook-login/build.gradle new file mode 100644 index 0000000000..1fb015a253 --- /dev/null +++ b/facebook-login/build.gradle @@ -0,0 +1,48 @@ +apply plugin: 'com.android.library' + +project.group 'com.facebook.android' + +project.ext.name = 'Facebook-Login-Android-SDK' +project.ext.artifactId = "facebook-login" +project.ext.description = 'Facebook Login Android SDK' +project.ext.url = 'https://github.com/facebook/facebook-android-sdk/facebook-login' + +dependencies { + // Facebook Dependencies + compile project(':facebook-core') + compile project(':facebook-common') +} + +android { + compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION) + buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION + + defaultConfig { + minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION) + targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION) + consumerProguardFiles 'proguard-rules.pro' + vectorDrawables.useSupportLibrary = true + } + + aaptOptions { + additionalParameters "--no-version-vectors" + } + + lintOptions { + abortOnError false + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_7 + targetCompatibility JavaVersion.VERSION_1_7 + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +apply from: "${rootDir}/maven.gradle" diff --git a/facebook-login/proguard-rules.pro b/facebook-login/proguard-rules.pro new file mode 100644 index 0000000000..4ec9628db7 --- /dev/null +++ b/facebook-login/proguard-rules.pro @@ -0,0 +1,33 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +-keepclassmembers class * implements java.io.Serializable { + private static final java.io.ObjectStreamField[] serialPersistentFields; + private void writeObject(java.io.ObjectOutputStream); + private void readObject(java.io.ObjectInputStream); + java.lang.Object writeReplace(); + java.lang.Object readResolve(); +} + +-keepnames class com.facebook.FacebookActivity +-keepnames class com.facebook.CustomTabActivity + +-keep class com.facebook.login.Login diff --git a/facebook/src/main/res/values-ar/messenger_button_strings.xml b/facebook-login/src/main/AndroidManifest.xml similarity index 86% rename from facebook/src/main/res/values-ar/messenger_button_strings.xml rename to facebook-login/src/main/AndroidManifest.xml index 5051f3908a..840d40f478 100644 --- a/facebook/src/main/res/values-ar/messenger_button_strings.xml +++ b/facebook-login/src/main/AndroidManifest.xml @@ -19,6 +19,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --> - - إرسال - + + + + + + + diff --git a/facebook/src/main/java/com/facebook/login/DeviceLoginManager.java b/facebook-login/src/main/java/com/facebook/login/DeviceLoginManager.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/DeviceLoginManager.java rename to facebook-login/src/main/java/com/facebook/login/DeviceLoginManager.java diff --git a/facebook-login/src/main/java/com/facebook/login/Login.java b/facebook-login/src/main/java/com/facebook/login/Login.java new file mode 100644 index 0000000000..fcbde1f0c0 --- /dev/null +++ b/facebook-login/src/main/java/com/facebook/login/Login.java @@ -0,0 +1,5 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +package com.facebook.login; + +public class Login { } diff --git a/facebook/src/main/java/com/facebook/login/widget/DeviceLoginButton.java b/facebook-login/src/main/java/com/facebook/login/widget/DeviceLoginButton.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/widget/DeviceLoginButton.java rename to facebook-login/src/main/java/com/facebook/login/widget/DeviceLoginButton.java diff --git a/facebook/src/main/java/com/facebook/login/widget/LoginButton.java b/facebook-login/src/main/java/com/facebook/login/widget/LoginButton.java similarity index 99% rename from facebook/src/main/java/com/facebook/login/widget/LoginButton.java rename to facebook-login/src/main/java/com/facebook/login/widget/LoginButton.java index bacfa4b605..c166703c46 100644 --- a/facebook/src/main/java/com/facebook/login/widget/LoginButton.java +++ b/facebook-login/src/main/java/com/facebook/login/widget/LoginButton.java @@ -39,7 +39,6 @@ import com.facebook.FacebookCallback; import com.facebook.FacebookSdk; import com.facebook.Profile; -import com.facebook.R; import com.facebook.appevents.AppEventsLogger; import com.facebook.internal.AnalyticsEvents; import com.facebook.internal.CallbackManagerImpl; @@ -51,6 +50,7 @@ import com.facebook.login.LoginBehavior; import com.facebook.login.LoginManager; import com.facebook.login.LoginResult; +import com.facebook.login.R; import java.util.Arrays; import java.util.Collections; @@ -573,7 +573,7 @@ protected void configureButton( if (isInEditMode()) { // cannot use a drawable in edit mode, so setting the background color instead // of a background resource. - setBackgroundColor(getResources().getColor(R.color.com_facebook_blue)); + setBackgroundColor(getResources().getColor(com.facebook.common.R.color.com_facebook_blue)); // hardcoding in edit mode as getResources().getString() doesn't seem to work in // IntelliJ loginText = "Continue with Facebook"; diff --git a/facebook/src/main/java/com/facebook/login/widget/ProfilePictureView.java b/facebook-login/src/main/java/com/facebook/login/widget/ProfilePictureView.java similarity index 99% rename from facebook/src/main/java/com/facebook/login/widget/ProfilePictureView.java rename to facebook-login/src/main/java/com/facebook/login/widget/ProfilePictureView.java index d2ca537d80..e200753607 100644 --- a/facebook/src/main/java/com/facebook/login/widget/ProfilePictureView.java +++ b/facebook-login/src/main/java/com/facebook/login/widget/ProfilePictureView.java @@ -33,8 +33,8 @@ import android.widget.ImageView; import com.facebook.FacebookException; import com.facebook.LoggingBehavior; -import com.facebook.R; import com.facebook.internal.*; +import com.facebook.login.R; /** * View that displays the profile photo of a supplied profile ID, while conforming diff --git a/facebook/src/main/java/com/facebook/login/widget/ToolTipPopup.java b/facebook-login/src/main/java/com/facebook/login/widget/ToolTipPopup.java similarity index 99% rename from facebook/src/main/java/com/facebook/login/widget/ToolTipPopup.java rename to facebook-login/src/main/java/com/facebook/login/widget/ToolTipPopup.java index 0179608206..2d00528f36 100644 --- a/facebook/src/main/java/com/facebook/login/widget/ToolTipPopup.java +++ b/facebook-login/src/main/java/com/facebook/login/widget/ToolTipPopup.java @@ -30,7 +30,8 @@ import android.widget.ImageView; import android.widget.PopupWindow; import android.widget.TextView; -import com.facebook.R; + +import com.facebook.login.R; import java.lang.ref.WeakReference; @@ -95,7 +96,7 @@ public ToolTipPopup(String text, View anchor) { mAnchorViewRef = new WeakReference(anchor); mContext = anchor.getContext(); } - + /** * Sets the {@link Style} of this tool tip. * @param mStyle the style for the tool tip diff --git a/facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_black_background.9.png b/facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_black_background.9.png new file mode 100644 index 0000000000..8dbcf03a7b Binary files /dev/null and b/facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_black_background.9.png differ diff --git a/facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_black_bottomnub.png b/facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_black_bottomnub.png similarity index 100% rename from facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_black_bottomnub.png rename to facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_black_bottomnub.png diff --git a/facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_black_topnub.png b/facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_black_topnub.png similarity index 100% rename from facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_black_topnub.png rename to facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_black_topnub.png diff --git a/facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_black_xout.png b/facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_black_xout.png new file mode 100644 index 0000000000..5226a21e38 Binary files /dev/null and b/facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_black_xout.png differ diff --git a/facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_background.9.png b/facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_background.9.png new file mode 100644 index 0000000000..ce8d5fcb4e Binary files /dev/null and b/facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_background.9.png differ diff --git a/facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_bottomnub.png b/facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_bottomnub.png new file mode 100644 index 0000000000..072a967f71 Binary files /dev/null and b/facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_bottomnub.png differ diff --git a/facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_topnub.png b/facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_topnub.png new file mode 100644 index 0000000000..e8d4f4e54e Binary files /dev/null and b/facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_topnub.png differ diff --git a/facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_xout.png b/facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_xout.png new file mode 100644 index 0000000000..6f39f036a9 Binary files /dev/null and b/facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_xout.png differ diff --git a/facebook-login/src/main/res/drawable-mdpi/com_facebook_profile_picture_blank_portrait.png b/facebook-login/src/main/res/drawable-mdpi/com_facebook_profile_picture_blank_portrait.png new file mode 100644 index 0000000000..d0f4b1e014 Binary files /dev/null and b/facebook-login/src/main/res/drawable-mdpi/com_facebook_profile_picture_blank_portrait.png differ diff --git a/facebook-login/src/main/res/drawable-mdpi/com_facebook_profile_picture_blank_square.png b/facebook-login/src/main/res/drawable-mdpi/com_facebook_profile_picture_blank_square.png new file mode 100644 index 0000000000..a01e0ba5c8 Binary files /dev/null and b/facebook-login/src/main/res/drawable-mdpi/com_facebook_profile_picture_blank_square.png differ diff --git a/facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_black_background.9.png b/facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_black_background.9.png new file mode 100644 index 0000000000..fd00d7e449 Binary files /dev/null and b/facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_black_background.9.png differ diff --git a/facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_black_bottomnub.png b/facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_black_bottomnub.png similarity index 100% rename from facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_black_bottomnub.png rename to facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_black_bottomnub.png diff --git a/facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_black_topnub.png b/facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_black_topnub.png similarity index 100% rename from facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_black_topnub.png rename to facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_black_topnub.png diff --git a/facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_black_xout.png b/facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_black_xout.png new file mode 100644 index 0000000000..ba4e694639 Binary files /dev/null and b/facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_black_xout.png differ diff --git a/facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_background.9.png b/facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_background.9.png new file mode 100644 index 0000000000..3939bbd267 Binary files /dev/null and b/facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_background.9.png differ diff --git a/facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_bottomnub.png b/facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_bottomnub.png similarity index 100% rename from facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_bottomnub.png rename to facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_bottomnub.png diff --git a/facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_topnub.png b/facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_topnub.png new file mode 100644 index 0000000000..95d84ce605 Binary files /dev/null and b/facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_topnub.png differ diff --git a/facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_xout.png b/facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_xout.png new file mode 100644 index 0000000000..430a907482 Binary files /dev/null and b/facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_xout.png differ diff --git a/facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_background.9.png b/facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_background.9.png similarity index 100% rename from facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_background.9.png rename to facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_background.9.png diff --git a/facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_bottomnub.png b/facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_bottomnub.png similarity index 100% rename from facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_bottomnub.png rename to facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_bottomnub.png diff --git a/facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_topnub.png b/facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_topnub.png new file mode 100644 index 0000000000..de8d255175 Binary files /dev/null and b/facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_topnub.png differ diff --git a/facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_xout.png b/facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_xout.png new file mode 100644 index 0000000000..e4cce17084 Binary files /dev/null and b/facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_xout.png differ diff --git a/facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_background.9.png b/facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_background.9.png new file mode 100644 index 0000000000..44fa73ae0a Binary files /dev/null and b/facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_background.9.png differ diff --git a/facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_bottomnub.png b/facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_bottomnub.png new file mode 100644 index 0000000000..47bf2c0c12 Binary files /dev/null and b/facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_bottomnub.png differ diff --git a/facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_topnub.png b/facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_topnub.png new file mode 100644 index 0000000000..ca5281e8a5 Binary files /dev/null and b/facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_topnub.png differ diff --git a/facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_xout.png b/facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_xout.png new file mode 100644 index 0000000000..bbf51a70a2 Binary files /dev/null and b/facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_xout.png differ diff --git a/facebook/src/main/res/drawable/com_facebook_button_login_background.xml b/facebook-login/src/main/res/drawable/com_facebook_button_login_background.xml similarity index 100% rename from facebook/src/main/res/drawable/com_facebook_button_login_background.xml rename to facebook-login/src/main/res/drawable/com_facebook_button_login_background.xml diff --git a/facebook/src/main/res/drawable/com_facebook_button_login_logo.xml b/facebook-login/src/main/res/drawable/com_facebook_button_login_logo.xml similarity index 100% rename from facebook/src/main/res/drawable/com_facebook_button_login_logo.xml rename to facebook-login/src/main/res/drawable/com_facebook_button_login_logo.xml diff --git a/facebook/src/main/res/drawable/com_facebook_button_login_silver_background.xml b/facebook-login/src/main/res/drawable/com_facebook_button_login_silver_background.xml similarity index 100% rename from facebook/src/main/res/drawable/com_facebook_button_login_silver_background.xml rename to facebook-login/src/main/res/drawable/com_facebook_button_login_silver_background.xml diff --git a/facebook/src/main/res/layout/com_facebook_tooltip_bubble.xml b/facebook-login/src/main/res/layout/com_facebook_tooltip_bubble.xml similarity index 100% rename from facebook/src/main/res/layout/com_facebook_tooltip_bubble.xml rename to facebook-login/src/main/res/layout/com_facebook_tooltip_bubble.xml diff --git a/facebook-login/src/main/res/values-af/strings.xml b/facebook-login/src/main/res/values-af/strings.xml new file mode 100644 index 0000000000..32cc264729 --- /dev/null +++ b/facebook-login/src/main/res/values-af/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Hou van + Hou van + Teken uit + Teken aan + Meld aan met Facebook + Gaan voort met Facebook + Aangemeld as: %1$s + Aangemeld met Facebook + Teken uit + Kanselleer + Laai tans … + AndroidManifest-fout + WebView-aanmelding vereis INTERNET-toestemming + Jy is in beheer – kies watter inligting jy met toepassings wil deel. + Onvoorsiene fout terwyl die prent afgelaai is. + Deel + Stuur + Besoek <b>facebook.com/device</b> en voer die kode wat hierbo gewys word, in. + Maak die Facebook-toepassing op jou mobiele toestel oop en soek kennisgewings om jou rekening te koppel. + - OF - + Bevestig aanmelding + Gaan voort as %1$s + Nie jy nie? + diff --git a/facebook-login/src/main/res/values-ar/strings.xml b/facebook-login/src/main/res/values-ar/strings.xml new file mode 100644 index 0000000000..3389c2cb75 --- /dev/null +++ b/facebook-login/src/main/res/values-ar/strings.xml @@ -0,0 +1,30 @@ + + + + + + + أعجبني + أعجبك + تسجيل الخروج + تسجيل الدخول + تسجيل الدخول بحساب فيسبوك + متابعة بحساب فيسبوك + تم تسجيل الدخول باسم: %1$s + تم تسجيل الدخول باستخدام حساب فيسبوك + تسجيل الخروج + إلغاء + جارٍ التحميل… + خطأ AndroidManifest + يتطلب تسجيل دخول WebView الحصول إلى إذن INTERNET + أنت المتحكم في الأمر - يمكنك اختيار المعلومات التي تود مشاركتها مع التطبيقات. + حدث خطأ غير متوقع أثناء تنزيل صورة. + مشاركة + إرسال + تفضل بزيارة <b>facebook.com/device</b> وإدخال الرمز الموضح أعلاه. + لربط حسابك، افتح تطبيق فيسبوك على جهازك المحمول وراجع الإشعارات. + - أو - + تأكيد تسجيل الدخول + متابعة باسم %1$s + لست أنت؟ + diff --git a/facebook-login/src/main/res/values-bn/strings.xml b/facebook-login/src/main/res/values-bn/strings.xml new file mode 100644 index 0000000000..b6537c710f --- /dev/null +++ b/facebook-login/src/main/res/values-bn/strings.xml @@ -0,0 +1,30 @@ + + + + + + + লাইক + পছন্দ করেছে + লগ আউট করুন + লগ ইন করুন + Facebook দিয়ে লগইন করুন + Facebook এর সাথে চালিয়ে যান + %1$s হিসাবে লগ ইন করা হয়েছে। + Facebook ব্যবহার করার মাধ্যমে লগ ইন করা হয়েছে + লগ আউট করুন + বাতিল করুন + লোড হচ্ছে… + AndroidManifest ত্রুটি + WebView লগ ইনের ইন্টারনেটের অনুমতি প্রয়োজন + আপনার নিয়ন্ত্রণ রয়েছে - আপনি অ্যাপগুলির সাথে কোন তথ্য শেয়ার করতে চান সেটি বেছে নিন। + একটি ছবি ডাউনলোড করার সময় অপ্রত্যাশিত ত্রুটি ঘটেছে৷ + শেয়ার করুন + পাঠান + <b>facebook.com/device</b> দেখুন এবং উপরে দেখানো কোডটিকে প্রবেশ করান৷ + আপনার অ্যাকাউন্ট সংযুক্ত করতে, আপনার মোবাইল ডিভাইসে Facebook অ্যাপ খুলুন এবং বিজ্ঞপ্তিগুলির জন্য পরীক্ষা করুন। + - বা - + লগ ইন নিশ্চিত করুন + %1$s হিসাবে চালিয়ে যান + আপনি নন? + diff --git a/facebook-login/src/main/res/values-cs/strings.xml b/facebook-login/src/main/res/values-cs/strings.xml new file mode 100644 index 0000000000..b07e05acc3 --- /dev/null +++ b/facebook-login/src/main/res/values-cs/strings.xml @@ -0,0 +1,30 @@ + + + + + + + To se mi líbí + To se mi už líbí + Odhlásit se + Přihlášení + Přihlásit se přes Facebook + Pokračovat přes Facebook + Přihlášen(a) jako: %1$s + Přihlášení přes Facebook + Odhlásit se + Zrušit + Načítání... + Chyba AndroidManifest + WebView vyžaduje oprávnění pro INTERNET + Je to jen na vás – nastavte si, které informace chcete s aplikacemi sdílet. + Neočekávaná chyba při stahování obrázku. + Sdílet + Odeslat + Přejděte na <b>facebook.com/device</b> a zadejte nahoře uvedený kód. + Pokud chcete připojit svůj účet, spusťte aplikaci Facebook ve svém mobilním zařízení a zkontrolujte upozornění. + - NEBO - + Potvrďte přihlášení + Pokračovat jako %1$s + Nejste to vy? + diff --git a/facebook-login/src/main/res/values-da/strings.xml b/facebook-login/src/main/res/values-da/strings.xml new file mode 100644 index 0000000000..8f987fe029 --- /dev/null +++ b/facebook-login/src/main/res/values-da/strings.xml @@ -0,0 +1,29 @@ + + + + + + + Synes godt om + Synes godt om + Log af + Log på + Log på med Facebook + Fortsæt med Facebook + Logget på som %1$s + Logget på med Facebook + Log af + Annuller + Indlæser … + Fejl i AndroidManifest + WebView-login kræver INTERNET-tilladelse + Du har kontrollen – Vælg, hvilke informationer du vil dele med apps. + Uventet fejl under download af billede. + Del + Gå til <b>facebook.com/device</b> og indtast koden, som er vist ovenfor. + For at tilslutte din konto skal du åbne Facebook-appen på din mobilenhed og se efter, om der er notifikationer. + - ELLER - + Bekræft login + Fortsæt som %1$s + Ikke dig? + diff --git a/facebook-login/src/main/res/values-de/strings.xml b/facebook-login/src/main/res/values-de/strings.xml new file mode 100644 index 0000000000..222c68ff96 --- /dev/null +++ b/facebook-login/src/main/res/values-de/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Gefällt mir + Gefällt dir + Abmelden + Melde dich an + Mit Facebook anmelden + Weiter mit Facebook + Angemeldet als: %1$s + Mit Facebook angemeldet + Abmelden + Abbrechen + Wird geladen ... + AndroidOffensichtlicher Fehler + WebView-Anmeldung erfordert INTERNET-Berechtigung + Du bestimmst, welche Informationen du mit Apps teilen möchtest. + Unerwarteter Fehler beim Herunterladen eines Bildes. + Teilen + Senden + Gehe zu <b>facebook.com/device</b> und gib den oben angezeigten Code ein. + Öffne die Facebook-App auf deinem Mobilgerät, um dich mit deinem Konto zu verbinden und nach Benachrichtigungen zu suchen. + - ODER - + Anmeldung bestätigen + Weiter als %1$s + Das bist du nicht? + diff --git a/facebook-login/src/main/res/values-el/strings.xml b/facebook-login/src/main/res/values-el/strings.xml new file mode 100644 index 0000000000..b68cf0ab32 --- /dev/null +++ b/facebook-login/src/main/res/values-el/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Μου αρέσει! + Σας αρέσει + Αποσύνδεση + Σύνδεση + Συνδεθείτε μέσω Facebook + Συνέχεια με το Facebook + Έχετε συνδεθεί ως: %1$s + Έγινε σύνδεση μέσω Facebook + Αποσύνδεση + Ακύρωση + Φόρτωση... + Σφάλμα AndroidManifest + Για σύνδεση στην εφαρμογή WebView απαιτείται άδεια INTERNET + Εσείς έχετε τον έλεγχο - επιλέξτε ποιες πληροφορίες θέλετε να κοινοποιείτε στις εφαρμογές. + Παρουσιάστηκε μη αναμενόμενο σφάλμα κατά τη λήψη μιας εικόνας. + Κοινοποιήστε + Αποστολή + Πηγαίνετε στη διεύθυνση <b>facebook.com/device</b> και εισαγάγετε τον παραπάνω κωδικό. + Για να συνδέσετε το λογαριασμό σας, ανοίξτε την εφαρμογή Facebook στη φορητή συσκευή σας και ελέγξτε για ειδοποιήσεις. + - Ή - + Επιβεβαίωση σύνδεσης + Συνέχεια ως %1$s + Δεν είστε εσείς; + diff --git a/facebook-login/src/main/res/values-en-rGB/strings.xml b/facebook-login/src/main/res/values-en-rGB/strings.xml new file mode 100644 index 0000000000..22bbe4865c --- /dev/null +++ b/facebook-login/src/main/res/values-en-rGB/strings.xml @@ -0,0 +1,11 @@ + + + + + + + Loading… + AndroidManifest error + WebView login requires Internet permission + You\'re in control – choose what information you want to share with apps. + diff --git a/facebook-login/src/main/res/values-es-rES/strings.xml b/facebook-login/src/main/res/values-es-rES/strings.xml new file mode 100644 index 0000000000..d9faad9f01 --- /dev/null +++ b/facebook-login/src/main/res/values-es-rES/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Me gusta + Te gusta + Salir + Entrar + Inicia sesión con Facebook + Continuar con Facebook + Sesión iniciada como: %1$s + Has iniciado sesión con Facebook + Salir + Cancelar + Cargando… + Error de AndroidManifest + El inicio de sesión en WebView requiere permisos de INTERNET + Tú decides qué información quieres compartir con las aplicaciones. + Se ha producido un error inesperado al descargar una imagen. + Compartir + Enviar + Visita <b>facebook.com/device</b> e introduce el código que se muestra más arriba. + Para conectar tu cuenta, abre la aplicación de Facebook en tu dispositivo móvil y comprueba las notificaciones. + - O - + Confirmar inicio de sesión + Continuar como %1$s + ¿No eres tú? + diff --git a/facebook-login/src/main/res/values-es/strings.xml b/facebook-login/src/main/res/values-es/strings.xml new file mode 100644 index 0000000000..e8e0019856 --- /dev/null +++ b/facebook-login/src/main/res/values-es/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Me gusta + Te gusta + Salir + Entrar + Iniciar sesión con Facebook + Continuar con Facebook + Sesión iniciada como: %1$s + Iniciaste sesión con Facebook + Salir + Cancelar + Cargando... + Error de AndroidManifest + El inicio de sesión de WebView requiere permisos de INTERNET + Tú decides qué información quieres compartir con las aplicaciones. + Se produjo un error inesperado al descargar una imagen. + Compartir + Enviar + Ve a <b>facebook.com/device</b> e ingresa el código que se muestra arriba. + Para conectar tu cuenta, abre la aplicación de Facebook en tu dispositivo móvil y comprueba las notificaciones. + o + Confirmar inicio de sesión + Continuar como %1$s + ¿No eres tú? + diff --git a/facebook-login/src/main/res/values-fi/strings.xml b/facebook-login/src/main/res/values-fi/strings.xml new file mode 100644 index 0000000000..f2bffab231 --- /dev/null +++ b/facebook-login/src/main/res/values-fi/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Tykkää + Tykätty + Kirjaudu ulos + Kirjaudu sisään + Kirjaudu Facebook-tunnuksilla + Jatka Facebookissa + Kirjautunut sisään nimellä %1$s + Kirjauduttu sisään Facebook-tunnuksilla + Kirjaudu ulos + Peruuta + Ladataan... + AndroidManifest-virhe + WebView-sisäänkirjautuminen edellyttää Internet-lupaa + Sinä päätät - valitse mitkä tiedot haluat jakaa sovelluksille + Kuvaa ladattaessa tapahtui yllättävä virhe. + Jaa + Lähetä + Siirry osoitteeseen <b>facebook.com/device</b> ja anna oheinen koodi. + Liitä tilisi avaamalla Facebook-sovellus matkapuhelimellasi ja tarkistamalla ilmoitukset. + - TAI - + Vahvista sisäänkirjautuminen + Jatka nimellä %1$s + Etkö ole tämä henkilö? + diff --git a/facebook-login/src/main/res/values-fr/strings.xml b/facebook-login/src/main/res/values-fr/strings.xml new file mode 100644 index 0000000000..5c84a76dfb --- /dev/null +++ b/facebook-login/src/main/res/values-fr/strings.xml @@ -0,0 +1,30 @@ + + + + + + + J’aime + J’aime déjà + Déconnexion + Connectez-vous + Se connecter avec Facebook + Continuer avec Facebook + Connecté(e) en tant que : %1$s + Connecté(e) avec Facebook + Déconnexion + Annuler + Chargement... + Erreur AndroidManifest + La connexion à WebView nécessite une autorisation INTERNET + Vous avez le contrôle - choisissez les informations que vous voulez partager avec les apps. + Une erreur inattendue s’est produite lors du téléchargement d’une image. + Publier + Envoyer + Consultez <b>facebook.com/device</b> et entrez le code affiché ci-dessus. + Pour associer votre compte, ouvrez l’app Facebook sur votre appareil mobile et vérifiez les notifications. + - OU - + Confirmer la connexion + Continuer en tant que %1$s + Ce n’est pas vous ? + diff --git a/facebook-login/src/main/res/values-gu/strings.xml b/facebook-login/src/main/res/values-gu/strings.xml new file mode 100644 index 0000000000..c91af5459c --- /dev/null +++ b/facebook-login/src/main/res/values-gu/strings.xml @@ -0,0 +1,30 @@ + + + + + + + પસંદ કરો + ગમ્યું + લૉગ આઉટ કરો + લૉગ ઇન કરો + Facebook થી લૉગિન કરો + Facebook સાથે ચાલુ રાખો + %1$s: તરીકે લૉગ ઇન છે + તમે Facebook નો ઉપયોગ કરીને લોગ ઇન કર્યું છે + લૉગ આઉટ કરો + રદ કરો + લોડ થઈ રહ્યું છે… + AndroidManifest ભૂલ + WebView લૉગિનને ઇન્ટરનેટ પરવાનગીની જરૂર છે + તમે નિયંત્રણમાં છો - તમે એપ્લિકેશન્સ સાથે શું માહિતી શેર કરવા માંગો પસંદ કરો. + છબી ડાઉનલોડ કરતી વખતે એક અનપેક્ષિત ભૂલ આવી. + શેર કરો + મોકલો + <b>facebook.com/device</b&gt ની મુલકાત લો; અને ઉપર આપેલો કોડ દાખલ કરો. + તમારા એકાઉન્ટ સાથે કનેક્ટ કરવા માટે, તમારા મોબાઇલ ઉપકરણ પર Facebook એપ્લિકેશન ખોલો અને સૂચનાઓ માટે તપાસો. + - અથવા - + લૉગિનની પુષ્ટિ કરો + %1$s તરીકે ચાલુ રાખો + તમે નથી? + diff --git a/facebook-login/src/main/res/values-hi/strings.xml b/facebook-login/src/main/res/values-hi/strings.xml new file mode 100644 index 0000000000..65b19888cc --- /dev/null +++ b/facebook-login/src/main/res/values-hi/strings.xml @@ -0,0 +1,30 @@ + + + + + + + पसंद करें + पसंद किया + लॉग आउट करें + लॉग इन + Facebook से लॉग इन करें + Facebook के साथ जारी रखें + इस रूप में लॉग इन हैं: %1$s + Facebook का उपयोग करके लॉग इन किया है + लॉग आउट करें + रद्द करें + लोड हो रहा है... + AndroidManifest गलती + WebView लॉग इन के लिए इंटरनेट अनुमति आवश्यक है + नियंत्रण आपके पास है - चुनें कि आप एप्लिकेशन के साथ कौन सी जानकारी साझा करना चाहते हैं. + चित्र डाउनलोड करते समय अनपेक्षित त्रुटि हुई. + साझा करें + भेजें + <b>facebook.com/device</b> पर विज़िट करें और ऊपर दिखाया गया कोड डालें. + अपने खाते से कनेक्ट करने के लिए, अपने मोबाइल डिवाइस पर Facebook एप्लिकेशन खोलें और सूचनाएँ जाँचें. + - या - + लॉग इन कन्फ़र्म करें + %1$s के रूप में जारी रखें + आप नहीं हैं? + diff --git a/facebook-login/src/main/res/values-hr/strings.xml b/facebook-login/src/main/res/values-hr/strings.xml new file mode 100644 index 0000000000..016cdf9479 --- /dev/null +++ b/facebook-login/src/main/res/values-hr/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Sviđa mi se + Označeno sa \"sviđa mi se\" + Odjava + Prijava + Prijavi se putem Facebooka + Nastavak uz Facebook + Prijavljeni ste kao: %1$s + Prijavljeni ste putem Facebooka + Odjava + Odustani + Učitavanje... + Pogreška AndroidManifest + Prijava WebView zahtijeva dopuštenje za INTERNET + Vi odlučujete – odaberite koje informacije želite podijeliti s aplikacijama. + Neočekivana pogreška prilikom preuzimanja slike. + Podijeli + Pošalji + Posjetitw <b>facebook.com/device</b> i unesite gore prikazani kôd. + Za povezivanje svog računa otvorite aplikaciju Facebook na mobilnom uređaju i pročitajte obavijesti. + - ILI - + Potvrdi prijavu + Nastavite kao %1$s + Ovo niste vi? + diff --git a/facebook-login/src/main/res/values-hu/strings.xml b/facebook-login/src/main/res/values-hu/strings.xml new file mode 100644 index 0000000000..6dc9c20f22 --- /dev/null +++ b/facebook-login/src/main/res/values-hu/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Tetszik + Kedvelt + Kijelentkezés + Belépés + Bejelentkezés Facebookkal + Folytatás a Facebookkal + Bejelentkezve %1$s néven + Bejelentkezve a Facebook használatával + Kijelentkezés + Mégsem + Betöltés… + AndroidManifest hiba + A WebView-bejelentkezéshez „INTERNET” jogosultság szükséges. + Te irányítasz – válaszd ki, milyen adatokat szeretnél megosztani az alkalmazásokkal. + Váratlan hiba történt a kép letöltésekor. + Megosztás + Küldés + Keresd fel a <b>facebook.com/device</b> címet, és írd be a fent megjelenített kódot. + A fiók hozzákapcsolásához nyisd meg a mobilkészülékeden a Facebook alkalmazást, és nézd meg az értesítéseket. + - VAGY - + Bejelentkezés megerősítése + Folytatás mint %1$s + Nem te vagy az? + diff --git a/facebook-login/src/main/res/values-in/strings.xml b/facebook-login/src/main/res/values-in/strings.xml new file mode 100644 index 0000000000..04ea86a53a --- /dev/null +++ b/facebook-login/src/main/res/values-in/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Suka + Suka + Keluar + Masuk + Masuk dengan Facebook + Lanjutkan dengan Facebook + Masuk sebagai: %1$s + Masuk menggunakan Facebook + Keluar + Batalkan + Memuat… + Terjadi Kesalahan AndroidManifest + Masuk Tampilan Web memerlukan izin INTERNET + Anda memegang kendali - pilih info apa yang ingin Anda bagikan dengan aplikasi. + Kesalahan tak terduga ketika mengunduh gambar. + Bagikan + Kirim + Kunjungi <b>facebook.com/device</b> dan masukkan kode yang ditampilkan di bawah ini. + Untuk menghubungkan akun Anda, buka aplikasi Facebook di perangkat seluler Anda dan lihat pemberitahuan. + - ATAU - + Konfirmasikan Masuk + Lanjutkan sebagai %1$s + Bukan Anda? + diff --git a/facebook-login/src/main/res/values-it/strings.xml b/facebook-login/src/main/res/values-it/strings.xml new file mode 100644 index 0000000000..06e864c95c --- /dev/null +++ b/facebook-login/src/main/res/values-it/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Mi piace + Ti piace + Esci + Accedi + Accedi con Facebook + Continua con Facebook + Accesso effettuato come %1$s + Accesso effettuato tramite Facebook + Esci + Annulla + Caricamento in corso... + Errore AndroidManifest + L\'accesso alla visualizzazione Web richiede le autorizzazioni Internet + Il controllo è nelle tue mani: scegli quali informazioni condividere con le app. + Errore imprevisto durante il download dell\'immagine. + Condividi + Invia + Visita <b>facebook.com/device</b> e inserisci il codice mostrato qui sotto. + Per connettere il tuo account, apri l\'app Facebook dal tuo dispositivo mobile e controlla le notifiche. + - oppure - + Conferma accesso + Continua come %1$s + Non sei tu? + diff --git a/facebook-login/src/main/res/values-iw/strings.xml b/facebook-login/src/main/res/values-iw/strings.xml new file mode 100644 index 0000000000..f04525a690 --- /dev/null +++ b/facebook-login/src/main/res/values-iw/strings.xml @@ -0,0 +1,30 @@ + + + + + + + אהבתי + אהבתי + התנתק/י + התחבר + התחברות באמצעות פייסבוק + המשך/המשיכי עם פייסבוק + מחובר/ת בתור: %1$s + מחובר/ת כמשתמש בפייסבוק + התנתק/י + בטל + טוען... + שגיאת AndroidManifest + התחברות WebView דורשת הרשאת אינטרנט + את/ה בשליטה - בחר/י אילו פרטים ברצונך לשתף עם אפליקציות. + שגיאה לא צפויה במהלך הורדת תמונה. + שתף/שתפי + שלח/י + יש לבקר בכתובת facebook.com/device</b&gt ולהזין את הקוד המוצג למעלה + כדי לחבר את חשבונך, יש לפתוח את אפליקציית פייסבוק במכשיר הנייד ולבדוק אם יש התראות. + - או - + אשר/י את ההתחברות + המשך/המשיכי בתור %1$s + לא את/ה? + diff --git a/facebook-login/src/main/res/values-ja/strings.xml b/facebook-login/src/main/res/values-ja/strings.xml new file mode 100644 index 0000000000..c4ff47cc57 --- /dev/null +++ b/facebook-login/src/main/res/values-ja/strings.xml @@ -0,0 +1,30 @@ + + + + + + + いいね! + 「いいね!」しました + ログアウト + ログイン + Facebookでログイン + Facebookでログイン + %1$sとしてログイン中 + Facebookでログイン中 + ログアウト + キャンセル + 読み込み中です… + AndroidManifestエラー + WebViewにログインするには、インターネットへのアクセスが必要です + アプリと共有する情報をコントロールすることができます。 + 画像のダウンロードで何らかのエラーが発生しました。 + シェアする + 送信 + <b>facebook.com/device</b>にアクセスして、上のコードを入力してください。 + アカウントをリンクするには、モバイル機器でFacebookアプリを開いて、お知らせをご確認ください。 + - または - + ログインを実行 + %1$sとしてログイン + 別のアカウントでログイン + diff --git a/facebook-login/src/main/res/values-kn/strings.xml b/facebook-login/src/main/res/values-kn/strings.xml new file mode 100644 index 0000000000..d6ac550b0f --- /dev/null +++ b/facebook-login/src/main/res/values-kn/strings.xml @@ -0,0 +1,30 @@ + + + + + + + ಇಷ್ಟ + ಇಷ್ಟಪಟ್ಟಿದ್ದಾರೆ + ಲಾಗ್ ಔಟ್ + ಲಾಗ್ ಇನ್ + Facebook ನೊಂದಿಗೆ ಲಾಗ್ ಇನ್ ಮಾಡಿ + Facebook ನೊಂದಿಗೆ ಮುಂದುವರಿಸಿ + %1$s ಎಂದು ಲಾಗಿನ್ ಮಾಡಲಾಗಿದೆ + Facebook ಬಳಸಿ ಲಾಗಿನ್ ಮಾಡಲಾಗಿದೆ + ಲಾಗ್ ಔಟ್ + ರದ್ದುಮಾಡು + ಲೋಡ್ ಆಗುತ್ತಿದೆ... + Android ಮ್ಯಾನಿಫೆಸ್ಟ್ ದೋಷ + ವೆಬ್ ವೀಕ್ಷಣೆ ಲಾಗಿನ್‌ಗೆ ಇಂಟರ್ನೆಟ್ ಅನುಮತಿಯ ಅಗತ್ಯವಿದೆ + ನೀವು ನಿಯಂತ್ರಣದಲ್ಲಿದ್ದಿರಿ- ಅಪ್ಲಿಕೇಶನ್‌ಗಳೊಂದಿಗೆ ನೀವು ಯಾವ ಮಾಹಿತಿಯನ್ನು ಹಂಚಿಕೊಳ್ಳಬೇಕೆಂದು ಆಯ್ಕೆಮಾಡಿ. + ಚಿತ್ರವನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡುವಾಗ ಅನಿರೀಕ್ಷಿತ ದೋಷ. + ಹಂಚಿರಿ + ಕಳುಹಿಸಿ + <b>facebook.com/device</b> ಗೆ ಭೇಟಿ ನೀಡಿ ಮತ್ತು ಮೇಲೆ ತೋರಿಸಿದ ಕೋಡ್ ಅನ್ನು ನಮೂದಿಸಿ. + ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಸಂಪರ್ಕಿಸಲು, ನಿಮ್ಮ ಮೊಬೈಲ್ ಸಾಧನದಲ್ಲಿ Facebook ಅಪ್ಲಿಕೇಶನ್ ತೆರೆಯಿರಿ ಮತ್ತು ಅಧಿಸೂಚನೆಗಳಿಗಾಗಿ ಪರಿಶೀಲಿಸಿ. + - ಅಥವಾ - + ಲಾಗಿನ್ ಖಚಿತಪಡಿಸಿ + %1$s ಎಂದು ಮುಂದುವರಿಸಿ + ನೀವಲ್ಲವೇ? + diff --git a/facebook-login/src/main/res/values-ko/strings.xml b/facebook-login/src/main/res/values-ko/strings.xml new file mode 100644 index 0000000000..1e2b9b85b1 --- /dev/null +++ b/facebook-login/src/main/res/values-ko/strings.xml @@ -0,0 +1,30 @@ + + + + + + + 좋아요 + 좋아요 + 로그아웃 + 로그인 + Facebook으로 로그인 + Facebook으로 계속하기 + 로그인 사용자: %1$s + Facebook을 사용하여 로그인함 + 로그아웃 + 취소 + 읽어들이는 중... + AndroidManifest 오류 + WebView 로그인에 인터넷 권한이 필요합니다 + 앱과 공유할 정보를 자유롭게 선택할 수 있습니다. + 이미지를 다운로드하는 중 예기치 않은 오류가 발생했습니다. + 공유하기 + 보내기 + <b>facebook.com/device</b>에 방문하여 위 코드를 입력하세요. + 계정에 연결하려면 모바일 기기에서 Facebook 앱을 열고 알림을 확인하세요. + - 또는 - + 로그인 확인 + %1$s님으로 계속 + 회원님이 아닌가요? + diff --git a/facebook-login/src/main/res/values-ml/strings.xml b/facebook-login/src/main/res/values-ml/strings.xml new file mode 100644 index 0000000000..17c55e1ea1 --- /dev/null +++ b/facebook-login/src/main/res/values-ml/strings.xml @@ -0,0 +1,30 @@ + + + + + + + ലൈക്കുചെയ്യുക + ലൈക്കുചെയ്തു + ലോഗൗട്ട് ചെയ്യുക + ലോഗിന് ചെയ്യുക + Facebook ഉപയോഗിച്ച് ലോഗിൻ ചെയ്യുക + Facebook ഉപയോഗിച്ച് തുടരുക + എന്നയാളായി ലോഗ് ഇൻ ചെയ്‌തു: %1$s + Facebook ഉപയോഗിച്ച് ലോഗിൻ ചെയ്‌തു + ലോഗൗട്ട് ചെയ്യുക + റദ്ദാക്കുക + ലോഡ് ചെയ്യുന്നു… + AndroidManifest പിശക് + WebView ലോഗിൻ ചെയ്യാൻ ഇന്റർനെറ്റ് അനുമതി ആവശ്യമാണ് + നിങ്ങൾ നിയന്ത്രണത്തിലാണ് - ആപ്പുകൾ ഉപയോഗിച്ച് നിങ്ങൾക്ക് എന്ത് വിവരമാണ് പങ്കിടേണ്ടതെന്ന് തിരഞ്ഞെടുക്കുക. + ഒരു ചിത്രം ഡൗൺലോഡുചെയ്യുമ്പോൾ അജ്ഞാതമായ പിശക് സംഭവിച്ചു. + പങ്കിടുക + അയയ്ക്കുക + <b>facebook.com/device</b> സന്ദർശിച്ച് മുകളിൽ കാണിച്ചിരിക്കുന്ന കോഡ് നൽകുക. + നിങ്ങളുടെ അക്കൗണ്ട് കണക്‌റ്റ്ചെയ്യാൻ, നിങ്ങളുടെ മൊബൈൽ ഉപകരണത്തിലെ Facebook ആപ്പ് തുറന്ന് അറിയിപ്പുകൾ പരിശോധിക്കുക. + - അല്ലെങ്കിൽ - + ലോഗിൻ സ്ഥിരീകരിക്കുക + %1$s എന്നയാളായി തുടരുക + നിങ്ങള്‍ അല്ലേ? + diff --git a/facebook-login/src/main/res/values-mr/strings.xml b/facebook-login/src/main/res/values-mr/strings.xml new file mode 100644 index 0000000000..d01142746f --- /dev/null +++ b/facebook-login/src/main/res/values-mr/strings.xml @@ -0,0 +1,30 @@ + + + + + + + आवडले + पसंत केले + लॉग आउट करा + लॉग इन करा + Facebook सह लॉग इन करा + Facebook सह चालू ठेवा + %1$s म्हणून लॉग इन केले + Facebook वापरून लॉग इन केले + लॉग आउट करा + रद्द करा + लोड करत आहे… + AndroidManifest त्रुटी + WebView लॉग इन ला इंटरनेट परवानगीची आवश्यकता आहे + तुम्ही नियंत्रणात आहात - तुम्ही अॅपसह कोणती माहिती सामायिक करू इच्छिता ते निवडा. + प्रतिमा डाउनलोड करत असताना अनपेक्षित त्रुटी आली. + शेअर करा + पाठवा + <b>facebook.com/device</b> भेट द्या आणि वरील कोड प्रविष्ट करा. + तुमचे खाते कनेक्ट करण्यासाठी, तुमच्या मोबाईल उपकरणावर Facebook अॅप उघडा आणि सूचना तपासा. + - किंवा - + लॉग इन पुष्टी करा + %1$s म्हणून चालू ठेवा + आपण नाही? + diff --git a/facebook-login/src/main/res/values-ms/strings.xml b/facebook-login/src/main/res/values-ms/strings.xml new file mode 100644 index 0000000000..203791a315 --- /dev/null +++ b/facebook-login/src/main/res/values-ms/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Suka + Disukai + Log keluar + Log masuk + Log masuk dengan Facebook + Teruskan dengan Facebook + Dilog masuk sebagai %1$s + Log masuk menggunakan Facebook + Log keluar + Batal + Memuatkan... + Ralat AndroidManifest + Log masuk WebView memerlukan kebenaran INTERNET + Anda berada dalam kawalan - pilih maklumat yang anda mahu berkongsi dengan aplikasi. + Ralat tidak dijangka semasa memuat turun imej. + Kongsi + Hantar + Lawati <b>facebook.com/device</b> dan masukkan kod yang ditunjukkan di atas. + Untuk menyambungkan akaun anda, buka aplikasi Facebook pada peranti mudah alih anda, dan semak untuk pemberitahuan. + - ATAU - + Sahkan Log Masuk + Teruskan sebagai %1$s + Bukan anda? + diff --git a/facebook-login/src/main/res/values-nb/strings.xml b/facebook-login/src/main/res/values-nb/strings.xml new file mode 100644 index 0000000000..014e5d8232 --- /dev/null +++ b/facebook-login/src/main/res/values-nb/strings.xml @@ -0,0 +1,29 @@ + + + + + + + Liker + Likt + Logg av + Logg inn + Logg inn med Facebook + Fortsett med Facebook + Logget inn som %1$s + Innlogget med Facebook + Logg av + Avbryt + Laster inn ... + AndroidManifest-feil + WebView-innlogging krever INTERNETT-tillatelse + Du bestemmer – velg hvilke opplysninger du vil dele med apper. + Det oppstod en uvented feil under nedlasting av et bilde. + Del + Gå til <b>facebook.com/device</b> og skriv inn koden som vises over. + Koble til kontoen din ved å åpne Facebook-appen på mobilenheten din og se etter varsler. + – ELLER – + Bekreft innlogging + Fortsett som %1$s + Ikke deg? + diff --git a/facebook-login/src/main/res/values-nl/strings.xml b/facebook-login/src/main/res/values-nl/strings.xml new file mode 100644 index 0000000000..32ebcc1481 --- /dev/null +++ b/facebook-login/src/main/res/values-nl/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Vind ik leuk + Vind ik leuk + Afmelden + Aanmelden + Aanmelden met Facebook + Doorgaan met Facebook + Aangemeld als: %1$s + Aangemeld via Facebook + Afmelden + Annuleren + Laden... + AndroidManifest-fout + Voor WebView-aanmelding is INTERNET-toestemming vereist + Jij hebt de controle: bepaal welke informatie je met apps wilt delen. + Onverwachte fout bij downloaden van afbeelding. + Delen + Verzenden + Ga naar <b>facebook.com/device</b> en voer de bovenstaande code in. + Als je je account wilt koppelen, open je de Facebook-app op je mobiele apparaat en controleer je je meldingen. + - OF - + Aanmelding bevestigen + Doorgaan als %1$s + Ben jij dit niet? + diff --git a/facebook-login/src/main/res/values-pa/strings.xml b/facebook-login/src/main/res/values-pa/strings.xml new file mode 100644 index 0000000000..1c52a62c58 --- /dev/null +++ b/facebook-login/src/main/res/values-pa/strings.xml @@ -0,0 +1,30 @@ + + + + + + + ਪਸੰਦ ਕਰੋ + ਪਸੰਦ ਕੀਤਾ + ਲੌਗ ਆਉਟ ਕਰੋ + ਲਾਗ ਇਨ + Facebook ਦੇ ਨਾਲ ਲੌਗ ਇਨ ਕਰੋ + Facebook ਨਾਲ ਜਾਰੀ ਰੱਖੋ + ਇਸ ਵੱਜੋਂ ਲੌਗ ਇਨ ਕੀਤਾ ਗਿਆ: %1$s + Facebook ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਲੌਗ ਇਨ ਕਰੋ + ਲੌਗ ਆਉਟ ਕਰੋ + ਰੱਦ ਕਰੋ + ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ... + AndroidManifest ਤਰੁੱਟੀ + WebView ਵਿੱਚ ਲੌਗ ਇਨ ਕਰਨ ਲਈ ਇੰਟਰਨੈੱਟ ਦੀ ਇਜਾਜ਼ਤ ਦੀ ਲੋੜ ਹੈ + ਤੁਸੀਂ ਨਿਯੰਤਰਣ ਵਿੱਚ ਹੋ - ਇਹ ਚੁਣੋ ਕਿ ਐਪਾਂ ਨਾਲ ਤੁਸੀਂ ਕਿਹੜੀ ਜਾਣਕਾਰੀ ਨੂੰ ਸਾਂਝਾ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ। + ਇੱਕ ਚਿੱਤਰ ਡਾਉਨਲੋਡ ਕਰਨ ਦੌਰਾਨ ਅਕਲਪਿਤ ਤਰੁੱਟੀ। + ਸਾਂਝਾ ਕਰੋ + ਭੇਜੋ + <b>facebook.com/device</b> \'ਤੇ ਵਿਜਿਟ ਕਰੋ ਅਤੇ ਉੱਪਰ ਦਿੱਤੇ ਕੋਡ ਨੂੰ ਦਾਖ਼ਲ ਕਰੋ। + ਆਪਣੇ ਖਾਤੇ ਨੂੰ ਕਨੈਕਟ ਕਰਨ ਲਈ, ਮੋਬਾਈਲ ਡਿਵਾਈਸ \'ਤੇ Facebook ਐਪ ਖੋਲ੍ਹੋ ਅਤੇ ਸੂਚਨਾਵਾਂ ਦੀ ਜਾਂਚ ਕਰੋ। + - ਜਾਂ - + ਲੌਗ ਇਨ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ + %1$s ਵਜੋਂ ਜਾਰੀ ਰੱਖੋ + ਇਹ ਤੁਸੀਂ ਨਹੀਂ ਹੋ? + diff --git a/facebook-login/src/main/res/values-pl/strings.xml b/facebook-login/src/main/res/values-pl/strings.xml new file mode 100644 index 0000000000..7f09f3e1b7 --- /dev/null +++ b/facebook-login/src/main/res/values-pl/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Lubię to! + Lubisz to + Wyloguj się + Logowanie się + Zaloguj się przez Facebooka + Kontynuuj za pośrednictwem Facebooka + Zalogowano jako: %1$s + Zalogowano przy użyciu Facebooka + Wyloguj się + Anuluj + Ładowanie… + Błąd AndroidManifest + Logowanie WebView wymaga uprawnienia INTERNET + Zachowujesz kontrolę — wybierz informacje, które chcesz udostępniać w aplikacjach. + Nieoczekiwany błąd podczas pobierania obrazu. + Udostępnij + Wyślij + Odwiedź stronę <b>facebook.com/device</b> i wprowadź powyższy kod. + Aby połączyć konto, otwórz aplikację Facebook na urządzeniu mobilnym i sprawdź powiadomienia. + - LUB - + Potwierdź logowanie + Kontynuuj jako %1$s + To nie Ty? + diff --git a/facebook-login/src/main/res/values-pt-rPT/strings.xml b/facebook-login/src/main/res/values-pt-rPT/strings.xml new file mode 100644 index 0000000000..c4c84ff99d --- /dev/null +++ b/facebook-login/src/main/res/values-pt-rPT/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Gosto + Gostaste + Terminar a sessão + Iniciar sessão + Iniciar sessão com o Facebook + Continuar com o Facebook + Com sessão iniciada como %1$s + Com sessão iniciada com o Facebook + Terminar a sessão + Cancelar + A carregar... + Erro AndroidManifest + O início de sessão WebView requer a permissão INTERNET + Tens o controlo. Escolhe as informações que queres partilhar com as apps. + Ocorreu um erro inesperado ao descarregar uma imagem. + Partilhar + Enviar + Visita <b>facebook.com/device</b> e insere o código apresentado abaixo. + Para associares a tua conta, abre a app Facebook no teu dispositivo móvel e consulta as notificações. + - OU - + Confirmar início de sessão + Continuar como %1$s + Não és tu? + diff --git a/facebook-login/src/main/res/values-pt/strings.xml b/facebook-login/src/main/res/values-pt/strings.xml new file mode 100644 index 0000000000..129a4baa7a --- /dev/null +++ b/facebook-login/src/main/res/values-pt/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Curtir + Curtiu + Sair + Entrar + Entrar com o Facebook + Continuar com o Facebook + Conectado como: %1$s + Conectado usando o Facebook + Sair + Cancelar + Carregando... + Erro AndroidManifest + O login do WebView exige permissão da INTERNET + Você está no controle — escolha quais informações você quer compartilhar com os aplicativos. + Erro inesperado ao baixar uma imagem. + Compartilhar + Enviar + Acesse <b>facebook.com/device</b> e insira o código mostrado acima. + Para conectar sua conta, abra o aplicativo do Facebook no seu dispositivo móvel e verifique se há notificações. + - OU - + Confirmar login + Continuar como %1$s + Não é você? + diff --git a/facebook-login/src/main/res/values-ru/strings.xml b/facebook-login/src/main/res/values-ru/strings.xml new file mode 100644 index 0000000000..a3a7568a6f --- /dev/null +++ b/facebook-login/src/main/res/values-ru/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Нравится + Нравится + Выйти + Войти + Вход через Facebook + Продолжить с Facebook + Вы вошли как %1$s + Выполнен вход через Facebook + Выйти + Отмена + Загрузка... + Ошибка AndroidManifest + Для входа через WebView необходимо разрешение INTERNET + Контроль над данными — выберите, какой информацией вы хотите делиться с приложениями. + Неожиданная ошибка при скачивании изображения. + Поделиться + Отправить + Откройте <b>facebook.com/device</b> и введите код, показанный выше. + Чтобы привязать ваш аккаунт, откройте приложение Facebook на своем мобильном устройстве и проверьте уведомления. + - ИЛИ - + Подтвердите вход + Продолжить как %1$s + Не Вы? + diff --git a/facebook-login/src/main/res/values-sk/strings.xml b/facebook-login/src/main/res/values-sk/strings.xml new file mode 100644 index 0000000000..3c03ba9828 --- /dev/null +++ b/facebook-login/src/main/res/values-sk/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Páči sa mi to + Páčilo sa mi to + Odhlásiť sa + Prihlásiť sa + Prihlásiť sa cez Facebook + Pokračovať s Facebookom + Prihlásený/-á ako: %1$s + Prihlásený/-á cez Facebook + Odhlásiť sa + Zrušiť + Načítava sa… + Chyba AndroidManifest + Na prihlásenie cez WebView sa vyžaduje povolenie internetu + Máte to pod kontrolou: vy určujete, ktoré informácie chcete zdieľať s aplikáciami. + Pri sťahovaní obrázka sa vyskytla neočakávaná chyba. + Zdieľať + Poslať + Navštívte stránku <b>facebook.com/device</b> a zadajte kód zobrazený vyššie. + Ak si chcete pripojiť účet, vo svojom mobilnom zariadení otvorte aplikáciu Facebook a pozrite si upozornenia. + - ALEBO - + Potvrdiť prihlásenie + Pokračovať ako %1$s + Nie ste to vy? + diff --git a/facebook-login/src/main/res/values-sv/strings.xml b/facebook-login/src/main/res/values-sv/strings.xml new file mode 100644 index 0000000000..cf95c35ad3 --- /dev/null +++ b/facebook-login/src/main/res/values-sv/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Gilla + Gillat + Logga ut + Logga in + Logga in med Facebook + Fortsätt med Facebook + Inloggad som: %1$s + Inloggad med Facebook + Logga ut + Avbryt + Laddar ... + AndroidManifest-fel + WebView-inloggning kräver INTERNET-åtkomst + Du bestämmer – välj vilken information du vill dela med appar. + Ett oväntat fel inträffade när en bild skulle laddas ned. + Dela + Skicka + Gå till <b>facebook.com/device</b> och skriv in koden som visas ovan. + Koppla ditt konto genom att öppna Facebook-appen på din mobila enhet och leta efter aviseringar. + - ELLER - + Bekräfta inloggning + Fortsätt som %1$s + Inte du? + diff --git a/facebook-login/src/main/res/values-ta/strings.xml b/facebook-login/src/main/res/values-ta/strings.xml new file mode 100644 index 0000000000..7508b4d257 --- /dev/null +++ b/facebook-login/src/main/res/values-ta/strings.xml @@ -0,0 +1,30 @@ + + + + + + + பிடித்திருக்கிறது + விரும்பியவை + வெளியேறு + உள்நுழையவும் + Facebook மூலம் உள்நுழையவும் + Facebook மூலம் தொடரவும் + %1$s ஆக உள்நுழைந்துள்ளீர்கள் + Facebook ஐப் பயன்படுத்தி உள்நுழைந்துள்ளீர்கள் + வெளியேறு + ரத்துசெய் + ஏற்றுகிறது… + AndroidManifest பிழை + WebView உள்நுழைவுக்கு இணைய அனுமதித் தேவை + கட்டுப்பாடு உங்களிடம் உள்ளது. பயன்பாடுகளுடன் நீங்கள் பகிர விரும்பும் தகவல்களைத் தேர்வுசெய்யவும். + படத்தைப் பதிவிறக்கும்போது எதிர்பாராத பிழை ஏற்பட்டது. + பகிர் + அனுப்பு + <b>facebook.com/device</b> ஐப் பார்வையிட்டு, மேலே காட்டப்பட்ட குறியீட்டை உள்ளிடவும். + உங்கள் கணக்கை இணைக்க, உங்கள் மொபைல் சாதனத்தில் Facebook பயன்பாட்டைத் திறந்து, அறிவிப்புகளைப் பார்க்கவும். + - அல்லது - + உள்நுழைதலை உறுதிப்படுத்தவும் + %1$s ஆகத் தொடர் + நீங்கள் அல்ல? + diff --git a/facebook-login/src/main/res/values-te/strings.xml b/facebook-login/src/main/res/values-te/strings.xml new file mode 100644 index 0000000000..d8546f72cb --- /dev/null +++ b/facebook-login/src/main/res/values-te/strings.xml @@ -0,0 +1,30 @@ + + + + + + + ఇష్టం + ఇష్టపడ్డారు + లాగ్ అవుట్ చేయండి + లాగిన్ + Facebookతో లాగిన్ చేయండి + Facebookతో కొనసాగించు + వీరి వలె లాగిన్ చేసారు: %1$s + Facebookని ఉపయోగించి లాగిన్ చేసారు + లాగ్ అవుట్ చేయండి + రద్దు చేయి + లోడ్ చేస్తోంది… + AndroidManifest లోపం + WebView లాగిన్ కోసం ఇంటర్నెట్ అనుమతి అవసరమవుతుంది + మీరు నియంత్రణలో ఉన్నారు - మీరు ఏ సమాచారాన్ని అనువర్తనాలతో పంచుకోవాలనుకుంటున్నారో ఎంచుకోండి. + ఒక చిత్రాన్ని డౌన్‌లోడ్ చేయడంలో అనుకోని లోపం సంభవించింది. + భాగస్వామ్యం చేయి + పంపండి + <b>facebook.com/device</b>ని సందర్శించి ఎగువన చూపిన కోడ్‌ను నమోదు చేయండి. + మీ ఖాతాను అనుసంధానించేందుకు, మీ మొబైల్ పరికరంలో Facebook అనువర్తనాన్ని తెరిచి నోటిఫికేషన్‌లను తనిఖీ చేయండి. + - లేదా - + లాగిన్‌ను నిర్ధారించండి + %1$sగా కొనసాగండి + మీరు కాదా? + diff --git a/facebook-login/src/main/res/values-th/strings.xml b/facebook-login/src/main/res/values-th/strings.xml new file mode 100644 index 0000000000..d39dedcabe --- /dev/null +++ b/facebook-login/src/main/res/values-th/strings.xml @@ -0,0 +1,30 @@ + + + + + + + ถูกใจ + ถูกใจแล้ว + ออกจากระบบ + เข้าสู่ระบบ + เข้าสู่ระบบด้วย Facebook + ดำเนินการต่อด้วย Facebook + เข้าสู่ระบบแล้วในชื่อ %1$s + เข้าสู่ระบบแล้วโดยใช้ Facebook + ออกจากระบบ + ยกเลิก + กำลังโหลด... + ข้อผิดพลาด AndroidManifest + การเข้าสู่ระบบ WebView ต้องได้รับสิทธิ์การอนุญาตอินเทอร์เน็ต + คุณควบคุมได้ เลือกว่าคุณต้องการแชร์ข้อมูลใดกับแอพ + เกิดข้อผิดพลาดที่ไม่คาดคิดขณะดาวน์โหลดภาพ + แชร์ + ส่ง + ไปที่ <b>facebook.com/device</b> แล้วป้อนรหัสที่ปรากฏด้านล่าง + หากต้องการเชื่อมต่อกับบัญชีผู้ใช้ของคุณ ให้เปิดแอพ Facebook บนอุปกรณ์มือถือของคุณแล้วตรวจสอบการแจ้งเตือน + - หรือ - + ยืนยันการเข้าสู่ระบบ + ดำเนินการต่อในชื่อ %1$s + ไม่ใช่คุณใช่ไหม + diff --git a/facebook-login/src/main/res/values-tl/strings.xml b/facebook-login/src/main/res/values-tl/strings.xml new file mode 100644 index 0000000000..a276ac020c --- /dev/null +++ b/facebook-login/src/main/res/values-tl/strings.xml @@ -0,0 +1,29 @@ + + + + + + + Gusto ko ito + Nagustuhan + Mag-log out + Mag-log in + Mag-log in sa Facebook + Magpatuloy gamit ang Facebook + Mag-log-in bilang: %1$s. + Naka-log in gamit ang Facebook + Mag-log out + Kanselahin + Naglo-load... + Ang pag-log in sa WebView ay nangangailangan ng pahintulot sa INTERNET + Ikaw ang may kontrol - piliin anong impormasyon ang gusto mong i-share sa mga app. + Hindi inaasahang error habang dina-download ang larawan. + I-share + Ipadala + Puntahan ang <b>facebook.com/device</b> at ilagay ang code na ipinapakita sa itaas. + Para ikonekta ang iyong account, buksan ang Facebook app sa iyong cellphone at tumingin ng mga notification. + - O - + I-confirm ang Pag-log in + Magpatuloy bilang %1$s + Hindi ikaw? + diff --git a/facebook-login/src/main/res/values-tr/strings.xml b/facebook-login/src/main/res/values-tr/strings.xml new file mode 100644 index 0000000000..c77ce01e4c --- /dev/null +++ b/facebook-login/src/main/res/values-tr/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Beğen + Beğendin + Çıkış Yap + Giriş yap + Facebook ile Giriş Yap + Facebook ile Devam Et + %1$s olarak giriş yapıldı + Facebook ile giriş yapıldı + Çıkış Yap + İptal + Yükleniyor... + AndroidManifest Hatası + WebView girişi için İNTERNET izni gerekiyor + Kontrol sende - uygulamalarla paylaşmak istediğin bilgileri seç. + Görüntü indirilirken beklenmedik bir hata oluştu. + Paylaş + Gönder + <b>facebook.com/device</b> adresine git ve yukarıda gösterilen kodu gir. + Hesabını bağlamak için, mobil cihazında Facebook uygulamasını aç ve bildirimleri kontrol et. + - VEYA - + Girişi Onayla + %1$s olarak devam et + Siz değil misiniz? + diff --git a/facebook-login/src/main/res/values-vi/strings.xml b/facebook-login/src/main/res/values-vi/strings.xml new file mode 100644 index 0000000000..90901c711b --- /dev/null +++ b/facebook-login/src/main/res/values-vi/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Thích + Đã thích + Đăng xuất + Đăng nhập + Đăng nhập bằng Facebook + Tiếp tục với Facebook + Đã đăng nhập với tên: %1$s + Đã đăng nhập bằng Facebook + Đăng xuất + Hủy + Đang tải… + Lỗi AndroidManifest + Đăng nhập chế độ xem web yêu cầu quyền INTERNET + Bạn nắm quyền kiểm soát - chọn thông tin bạn muốn chia sẻ với ứng dụng. + Lỗi không mong muốn khi tải hình ảnh xuống. + Chia sẻ + Gửi + Truy cập <b>facebook.com/device</b> và nhập mã được hiển thị bên trên. + Để kết nối tài khoản của bạn, hãy mở ứng dụng Facebook trên thiết bị di động và kiểm tra thông báo. + - HOẶC - + Xác nhận đăng nhập + Tiếp tục với tư cách %1$s + Không phải bạn? + diff --git a/facebook-login/src/main/res/values-zh-rCN/strings.xml b/facebook-login/src/main/res/values-zh-rCN/strings.xml new file mode 100644 index 0000000000..125758e720 --- /dev/null +++ b/facebook-login/src/main/res/values-zh-rCN/strings.xml @@ -0,0 +1,30 @@ + + + + + + + + 赞了 + 注销 + 登录 + 使用 Facebook 登录 + 前往 Facebook + 登录身份:%1$s + 已通过 Facebook 登录 + 注销 + 取消 + 正在加载... + AndroidManifest 错误 + WebView 登录需要访问网络 + 应用分享内容由你掌控。 + 下载图片时出现意外错误。 + 分享 + 发送 + 请访问<b>facebook.com/device</b>并输入以上验证码。 + 要关联帐户,请在移动设备上打开 Facebook 应用并查看通知。 + - 或 - + 确认登录 + 以%1$s的身份继续 + 不是你? + diff --git a/facebook-login/src/main/res/values-zh-rHK/strings.xml b/facebook-login/src/main/res/values-zh-rHK/strings.xml new file mode 100644 index 0000000000..13d2ecfcfc --- /dev/null +++ b/facebook-login/src/main/res/values-zh-rHK/strings.xml @@ -0,0 +1,30 @@ + + + + + + + 讚好 + 已讚好 + 登出 + 登入 + 使用 Facebook 登入 + 繼續使用 Facebook 帳戶 + 以%1$s身分登入 + 已使用 Facebook 登入 + 登出 + 取消 + 載入中...... + AndroidManifest 錯誤 + WebView 登入需要網絡使用權限 + 一切由你掌握:自行選擇要分享給應用程式的資訊種類。 + 下載圖像時發生沒有預期的錯誤。 + 分享 + 送出 + 前往<b>facebook.com/device</b&gt,並輸入上方顯示的代碼。 + 若要連結帳戶,請在流動裝置上開啟 Facebook 應用程式,然後查看通知。 + - 或 - + 確認登入 + 以%1$s的身分繼續 + 不是你嗎? + diff --git a/facebook-login/src/main/res/values-zh-rTW/strings.xml b/facebook-login/src/main/res/values-zh-rTW/strings.xml new file mode 100644 index 0000000000..8f08dc11e9 --- /dev/null +++ b/facebook-login/src/main/res/values-zh-rTW/strings.xml @@ -0,0 +1,30 @@ + + + + + + + + 已說讚 + 登出 + 登入 + 使用 Facebook 帳號登入 + 繼續使用 Facebook 帳號 + 以%1$s身分登入 + 已使用 Facebook 登入 + 登出 + 取消 + 載入中...... + AndroidManifest 錯誤 + WebView 登入需要網路使用權限 + 一切操之在你:自行選擇要分享給應用程式的資訊種類。 + 下載圖像時無預警發生錯誤。 + 分享 + 送出 + 前往<b>facebook.com/device</b&gt,並輸入上方顯示的代碼。 + 若要連結帳號,請在行動裝置上開啟 Facebook 應用程式,然後查看通知。 + - 或 - + 確認登入 + 以%1$s的身分繼續 + 不是你? + diff --git a/facebook-login/src/main/res/values/attrs.xml b/facebook-login/src/main/res/values/attrs.xml new file mode 100644 index 0000000000..de33f5492e --- /dev/null +++ b/facebook-login/src/main/res/values/attrs.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/facebook/src/main/res/values/dimens.xml b/facebook-login/src/main/res/values/dimens.xml similarity index 79% rename from facebook/src/main/res/values/dimens.xml rename to facebook-login/src/main/res/values/dimens.xml index 0739a3225e..8f968aaf75 100644 --- a/facebook/src/main/res/values/dimens.xml +++ b/facebook-login/src/main/res/values/dimens.xml @@ -20,10 +20,10 @@ --> - 2dp - - 4dp - 2dp 3dp + + 50dp + 100dp + 180dp + diff --git a/facebook-login/src/main/res/values/strings.xml b/facebook-login/src/main/res/values/strings.xml new file mode 100644 index 0000000000..af7262eaad --- /dev/null +++ b/facebook-login/src/main/res/values/strings.xml @@ -0,0 +1,45 @@ + + + + Like + Liked + Log out + Log in + Log in with Facebook + Continue with Facebook + Logged in as: %1$s + Logged in using Facebook + Log out + Cancel + Loading… + AndroidManifest Error + WebView login requires INTERNET permission + You\'re in control - choose what info you want to share with apps. + Unexpected error while downloading an image. + Share + Send + Visit <b>facebook.com/device</b> and enter the code shown above. + To connect your account, open the Facebook app on your mobile device and check for notifications. + - OR - + Confirm Login + Continue as %1$s + Not you? + diff --git a/facebook-login/src/main/res/values/styles.xml b/facebook-login/src/main/res/values/styles.xml new file mode 100644 index 0000000000..b930e2c1f7 --- /dev/null +++ b/facebook-login/src/main/res/values/styles.xml @@ -0,0 +1,50 @@ + + + + + #4267b2 + #f4f6f8 + #e9eaf0 + + + + + + + + diff --git a/facebook-messenger/.gitignore b/facebook-messenger/.gitignore new file mode 100644 index 0000000000..796b96d1c4 --- /dev/null +++ b/facebook-messenger/.gitignore @@ -0,0 +1 @@ +/build diff --git a/facebook-messenger/build.gradle b/facebook-messenger/build.gradle new file mode 100644 index 0000000000..cfb6a4346d --- /dev/null +++ b/facebook-messenger/build.gradle @@ -0,0 +1,47 @@ +apply plugin: 'com.android.library' + +project.group 'com.facebook.android' + +project.ext.name = 'Facebook-Messenger-Android-SDK' +project.ext.artifactId = "facebook-messenger" +project.ext.description = 'Facebook Messenger Android SDK' +project.ext.url = 'https://github.com/facebook/facebook-android-sdk/facebook-messenger' + +dependencies { + // Facebook Dependencies + compile project(':facebook-core') +} + +android { + compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION) + buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION + + defaultConfig { + minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION) + targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION) + consumerProguardFiles 'proguard-rules.pro' + vectorDrawables.useSupportLibrary = true + } + + aaptOptions { + additionalParameters "--no-version-vectors" + } + + lintOptions { + abortOnError false + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_7 + targetCompatibility JavaVersion.VERSION_1_7 + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +apply from: "${rootDir}/maven.gradle" diff --git a/facebook-messenger/proguard-rules.pro b/facebook-messenger/proguard-rules.pro new file mode 100644 index 0000000000..b19a92289b --- /dev/null +++ b/facebook-messenger/proguard-rules.pro @@ -0,0 +1,33 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +-keepclassmembers class * implements java.io.Serializable { + private static final java.io.ObjectStreamField[] serialPersistentFields; + private void writeObject(java.io.ObjectOutputStream); + private void readObject(java.io.ObjectInputStream); + java.lang.Object writeReplace(); + java.lang.Object readResolve(); +} + +-keepnames class com.facebook.FacebookActivity +-keepnames class com.facebook.CustomTabActivity + +-keep class com.facebook.messenger.Messenger diff --git a/facebook-messenger/src/main/AndroidManifest.xml b/facebook-messenger/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..54dc913867 --- /dev/null +++ b/facebook-messenger/src/main/AndroidManifest.xml @@ -0,0 +1,29 @@ + + + + + + + + + + diff --git a/facebook-messenger/src/main/java/com/facebook/messenger/Messenger.java b/facebook-messenger/src/main/java/com/facebook/messenger/Messenger.java new file mode 100644 index 0000000000..9c3becd91b --- /dev/null +++ b/facebook-messenger/src/main/java/com/facebook/messenger/Messenger.java @@ -0,0 +1,5 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +package com.facebook.messenger; + +public class Messenger { } diff --git a/facebook/src/main/java/com/facebook/messenger/MessengerThreadParams.java b/facebook-messenger/src/main/java/com/facebook/messenger/MessengerThreadParams.java similarity index 99% rename from facebook/src/main/java/com/facebook/messenger/MessengerThreadParams.java rename to facebook-messenger/src/main/java/com/facebook/messenger/MessengerThreadParams.java index dcc1ff52a6..3f7bd0a0b1 100644 --- a/facebook/src/main/java/com/facebook/messenger/MessengerThreadParams.java +++ b/facebook-messenger/src/main/java/com/facebook/messenger/MessengerThreadParams.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, diff --git a/facebook/src/main/java/com/facebook/messenger/MessengerUtils.java b/facebook-messenger/src/main/java/com/facebook/messenger/MessengerUtils.java similarity index 99% rename from facebook/src/main/java/com/facebook/messenger/MessengerUtils.java rename to facebook-messenger/src/main/java/com/facebook/messenger/MessengerUtils.java index a5b63ee247..38f16166ac 100644 --- a/facebook/src/main/java/com/facebook/messenger/MessengerUtils.java +++ b/facebook-messenger/src/main/java/com/facebook/messenger/MessengerUtils.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -25,7 +25,6 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; -import android.content.pm.PackageManager; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; diff --git a/facebook/src/main/java/com/facebook/messenger/ShareToMessengerParams.java b/facebook-messenger/src/main/java/com/facebook/messenger/ShareToMessengerParams.java similarity index 99% rename from facebook/src/main/java/com/facebook/messenger/ShareToMessengerParams.java rename to facebook-messenger/src/main/java/com/facebook/messenger/ShareToMessengerParams.java index 9bb4133843..a7dfe04edb 100644 --- a/facebook/src/main/java/com/facebook/messenger/ShareToMessengerParams.java +++ b/facebook-messenger/src/main/java/com/facebook/messenger/ShareToMessengerParams.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, diff --git a/facebook/src/main/java/com/facebook/messenger/ShareToMessengerParamsBuilder.java b/facebook-messenger/src/main/java/com/facebook/messenger/ShareToMessengerParamsBuilder.java similarity index 99% rename from facebook/src/main/java/com/facebook/messenger/ShareToMessengerParamsBuilder.java rename to facebook-messenger/src/main/java/com/facebook/messenger/ShareToMessengerParamsBuilder.java index ad42d6c28c..a204fe65e2 100644 --- a/facebook/src/main/java/com/facebook/messenger/ShareToMessengerParamsBuilder.java +++ b/facebook-messenger/src/main/java/com/facebook/messenger/ShareToMessengerParamsBuilder.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, diff --git a/facebook-messenger/src/main/res/drawable-hdpi/messenger_bubble_large_blue.png b/facebook-messenger/src/main/res/drawable-hdpi/messenger_bubble_large_blue.png new file mode 100644 index 0000000000..4281f5bb22 Binary files /dev/null and b/facebook-messenger/src/main/res/drawable-hdpi/messenger_bubble_large_blue.png differ diff --git a/facebook-messenger/src/main/res/drawable-hdpi/messenger_bubble_large_white.png b/facebook-messenger/src/main/res/drawable-hdpi/messenger_bubble_large_white.png new file mode 100644 index 0000000000..a282e45017 Binary files /dev/null and b/facebook-messenger/src/main/res/drawable-hdpi/messenger_bubble_large_white.png differ diff --git a/facebook-messenger/src/main/res/drawable-hdpi/messenger_bubble_small_blue.png b/facebook-messenger/src/main/res/drawable-hdpi/messenger_bubble_small_blue.png new file mode 100644 index 0000000000..1258d68a1b Binary files /dev/null and b/facebook-messenger/src/main/res/drawable-hdpi/messenger_bubble_small_blue.png differ diff --git a/facebook-messenger/src/main/res/drawable-hdpi/messenger_bubble_small_white.png b/facebook-messenger/src/main/res/drawable-hdpi/messenger_bubble_small_white.png new file mode 100644 index 0000000000..04847c88ad Binary files /dev/null and b/facebook-messenger/src/main/res/drawable-hdpi/messenger_bubble_small_white.png differ diff --git a/facebook-messenger/src/main/res/drawable-hdpi/messenger_button_send_round_shadow.png b/facebook-messenger/src/main/res/drawable-hdpi/messenger_button_send_round_shadow.png new file mode 100644 index 0000000000..38e786dc39 Binary files /dev/null and b/facebook-messenger/src/main/res/drawable-hdpi/messenger_button_send_round_shadow.png differ diff --git a/facebook-messenger/src/main/res/drawable-mdpi/messenger_bubble_large_blue.png b/facebook-messenger/src/main/res/drawable-mdpi/messenger_bubble_large_blue.png new file mode 100644 index 0000000000..3f0f0f65dd Binary files /dev/null and b/facebook-messenger/src/main/res/drawable-mdpi/messenger_bubble_large_blue.png differ diff --git a/facebook-messenger/src/main/res/drawable-mdpi/messenger_bubble_large_white.png b/facebook-messenger/src/main/res/drawable-mdpi/messenger_bubble_large_white.png new file mode 100644 index 0000000000..fb39b81665 Binary files /dev/null and b/facebook-messenger/src/main/res/drawable-mdpi/messenger_bubble_large_white.png differ diff --git a/facebook-messenger/src/main/res/drawable-mdpi/messenger_bubble_small_blue.png b/facebook-messenger/src/main/res/drawable-mdpi/messenger_bubble_small_blue.png new file mode 100644 index 0000000000..88da066694 Binary files /dev/null and b/facebook-messenger/src/main/res/drawable-mdpi/messenger_bubble_small_blue.png differ diff --git a/facebook-messenger/src/main/res/drawable-mdpi/messenger_bubble_small_white.png b/facebook-messenger/src/main/res/drawable-mdpi/messenger_bubble_small_white.png new file mode 100644 index 0000000000..727ef9fc43 Binary files /dev/null and b/facebook-messenger/src/main/res/drawable-mdpi/messenger_bubble_small_white.png differ diff --git a/facebook-messenger/src/main/res/drawable-mdpi/messenger_button_send_round_shadow.png b/facebook-messenger/src/main/res/drawable-mdpi/messenger_button_send_round_shadow.png new file mode 100644 index 0000000000..6b3f53d2be Binary files /dev/null and b/facebook-messenger/src/main/res/drawable-mdpi/messenger_button_send_round_shadow.png differ diff --git a/facebook-messenger/src/main/res/drawable-xhdpi/messenger_bubble_large_blue.png b/facebook-messenger/src/main/res/drawable-xhdpi/messenger_bubble_large_blue.png new file mode 100644 index 0000000000..02d034cd37 Binary files /dev/null and b/facebook-messenger/src/main/res/drawable-xhdpi/messenger_bubble_large_blue.png differ diff --git a/facebook-messenger/src/main/res/drawable-xhdpi/messenger_bubble_large_white.png b/facebook-messenger/src/main/res/drawable-xhdpi/messenger_bubble_large_white.png new file mode 100644 index 0000000000..d15e747c1a Binary files /dev/null and b/facebook-messenger/src/main/res/drawable-xhdpi/messenger_bubble_large_white.png differ diff --git a/facebook-messenger/src/main/res/drawable-xhdpi/messenger_bubble_small_blue.png b/facebook-messenger/src/main/res/drawable-xhdpi/messenger_bubble_small_blue.png new file mode 100644 index 0000000000..b21f104e8c Binary files /dev/null and b/facebook-messenger/src/main/res/drawable-xhdpi/messenger_bubble_small_blue.png differ diff --git a/facebook-messenger/src/main/res/drawable-xhdpi/messenger_bubble_small_white.png b/facebook-messenger/src/main/res/drawable-xhdpi/messenger_bubble_small_white.png new file mode 100644 index 0000000000..5c641c94f3 Binary files /dev/null and b/facebook-messenger/src/main/res/drawable-xhdpi/messenger_bubble_small_white.png differ diff --git a/facebook-messenger/src/main/res/drawable-xhdpi/messenger_button_send_round_shadow.png b/facebook-messenger/src/main/res/drawable-xhdpi/messenger_button_send_round_shadow.png new file mode 100644 index 0000000000..9bccc27004 Binary files /dev/null and b/facebook-messenger/src/main/res/drawable-xhdpi/messenger_button_send_round_shadow.png differ diff --git a/facebook-messenger/src/main/res/drawable-xxhdpi/messenger_bubble_large_blue.png b/facebook-messenger/src/main/res/drawable-xxhdpi/messenger_bubble_large_blue.png new file mode 100644 index 0000000000..93c5a6f166 Binary files /dev/null and b/facebook-messenger/src/main/res/drawable-xxhdpi/messenger_bubble_large_blue.png differ diff --git a/facebook-messenger/src/main/res/drawable-xxhdpi/messenger_bubble_large_white.png b/facebook-messenger/src/main/res/drawable-xxhdpi/messenger_bubble_large_white.png new file mode 100644 index 0000000000..2ac468337b Binary files /dev/null and b/facebook-messenger/src/main/res/drawable-xxhdpi/messenger_bubble_large_white.png differ diff --git a/facebook-messenger/src/main/res/drawable-xxhdpi/messenger_bubble_small_blue.png b/facebook-messenger/src/main/res/drawable-xxhdpi/messenger_bubble_small_blue.png new file mode 100644 index 0000000000..a9c23b5355 Binary files /dev/null and b/facebook-messenger/src/main/res/drawable-xxhdpi/messenger_bubble_small_blue.png differ diff --git a/facebook-messenger/src/main/res/drawable-xxhdpi/messenger_bubble_small_white.png b/facebook-messenger/src/main/res/drawable-xxhdpi/messenger_bubble_small_white.png new file mode 100644 index 0000000000..7180963f70 Binary files /dev/null and b/facebook-messenger/src/main/res/drawable-xxhdpi/messenger_bubble_small_white.png differ diff --git a/facebook-messenger/src/main/res/drawable-xxhdpi/messenger_button_send_round_shadow.png b/facebook-messenger/src/main/res/drawable-xxhdpi/messenger_button_send_round_shadow.png new file mode 100644 index 0000000000..49117bc6e4 Binary files /dev/null and b/facebook-messenger/src/main/res/drawable-xxhdpi/messenger_button_send_round_shadow.png differ diff --git a/facebook/src/main/res/drawable/messenger_button_blue_bg_round.xml b/facebook-messenger/src/main/res/drawable/messenger_button_blue_bg_round.xml similarity index 100% rename from facebook/src/main/res/drawable/messenger_button_blue_bg_round.xml rename to facebook-messenger/src/main/res/drawable/messenger_button_blue_bg_round.xml diff --git a/facebook/src/main/res/drawable/messenger_button_blue_bg_selector.xml b/facebook-messenger/src/main/res/drawable/messenger_button_blue_bg_selector.xml similarity index 100% rename from facebook/src/main/res/drawable/messenger_button_blue_bg_selector.xml rename to facebook-messenger/src/main/res/drawable/messenger_button_blue_bg_selector.xml diff --git a/facebook/src/main/res/drawable/messenger_button_white_bg_round.xml b/facebook-messenger/src/main/res/drawable/messenger_button_white_bg_round.xml similarity index 100% rename from facebook/src/main/res/drawable/messenger_button_white_bg_round.xml rename to facebook-messenger/src/main/res/drawable/messenger_button_white_bg_round.xml diff --git a/facebook/src/main/res/drawable/messenger_button_white_bg_selector.xml b/facebook-messenger/src/main/res/drawable/messenger_button_white_bg_selector.xml similarity index 100% rename from facebook/src/main/res/drawable/messenger_button_white_bg_selector.xml rename to facebook-messenger/src/main/res/drawable/messenger_button_white_bg_selector.xml diff --git a/facebook/src/main/res/layout/messenger_button_send_blue_large.xml b/facebook-messenger/src/main/res/layout/messenger_button_send_blue_large.xml similarity index 100% rename from facebook/src/main/res/layout/messenger_button_send_blue_large.xml rename to facebook-messenger/src/main/res/layout/messenger_button_send_blue_large.xml diff --git a/facebook/src/main/res/layout/messenger_button_send_blue_round.xml b/facebook-messenger/src/main/res/layout/messenger_button_send_blue_round.xml similarity index 100% rename from facebook/src/main/res/layout/messenger_button_send_blue_round.xml rename to facebook-messenger/src/main/res/layout/messenger_button_send_blue_round.xml diff --git a/facebook/src/main/res/layout/messenger_button_send_blue_small.xml b/facebook-messenger/src/main/res/layout/messenger_button_send_blue_small.xml similarity index 100% rename from facebook/src/main/res/layout/messenger_button_send_blue_small.xml rename to facebook-messenger/src/main/res/layout/messenger_button_send_blue_small.xml diff --git a/facebook/src/main/res/layout/messenger_button_send_white_large.xml b/facebook-messenger/src/main/res/layout/messenger_button_send_white_large.xml similarity index 100% rename from facebook/src/main/res/layout/messenger_button_send_white_large.xml rename to facebook-messenger/src/main/res/layout/messenger_button_send_white_large.xml diff --git a/facebook/src/main/res/layout/messenger_button_send_white_round.xml b/facebook-messenger/src/main/res/layout/messenger_button_send_white_round.xml similarity index 100% rename from facebook/src/main/res/layout/messenger_button_send_white_round.xml rename to facebook-messenger/src/main/res/layout/messenger_button_send_white_round.xml diff --git a/facebook/src/main/res/layout/messenger_button_send_white_small.xml b/facebook-messenger/src/main/res/layout/messenger_button_send_white_small.xml similarity index 100% rename from facebook/src/main/res/layout/messenger_button_send_white_small.xml rename to facebook-messenger/src/main/res/layout/messenger_button_send_white_small.xml diff --git a/facebook/src/main/res/values-da/messenger_button_strings.xml b/facebook-messenger/src/main/res/values/messenger_button_strings.xml similarity index 100% rename from facebook/src/main/res/values-da/messenger_button_strings.xml rename to facebook-messenger/src/main/res/values/messenger_button_strings.xml diff --git a/facebook/src/main/res/values/messenger_button_styles.xml b/facebook-messenger/src/main/res/values/messenger_button_styles.xml similarity index 100% rename from facebook/src/main/res/values/messenger_button_styles.xml rename to facebook-messenger/src/main/res/values/messenger_button_styles.xml diff --git a/facebook-places/.gitignore b/facebook-places/.gitignore new file mode 100644 index 0000000000..796b96d1c4 --- /dev/null +++ b/facebook-places/.gitignore @@ -0,0 +1 @@ +/build diff --git a/facebook-places/build.gradle b/facebook-places/build.gradle new file mode 100644 index 0000000000..356e67e04d --- /dev/null +++ b/facebook-places/build.gradle @@ -0,0 +1,46 @@ +apply plugin: 'com.android.library' + +project.group 'com.facebook.android' + +project.ext.name = 'Facebook-Places-Android-SDK' +project.ext.artifactId = "facebook-places" +project.ext.description = 'Facebook Places Android SDK' +project.ext.url = 'https://github.com/facebook/facebook-android-sdk/facebook-places' + +dependencies { + // Facebook Dependencies + compile project(':facebook-core') +} + +android { + compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION) + buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION + + defaultConfig { + minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION) + targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION) + consumerProguardFiles 'proguard-rules.pro' + } + + aaptOptions { + additionalParameters "--no-version-vectors" + } + + lintOptions { + abortOnError false + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_7 + targetCompatibility JavaVersion.VERSION_1_7 + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +apply from: "${rootDir}/maven.gradle" \ No newline at end of file diff --git a/facebook-places/proguard-rules.pro b/facebook-places/proguard-rules.pro new file mode 100644 index 0000000000..67e1ea6a3f --- /dev/null +++ b/facebook-places/proguard-rules.pro @@ -0,0 +1,33 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +-keepclassmembers class * implements java.io.Serializable { + private static final java.io.ObjectStreamField[] serialPersistentFields; + private void writeObject(java.io.ObjectOutputStream); + private void readObject(java.io.ObjectInputStream); + java.lang.Object writeReplace(); + java.lang.Object readResolve(); +} + +-keepnames class com.facebook.FacebookActivity +-keepnames class com.facebook.CustomTabActivity + +-keep class com.facebook.places.Places diff --git a/facebook/src/main/res/values-bn/messenger_button_strings.xml b/facebook-places/src/main/AndroidManifest.xml similarity index 86% rename from facebook/src/main/res/values-bn/messenger_button_strings.xml rename to facebook-places/src/main/AndroidManifest.xml index 633acf2b08..7f1f58fe9f 100644 --- a/facebook/src/main/res/values-bn/messenger_button_strings.xml +++ b/facebook-places/src/main/AndroidManifest.xml @@ -19,6 +19,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --> - - প্রেরণ করুন - + + + + + + + diff --git a/facebook/src/main/java/com/facebook/places/PlaceManager.java b/facebook-places/src/main/java/com/facebook/places/PlaceManager.java similarity index 99% rename from facebook/src/main/java/com/facebook/places/PlaceManager.java rename to facebook-places/src/main/java/com/facebook/places/PlaceManager.java index 311140acb6..235037a2c2 100644 --- a/facebook/src/main/java/com/facebook/places/PlaceManager.java +++ b/facebook-places/src/main/java/com/facebook/places/PlaceManager.java @@ -22,7 +22,6 @@ import android.location.Location; import android.os.Bundle; -import android.support.annotation.Nullable; import android.text.TextUtils; import com.facebook.AccessToken; diff --git a/facebook-places/src/main/java/com/facebook/places/Places.java b/facebook-places/src/main/java/com/facebook/places/Places.java new file mode 100644 index 0000000000..461c6927d2 --- /dev/null +++ b/facebook-places/src/main/java/com/facebook/places/Places.java @@ -0,0 +1,5 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +package com.facebook.places; + +public class Places { } diff --git a/facebook/src/main/java/com/facebook/places/internal/BleScanner.java b/facebook-places/src/main/java/com/facebook/places/internal/BleScanner.java similarity index 100% rename from facebook/src/main/java/com/facebook/places/internal/BleScanner.java rename to facebook-places/src/main/java/com/facebook/places/internal/BleScanner.java diff --git a/facebook/src/main/java/com/facebook/places/internal/BleScannerImpl.java b/facebook-places/src/main/java/com/facebook/places/internal/BleScannerImpl.java similarity index 100% rename from facebook/src/main/java/com/facebook/places/internal/BleScannerImpl.java rename to facebook-places/src/main/java/com/facebook/places/internal/BleScannerImpl.java diff --git a/facebook/src/main/java/com/facebook/places/internal/BleScannerLegacy.java b/facebook-places/src/main/java/com/facebook/places/internal/BleScannerLegacy.java similarity index 100% rename from facebook/src/main/java/com/facebook/places/internal/BleScannerLegacy.java rename to facebook-places/src/main/java/com/facebook/places/internal/BleScannerLegacy.java diff --git a/facebook/src/main/java/com/facebook/places/internal/BluetoothScanResult.java b/facebook-places/src/main/java/com/facebook/places/internal/BluetoothScanResult.java similarity index 100% rename from facebook/src/main/java/com/facebook/places/internal/BluetoothScanResult.java rename to facebook-places/src/main/java/com/facebook/places/internal/BluetoothScanResult.java diff --git a/facebook/src/main/java/com/facebook/places/internal/LocationPackage.java b/facebook-places/src/main/java/com/facebook/places/internal/LocationPackage.java similarity index 100% rename from facebook/src/main/java/com/facebook/places/internal/LocationPackage.java rename to facebook-places/src/main/java/com/facebook/places/internal/LocationPackage.java diff --git a/facebook/src/main/java/com/facebook/places/internal/LocationPackageManager.java b/facebook-places/src/main/java/com/facebook/places/internal/LocationPackageManager.java similarity index 100% rename from facebook/src/main/java/com/facebook/places/internal/LocationPackageManager.java rename to facebook-places/src/main/java/com/facebook/places/internal/LocationPackageManager.java diff --git a/facebook/src/main/java/com/facebook/places/internal/LocationPackageRequestParams.java b/facebook-places/src/main/java/com/facebook/places/internal/LocationPackageRequestParams.java similarity index 100% rename from facebook/src/main/java/com/facebook/places/internal/LocationPackageRequestParams.java rename to facebook-places/src/main/java/com/facebook/places/internal/LocationPackageRequestParams.java diff --git a/facebook/src/main/java/com/facebook/places/internal/LocationScanner.java b/facebook-places/src/main/java/com/facebook/places/internal/LocationScanner.java similarity index 100% rename from facebook/src/main/java/com/facebook/places/internal/LocationScanner.java rename to facebook-places/src/main/java/com/facebook/places/internal/LocationScanner.java diff --git a/facebook/src/main/java/com/facebook/places/internal/LocationScannerImpl.java b/facebook-places/src/main/java/com/facebook/places/internal/LocationScannerImpl.java similarity index 100% rename from facebook/src/main/java/com/facebook/places/internal/LocationScannerImpl.java rename to facebook-places/src/main/java/com/facebook/places/internal/LocationScannerImpl.java diff --git a/facebook/src/main/java/com/facebook/places/internal/ScannerException.java b/facebook-places/src/main/java/com/facebook/places/internal/ScannerException.java similarity index 100% rename from facebook/src/main/java/com/facebook/places/internal/ScannerException.java rename to facebook-places/src/main/java/com/facebook/places/internal/ScannerException.java diff --git a/facebook/src/main/java/com/facebook/places/internal/ScannerFactory.java b/facebook-places/src/main/java/com/facebook/places/internal/ScannerFactory.java similarity index 100% rename from facebook/src/main/java/com/facebook/places/internal/ScannerFactory.java rename to facebook-places/src/main/java/com/facebook/places/internal/ScannerFactory.java diff --git a/facebook/src/main/java/com/facebook/places/internal/WifiScanResult.java b/facebook-places/src/main/java/com/facebook/places/internal/WifiScanResult.java similarity index 100% rename from facebook/src/main/java/com/facebook/places/internal/WifiScanResult.java rename to facebook-places/src/main/java/com/facebook/places/internal/WifiScanResult.java diff --git a/facebook/src/main/java/com/facebook/places/internal/WifiScanner.java b/facebook-places/src/main/java/com/facebook/places/internal/WifiScanner.java similarity index 100% rename from facebook/src/main/java/com/facebook/places/internal/WifiScanner.java rename to facebook-places/src/main/java/com/facebook/places/internal/WifiScanner.java diff --git a/facebook/src/main/java/com/facebook/places/internal/WifiScannerImpl.java b/facebook-places/src/main/java/com/facebook/places/internal/WifiScannerImpl.java similarity index 91% rename from facebook/src/main/java/com/facebook/places/internal/WifiScannerImpl.java rename to facebook-places/src/main/java/com/facebook/places/internal/WifiScannerImpl.java index 3f879c963a..6cabe30f6e 100644 --- a/facebook/src/main/java/com/facebook/places/internal/WifiScannerImpl.java +++ b/facebook-places/src/main/java/com/facebook/places/internal/WifiScannerImpl.java @@ -30,7 +30,6 @@ import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Build; -import android.os.Bundle; import android.os.SystemClock; import android.text.TextUtils; @@ -40,7 +39,6 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; -import java.util.Set; /** * com.facebook.places.internal is solely for the use of other packages within the @@ -50,6 +48,9 @@ @SuppressWarnings("MissingPermission") public class WifiScannerImpl implements WifiScanner { + private static final String SSID_NOMAP = "_nomap"; + private static final String SSID_OPTOUT = "_optout"; + private Context context; private WifiManager wifiManager; private ScanResultBroadcastReceiver broadcastReceiver; @@ -89,7 +90,8 @@ public WifiScanResult getConnectedWifi() throws ScannerException { WifiInfo wifiInfo = wifiManager.getConnectionInfo(); if (wifiInfo == null || TextUtils.isEmpty(wifiInfo.getBSSID()) - || wifiInfo.getSupplicantState() != SupplicantState.COMPLETED) { + || wifiInfo.getSupplicantState() != SupplicantState.COMPLETED + || isWifiSsidBlacklisted(wifiInfo.getSSID())) { return null; } WifiScanResult wifiScanResult = new WifiScanResult(); @@ -133,12 +135,14 @@ private List getCachedScanResults() filterResults(scanResults, params.getWifiMaxScanResults()); List wifiScanResults = new ArrayList<>(scanResults.size()); for (ScanResult scanResult : scanResults) { - WifiScanResult wifiScanResult = new WifiScanResult(); - wifiScanResult.bssid = scanResult.BSSID; - wifiScanResult.ssid = scanResult.SSID; - wifiScanResult.rssi = scanResult.level; - wifiScanResult.frequency = scanResult.frequency; - wifiScanResults.add(wifiScanResult); + if (!isWifiSsidBlacklisted(scanResult.SSID)) { + WifiScanResult wifiScanResult = new WifiScanResult(); + wifiScanResult.bssid = scanResult.BSSID; + wifiScanResult.ssid = scanResult.SSID; + wifiScanResult.rssi = scanResult.level; + wifiScanResult.frequency = scanResult.frequency; + wifiScanResults.add(wifiScanResult); + } } return wifiScanResults; } catch (Exception e) { @@ -146,6 +150,16 @@ private List getCachedScanResults() } } + private static boolean isWifiSsidBlacklisted(String ssid) { + if (ssid != null) { + if (ssid.endsWith(SSID_NOMAP) + || ssid.contains(SSID_OPTOUT)) { + return true; + } + } + return false; + } + private static void filterResults(List scanResults, int maxResults) { if (scanResults.size() > maxResults) { Comparator comparator = new Comparator() { diff --git a/facebook/src/main/java/com/facebook/places/model/CurrentPlaceFeedbackRequestParams.java b/facebook-places/src/main/java/com/facebook/places/model/CurrentPlaceFeedbackRequestParams.java similarity index 100% rename from facebook/src/main/java/com/facebook/places/model/CurrentPlaceFeedbackRequestParams.java rename to facebook-places/src/main/java/com/facebook/places/model/CurrentPlaceFeedbackRequestParams.java diff --git a/facebook/src/main/java/com/facebook/places/model/CurrentPlaceRequestParams.java b/facebook-places/src/main/java/com/facebook/places/model/CurrentPlaceRequestParams.java similarity index 100% rename from facebook/src/main/java/com/facebook/places/model/CurrentPlaceRequestParams.java rename to facebook-places/src/main/java/com/facebook/places/model/CurrentPlaceRequestParams.java diff --git a/facebook/src/main/java/com/facebook/places/model/PlaceFields.java b/facebook-places/src/main/java/com/facebook/places/model/PlaceFields.java similarity index 100% rename from facebook/src/main/java/com/facebook/places/model/PlaceFields.java rename to facebook-places/src/main/java/com/facebook/places/model/PlaceFields.java diff --git a/facebook/src/main/java/com/facebook/places/model/PlaceInfoRequestParams.java b/facebook-places/src/main/java/com/facebook/places/model/PlaceInfoRequestParams.java similarity index 100% rename from facebook/src/main/java/com/facebook/places/model/PlaceInfoRequestParams.java rename to facebook-places/src/main/java/com/facebook/places/model/PlaceInfoRequestParams.java diff --git a/facebook/src/main/java/com/facebook/places/model/PlaceSearchRequestParams.java b/facebook-places/src/main/java/com/facebook/places/model/PlaceSearchRequestParams.java similarity index 100% rename from facebook/src/main/java/com/facebook/places/model/PlaceSearchRequestParams.java rename to facebook-places/src/main/java/com/facebook/places/model/PlaceSearchRequestParams.java diff --git a/facebook-share/.gitignore b/facebook-share/.gitignore new file mode 100644 index 0000000000..796b96d1c4 --- /dev/null +++ b/facebook-share/.gitignore @@ -0,0 +1 @@ +/build diff --git a/facebook-share/build.gradle b/facebook-share/build.gradle new file mode 100644 index 0000000000..e27749b89f --- /dev/null +++ b/facebook-share/build.gradle @@ -0,0 +1,48 @@ +apply plugin: 'com.android.library' + +project.group 'com.facebook.android' + +project.ext.name = 'Facebook-Share-Android-SDK' +project.ext.artifactId = "facebook-share" +project.ext.description = 'Facebook Share Android SDK' +project.ext.url = 'https://github.com/facebook/facebook-android-sdk/facebook-share' + +dependencies { + // Facebook Dependencies + compile project(':facebook-core') + compile project(':facebook-common') +} + +android { + compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION) + buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION + + defaultConfig { + minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION) + targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION) + consumerProguardFiles 'proguard-rules.pro' + vectorDrawables.useSupportLibrary = true + } + + aaptOptions { + additionalParameters "--no-version-vectors" + } + + lintOptions { + abortOnError false + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_7 + targetCompatibility JavaVersion.VERSION_1_7 + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +apply from: "${rootDir}/maven.gradle" diff --git a/facebook-share/proguard-rules.pro b/facebook-share/proguard-rules.pro new file mode 100644 index 0000000000..1b6297c815 --- /dev/null +++ b/facebook-share/proguard-rules.pro @@ -0,0 +1,33 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +-keepclassmembers class * implements java.io.Serializable { + private static final java.io.ObjectStreamField[] serialPersistentFields; + private void writeObject(java.io.ObjectOutputStream); + private void readObject(java.io.ObjectInputStream); + java.lang.Object writeReplace(); + java.lang.Object readResolve(); +} + +-keepnames class com.facebook.FacebookActivity +-keepnames class com.facebook.CustomTabActivity + +-keep class com.facebook.share.Share diff --git a/facebook/src/main/res/values-af/messenger_button_strings.xml b/facebook-share/src/main/AndroidManifest.xml similarity index 86% rename from facebook/src/main/res/values-af/messenger_button_strings.xml rename to facebook-share/src/main/AndroidManifest.xml index 17be2a914a..3f8c2f38e2 100644 --- a/facebook/src/main/res/values-af/messenger_button_strings.xml +++ b/facebook-share/src/main/AndroidManifest.xml @@ -19,6 +19,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --> - - Stuur - + + + + + + + diff --git a/facebook/src/main/java/com/facebook/internal/CollectionMapper.java b/facebook-share/src/main/java/com/facebook/internal/CollectionMapper.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/CollectionMapper.java rename to facebook-share/src/main/java/com/facebook/internal/CollectionMapper.java diff --git a/facebook/src/main/java/com/facebook/internal/Mutable.java b/facebook-share/src/main/java/com/facebook/internal/Mutable.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/Mutable.java rename to facebook-share/src/main/java/com/facebook/internal/Mutable.java diff --git a/facebook/src/main/java/com/facebook/share/DeviceShareDialog.java b/facebook-share/src/main/java/com/facebook/share/DeviceShareDialog.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/DeviceShareDialog.java rename to facebook-share/src/main/java/com/facebook/share/DeviceShareDialog.java diff --git a/facebook-share/src/main/java/com/facebook/share/Share.java b/facebook-share/src/main/java/com/facebook/share/Share.java new file mode 100644 index 0000000000..6a34d50a6f --- /dev/null +++ b/facebook-share/src/main/java/com/facebook/share/Share.java @@ -0,0 +1,5 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +package com.facebook.share; + +public class Share { } diff --git a/facebook/src/main/java/com/facebook/share/ShareApi.java b/facebook-share/src/main/java/com/facebook/share/ShareApi.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/ShareApi.java rename to facebook-share/src/main/java/com/facebook/share/ShareApi.java diff --git a/facebook/src/main/java/com/facebook/share/internal/AppInviteDialogFeature.java b/facebook-share/src/main/java/com/facebook/share/internal/AppInviteDialogFeature.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/AppInviteDialogFeature.java rename to facebook-share/src/main/java/com/facebook/share/internal/AppInviteDialogFeature.java diff --git a/facebook/src/main/java/com/facebook/share/internal/GameRequestValidation.java b/facebook-share/src/main/java/com/facebook/share/internal/GameRequestValidation.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/GameRequestValidation.java rename to facebook-share/src/main/java/com/facebook/share/internal/GameRequestValidation.java diff --git a/facebook/src/main/java/com/facebook/share/internal/MessageDialogFeature.java b/facebook-share/src/main/java/com/facebook/share/internal/MessageDialogFeature.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/MessageDialogFeature.java rename to facebook-share/src/main/java/com/facebook/share/internal/MessageDialogFeature.java diff --git a/facebook/src/main/java/com/facebook/share/internal/OpenGraphMessageDialogFeature.java b/facebook-share/src/main/java/com/facebook/share/internal/OpenGraphMessageDialogFeature.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/OpenGraphMessageDialogFeature.java rename to facebook-share/src/main/java/com/facebook/share/internal/OpenGraphMessageDialogFeature.java diff --git a/facebook/src/main/java/com/facebook/share/internal/VideoUploader.java b/facebook-share/src/main/java/com/facebook/share/internal/VideoUploader.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/VideoUploader.java rename to facebook-share/src/main/java/com/facebook/share/internal/VideoUploader.java diff --git a/facebook/src/main/java/com/facebook/share/model/AppInviteContent.java b/facebook-share/src/main/java/com/facebook/share/model/AppInviteContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/AppInviteContent.java rename to facebook-share/src/main/java/com/facebook/share/model/AppInviteContent.java diff --git a/facebook/src/main/java/com/facebook/share/widget/AppInviteDialog.java b/facebook-share/src/main/java/com/facebook/share/widget/AppInviteDialog.java similarity index 97% rename from facebook/src/main/java/com/facebook/share/widget/AppInviteDialog.java rename to facebook-share/src/main/java/com/facebook/share/widget/AppInviteDialog.java index 3266093e07..90f6f4b569 100644 --- a/facebook/src/main/java/com/facebook/share/widget/AppInviteDialog.java +++ b/facebook-share/src/main/java/com/facebook/share/widget/AppInviteDialog.java @@ -29,6 +29,12 @@ import com.facebook.FacebookCallback; import com.facebook.internal.*; +import com.facebook.internal.AppCall; +import com.facebook.internal.CallbackManagerImpl; +import com.facebook.internal.DialogFeature; +import com.facebook.internal.DialogPresenter; +import com.facebook.internal.FacebookDialogBase; +import com.facebook.internal.FragmentWrapper; import com.facebook.share.internal.*; import com.facebook.share.model.AppInviteContent; diff --git a/facebook/src/main/java/com/facebook/share/widget/CreateAppGroupDialog.java b/facebook-share/src/main/java/com/facebook/share/widget/CreateAppGroupDialog.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/widget/CreateAppGroupDialog.java rename to facebook-share/src/main/java/com/facebook/share/widget/CreateAppGroupDialog.java diff --git a/facebook/src/main/java/com/facebook/share/widget/DeviceShareButton.java b/facebook-share/src/main/java/com/facebook/share/widget/DeviceShareButton.java similarity index 99% rename from facebook/src/main/java/com/facebook/share/widget/DeviceShareButton.java rename to facebook-share/src/main/java/com/facebook/share/widget/DeviceShareButton.java index 67b03ffc7d..97fdafef41 100644 --- a/facebook/src/main/java/com/facebook/share/widget/DeviceShareButton.java +++ b/facebook-share/src/main/java/com/facebook/share/widget/DeviceShareButton.java @@ -28,10 +28,10 @@ import com.facebook.FacebookButtonBase; import com.facebook.FacebookCallback; import com.facebook.FacebookSdk; -import com.facebook.R; import com.facebook.internal.AnalyticsEvents; import com.facebook.internal.CallbackManagerImpl; import com.facebook.share.DeviceShareDialog; +import com.facebook.share.R; import com.facebook.share.model.ShareContent; /** diff --git a/facebook/src/main/java/com/facebook/share/widget/GameRequestDialog.java b/facebook-share/src/main/java/com/facebook/share/widget/GameRequestDialog.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/widget/GameRequestDialog.java rename to facebook-share/src/main/java/com/facebook/share/widget/GameRequestDialog.java diff --git a/facebook/src/main/java/com/facebook/share/widget/JoinAppGroupDialog.java b/facebook-share/src/main/java/com/facebook/share/widget/JoinAppGroupDialog.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/widget/JoinAppGroupDialog.java rename to facebook-share/src/main/java/com/facebook/share/widget/JoinAppGroupDialog.java diff --git a/facebook/src/main/java/com/facebook/share/widget/MessageDialog.java b/facebook-share/src/main/java/com/facebook/share/widget/MessageDialog.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/widget/MessageDialog.java rename to facebook-share/src/main/java/com/facebook/share/widget/MessageDialog.java diff --git a/facebook/src/main/java/com/facebook/share/widget/SendButton.java b/facebook-share/src/main/java/com/facebook/share/widget/SendButton.java similarity index 99% rename from facebook/src/main/java/com/facebook/share/widget/SendButton.java rename to facebook-share/src/main/java/com/facebook/share/widget/SendButton.java index a85330561c..4155360c7e 100644 --- a/facebook/src/main/java/com/facebook/share/widget/SendButton.java +++ b/facebook-share/src/main/java/com/facebook/share/widget/SendButton.java @@ -23,10 +23,10 @@ import android.content.Context; import android.util.AttributeSet; -import com.facebook.R; import com.facebook.internal.AnalyticsEvents; import com.facebook.internal.CallbackManagerImpl; import com.facebook.internal.FacebookDialogBase; +import com.facebook.share.R; import com.facebook.share.Sharer; import com.facebook.share.model.ShareContent; diff --git a/facebook/src/main/java/com/facebook/share/widget/ShareButton.java b/facebook-share/src/main/java/com/facebook/share/widget/ShareButton.java similarity index 99% rename from facebook/src/main/java/com/facebook/share/widget/ShareButton.java rename to facebook-share/src/main/java/com/facebook/share/widget/ShareButton.java index 810218227b..d37f6b1649 100644 --- a/facebook/src/main/java/com/facebook/share/widget/ShareButton.java +++ b/facebook-share/src/main/java/com/facebook/share/widget/ShareButton.java @@ -23,10 +23,10 @@ import android.content.Context; import android.util.AttributeSet; -import com.facebook.R; import com.facebook.internal.AnalyticsEvents; import com.facebook.internal.CallbackManagerImpl; import com.facebook.internal.FacebookDialogBase; +import com.facebook.share.R; import com.facebook.share.Sharer; import com.facebook.share.model.ShareContent; diff --git a/facebook/src/main/java/com/facebook/share/widget/ShareButtonBase.java b/facebook-share/src/main/java/com/facebook/share/widget/ShareButtonBase.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/widget/ShareButtonBase.java rename to facebook-share/src/main/java/com/facebook/share/widget/ShareButtonBase.java diff --git a/facebook/src/main/res/color/com_facebook_send_button_text_color.xml b/facebook-share/src/main/res/color/com_facebook_send_button_text_color.xml similarity index 100% rename from facebook/src/main/res/color/com_facebook_send_button_text_color.xml rename to facebook-share/src/main/res/color/com_facebook_send_button_text_color.xml diff --git a/facebook-share/src/main/res/drawable-hdpi/com_facebook_button_send_icon_blue.png b/facebook-share/src/main/res/drawable-hdpi/com_facebook_button_send_icon_blue.png new file mode 100644 index 0000000000..68ac4fdd2d Binary files /dev/null and b/facebook-share/src/main/res/drawable-hdpi/com_facebook_button_send_icon_blue.png differ diff --git a/facebook-share/src/main/res/drawable-hdpi/com_facebook_button_send_icon_white.png b/facebook-share/src/main/res/drawable-hdpi/com_facebook_button_send_icon_white.png new file mode 100644 index 0000000000..26ce8e230a Binary files /dev/null and b/facebook-share/src/main/res/drawable-hdpi/com_facebook_button_send_icon_white.png differ diff --git a/facebook-share/src/main/res/drawable-mdpi/com_facebook_button_send_icon_blue.png b/facebook-share/src/main/res/drawable-mdpi/com_facebook_button_send_icon_blue.png new file mode 100644 index 0000000000..3a2474bd8d Binary files /dev/null and b/facebook-share/src/main/res/drawable-mdpi/com_facebook_button_send_icon_blue.png differ diff --git a/facebook-share/src/main/res/drawable-mdpi/com_facebook_button_send_icon_white.png b/facebook-share/src/main/res/drawable-mdpi/com_facebook_button_send_icon_white.png new file mode 100644 index 0000000000..e76263eb53 Binary files /dev/null and b/facebook-share/src/main/res/drawable-mdpi/com_facebook_button_send_icon_white.png differ diff --git a/facebook-share/src/main/res/drawable-xhdpi/com_facebook_button_send_icon_blue.png b/facebook-share/src/main/res/drawable-xhdpi/com_facebook_button_send_icon_blue.png new file mode 100644 index 0000000000..3466887adf Binary files /dev/null and b/facebook-share/src/main/res/drawable-xhdpi/com_facebook_button_send_icon_blue.png differ diff --git a/facebook-share/src/main/res/drawable-xhdpi/com_facebook_button_send_icon_white.png b/facebook-share/src/main/res/drawable-xhdpi/com_facebook_button_send_icon_white.png new file mode 100644 index 0000000000..0d354dd192 Binary files /dev/null and b/facebook-share/src/main/res/drawable-xhdpi/com_facebook_button_send_icon_white.png differ diff --git a/facebook-share/src/main/res/drawable-xxhdpi/com_facebook_button_send_icon_white.png b/facebook-share/src/main/res/drawable-xxhdpi/com_facebook_button_send_icon_white.png new file mode 100644 index 0000000000..34423ab98e Binary files /dev/null and b/facebook-share/src/main/res/drawable-xxhdpi/com_facebook_button_send_icon_white.png differ diff --git a/facebook/src/main/res/drawable/com_facebook_button_send_background.xml b/facebook-share/src/main/res/drawable/com_facebook_button_send_background.xml similarity index 100% rename from facebook/src/main/res/drawable/com_facebook_button_send_background.xml rename to facebook-share/src/main/res/drawable/com_facebook_button_send_background.xml diff --git a/facebook/src/main/res/drawable/com_facebook_send_button_icon.xml b/facebook-share/src/main/res/drawable/com_facebook_send_button_icon.xml similarity index 100% rename from facebook/src/main/res/drawable/com_facebook_send_button_icon.xml rename to facebook-share/src/main/res/drawable/com_facebook_send_button_icon.xml diff --git a/facebook-share/src/main/res/values/styles.xml b/facebook-share/src/main/res/values/styles.xml new file mode 100644 index 0000000000..571f3dfca1 --- /dev/null +++ b/facebook-share/src/main/res/values/styles.xml @@ -0,0 +1,39 @@ + + + + + #0084ff + @color/com_facebook_messenger_blue + #006fff + + + + + + diff --git a/facebook/build.gradle b/facebook/build.gradle index 4c416d73e3..2d430067fb 100644 --- a/facebook/build.gradle +++ b/facebook/build.gradle @@ -1,21 +1,21 @@ apply plugin: 'com.android.library' -repositories { - mavenCentral() -} +project.group 'com.facebook.android' -project.group = 'com.facebook.android' +project.ext.name = 'Facebook-Android-SDK' +project.ext.artifactId = "facebook-android-sdk" +project.ext.description = 'Facebook Android SDK' +project.ext.url = 'https://github.com/facebook/facebook-android-sdk' dependencies { // Facebook Dependencies - compile 'com.android.support:support-v4:25.3.1' - compile 'com.android.support:appcompat-v7:25.3.1' - compile 'com.android.support:cardview-v7:25.3.1' - compile 'com.android.support:customtabs:25.3.1' - compile 'com.parse.bolts:bolts-android:1.4.0' - - // Third-party Dependencies - compile 'com.google.zxing:core:3.3.0' + compile project(':facebook-core') + compile project(':facebook-common') + compile project(':facebook-login') + compile project(":facebook-share") + compile project(":facebook-places") + compile project(":facebook-applinks") + compile project(":facebook-messenger") // Unit Tests testCompile 'junit:junit:4.12' @@ -41,7 +41,6 @@ android { minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION) targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION) consumerProguardFiles 'proguard-project.txt' - vectorDrawables.useSupportLibrary = true } @@ -52,109 +51,11 @@ android { lintOptions { abortOnError false } + compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } } -apply plugin: 'maven' -apply plugin: 'signing' - -def isSnapshot = version.endsWith('-SNAPSHOT') -def ossrhUsername = hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : "" -def ossrhPassword = hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : "" - -task setVersion { - // The version will be derived from source - project.version = null - def sdkVersionFile = file('src/main/java/com/facebook/FacebookSdkVersion.java') - sdkVersionFile.eachLine{ - def matcher = (it =~ /(?:.*BUILD = \")(.*)(?:\".*)/) - if (matcher.matches()) { - project.version = matcher[0][1] - return - } - } - if (project.version.is('unspecified')) { - throw new GradleScriptException('Version could not be found.', null) - } -} - -uploadArchives { - repositories.mavenDeployer { - beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } - - repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") { - authentication(userName: ossrhUsername, password: ossrhPassword) - } - - snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") { - authentication(userName: ossrhUsername, password: ossrhPassword) - } - - pom.project { - name 'Facebook-Android-SDK' - artifactId = 'facebook-android-sdk' - packaging 'aar' - description 'Facebook Android SDK' - url 'https://github.com/facebook/facebook-android-sdk' - - scm { - connection 'scm:git@github.com:facebook/facebook-android-sdk.git' - developerConnection 'scm:git@github.com:facebook/facebook-android-sdk.git' - url 'https://github.com/facebook/facebook-android-sdk' - } - - licenses { - license { - name 'Facebook Platform License' - url 'https://github.com/facebook/facebook-android-sdk/blob/master/LICENSE.txt' - distribution 'repo' - } - } - - developers { - developer { - id 'facebook' - name 'Facebook' - } - } - } - } -} - -uploadArchives.dependsOn(setVersion) - -signing { - required { !isSnapshot && gradle.taskGraph.hasTask("uploadArchives") } - sign configurations.archives -} - -task androidJavadocs(type: Javadoc) { - source = android.sourceSets.main.java.srcDirs - classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) - // JDK 1.8 is more strict then 1.7. Have JDK 1.8 behave like 1.7 for javadoc generation - if (org.gradle.internal.jvm.Jvm.current().getJavaVersion() == JavaVersion.VERSION_1_8) { - options.addStringOption('Xdoclint:none', '-quiet') - } -} - -task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { - classifier = 'javadoc' - from androidJavadocs.destinationDir -} - -task androidSourcesJar(type: Jar) { - classifier = 'sources' - from android.sourceSets.main.java.sourceFiles -} - -artifacts { - archives androidSourcesJar - archives androidJavadocsJar -} - -afterEvaluate { - androidJavadocs.classpath += project.android.libraryVariants.toList().first().javaCompile.classpath -} +apply from: "${rootDir}/maven.gradle" diff --git a/facebook/proguard-project.txt b/facebook/proguard-project.txt index 1eca961d72..a3c4133ef2 100644 --- a/facebook/proguard-project.txt +++ b/facebook/proguard-project.txt @@ -25,4 +25,14 @@ private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); -} \ No newline at end of file +} + +-keepnames class com.facebook.FacebookActivity +-keepnames class com.facebook.CustomTabActivity + +-keep class com.facebook.all.All + +-keep public class com.android.vending.billing.IInAppBillingService { + public static com.android.vending.billing.IInAppBillingService asInterface(android.os.IBinder); + public android.os.Bundle getSkuDetails(int, java.lang.String, java.lang.String, android.os.Bundle); +} diff --git a/facebook/src/androidTest/java/com/facebook/AsyncRequestTests.java b/facebook/src/androidTest/java/com/facebook/AsyncRequestTests.java index 399d62be53..151c4a93de 100644 --- a/facebook/src/androidTest/java/com/facebook/AsyncRequestTests.java +++ b/facebook/src/androidTest/java/com/facebook/AsyncRequestTests.java @@ -25,17 +25,12 @@ import android.test.suitebuilder.annotation.LargeTest; import android.test.suitebuilder.annotation.MediumTest; import android.test.suitebuilder.annotation.SmallTest; -import android.test.suitebuilder.annotation.Suppress; -import com.facebook.internal.BundleJSONConverter; import com.facebook.share.internal.ShareInternalUtility; import org.json.JSONArray; import org.json.JSONObject; -import java.net.HttpURLConnection; -import java.util.Arrays; - public class AsyncRequestTests extends FacebookTestCase { @SmallTest diff --git a/facebook/src/androidTest/java/com/facebook/RequestTests.java b/facebook/src/androidTest/java/com/facebook/RequestTests.java index 59c3491af2..c2ad3ef33c 100644 --- a/facebook/src/androidTest/java/com/facebook/RequestTests.java +++ b/facebook/src/androidTest/java/com/facebook/RequestTests.java @@ -25,7 +25,6 @@ import android.net.Uri; import android.os.Bundle; import android.test.suitebuilder.annotation.LargeTest; -import android.test.suitebuilder.annotation.Suppress; import com.facebook.internal.GraphUtil; import com.facebook.share.ShareApi; @@ -49,7 +48,6 @@ import java.net.HttpURLConnection; import java.net.URISyntaxException; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; @@ -422,7 +420,7 @@ public void testCreateOpenGraphObjectWithBadImageType() throws InterruptedExcept .build(); try { - GraphRequest request = GraphRequest.createOpenGraphObject(ogObject); + GraphRequest request = ShareGraphRequest.createOpenGraphObject(ogObject); GraphResponse response = request.executeAndWait(); //should fail because do not accept images without imageurl fail(); @@ -450,7 +448,7 @@ public void testCreateOpenGraphObject() throws InterruptedException { .build(); try { - GraphRequest request = GraphRequest.createOpenGraphObject(ogObject); + GraphRequest request = ShareGraphRequest.createOpenGraphObject(ogObject); GraphResponse response = request.executeAndWait(); assertNotNull(response); diff --git a/facebook/src/main/java/com/facebook/TestUserManager.java b/facebook/src/androidTest/java/com/facebook/TestUserManager.java similarity index 97% rename from facebook/src/main/java/com/facebook/TestUserManager.java rename to facebook/src/androidTest/java/com/facebook/TestUserManager.java index 4f3cdf729f..95176db03b 100644 --- a/facebook/src/main/java/com/facebook/TestUserManager.java +++ b/facebook/src/androidTest/java/com/facebook/TestUserManager.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -24,6 +24,13 @@ import android.text.TextUtils; import android.util.Log; +import com.facebook.AccessToken; +import com.facebook.AccessTokenSource; +import com.facebook.FacebookException; +import com.facebook.FacebookRequestError; +import com.facebook.GraphRequest; +import com.facebook.GraphResponse; +import com.facebook.HttpMethod; import com.facebook.internal.Utility; import org.json.JSONArray; diff --git a/facebook/src/androidTest/java/com/facebook/TestUtils.java b/facebook/src/androidTest/java/com/facebook/TestUtils.java index c0d89c49b5..56cbf05690 100644 --- a/facebook/src/androidTest/java/com/facebook/TestUtils.java +++ b/facebook/src/androidTest/java/com/facebook/TestUtils.java @@ -26,6 +26,7 @@ import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; + import com.facebook.internal.FileLruCache; import com.facebook.internal.Utility; import junit.framework.Assert; diff --git a/facebook/src/androidTest/java/com/facebook/appevents/AppEventsLoggerTests.java b/facebook/src/androidTest/java/com/facebook/appevents/AppEventsLoggerTests.java index 22fb6f6f02..b6e4449d5e 100644 --- a/facebook/src/androidTest/java/com/facebook/appevents/AppEventsLoggerTests.java +++ b/facebook/src/androidTest/java/com/facebook/appevents/AppEventsLoggerTests.java @@ -20,7 +20,6 @@ package com.facebook.appevents; -import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.support.v4.content.LocalBroadcastManager; @@ -30,14 +29,6 @@ import com.facebook.FacebookSdk; import com.facebook.FacebookTestCase; import com.facebook.WaitForBroadcastReceiver; -import com.facebook.appevents.AppEventsLogger; -import com.facebook.internal.FetchedAppSettingsManager; - -import java.io.FileInputStream; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.util.HashMap; -import java.util.List; public class AppEventsLoggerTests extends FacebookTestCase { public void testSimpleCall() throws InterruptedException { diff --git a/facebook/src/main/java/com/facebook/internal/GraphUtil.java b/facebook/src/androidTest/java/com/facebook/internal/GraphUtil.java similarity index 99% rename from facebook/src/main/java/com/facebook/internal/GraphUtil.java rename to facebook/src/androidTest/java/com/facebook/internal/GraphUtil.java index ea60a38d18..b9fcc937e3 100644 --- a/facebook/src/main/java/com/facebook/internal/GraphUtil.java +++ b/facebook/src/androidTest/java/com/facebook/internal/GraphUtil.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, diff --git a/facebook/src/androidTest/java/com/facebook/internal/ImageResponseCacheTest.java b/facebook/src/androidTest/java/com/facebook/internal/ImageResponseCacheTest.java index dfc53405bc..23084b4b36 100644 --- a/facebook/src/androidTest/java/com/facebook/internal/ImageResponseCacheTest.java +++ b/facebook/src/androidTest/java/com/facebook/internal/ImageResponseCacheTest.java @@ -27,13 +27,9 @@ import android.test.AndroidTestCase; import android.test.suitebuilder.annotation.LargeTest; -import com.facebook.FacebookSdk; -import com.facebook.TestUtils; - import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; -import java.net.URI; import java.net.URL; import java.nio.ByteBuffer; import java.util.Arrays; diff --git a/facebook/src/main/AndroidManifest.xml b/facebook/src/main/AndroidManifest.xml index ee6a2a828b..ad438745bb 100644 --- a/facebook/src/main/AndroidManifest.xml +++ b/facebook/src/main/AndroidManifest.xml @@ -20,25 +20,10 @@ --> - - - + package="com.facebook"> + + - - + diff --git a/facebook/src/main/java/com.facebook.all/All.java b/facebook/src/main/java/com.facebook.all/All.java new file mode 100644 index 0000000000..6f907f5da1 --- /dev/null +++ b/facebook/src/main/java/com.facebook.all/All.java @@ -0,0 +1,5 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +package com.facebook.all; + +public class All { } diff --git a/facebook/src/main/java/com/facebook/appevents/internal/AutomaticAnalyticsLogger.java b/facebook/src/main/java/com/facebook/appevents/internal/AutomaticAnalyticsLogger.java deleted file mode 100644 index bb9b7f6cb9..0000000000 --- a/facebook/src/main/java/com/facebook/appevents/internal/AutomaticAnalyticsLogger.java +++ /dev/null @@ -1,77 +0,0 @@ -/** - * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. - * - * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, - * copy, modify, and distribute this software in source code or binary form for use - * in connection with the web services and APIs provided by Facebook. - * - * As with any software that integrates with the Facebook platform, your use of - * this software is subject to the Facebook Developer Principles and Policies - * [http://developers.facebook.com/policy/]. This copyright notice shall be - * included in all copies or substantial portions of the software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -package com.facebook.appevents.internal; - -import android.app.Application; -import android.content.Context; -import android.os.Bundle; -import android.util.Log; - -import com.facebook.FacebookSdk; -import com.facebook.appevents.AppEventsLogger; -import com.facebook.internal.FetchedAppSettings; -import com.facebook.internal.FetchedAppSettingsManager; -import com.facebook.internal.Validate; - -/** - * com.facebook.appevents.internal is solely for the use of other packages within the - * Facebook SDK for Android. Use of any of the classes in this package is - * unsupported, and they may be modified or removed without warning at any time. - */ -public class AutomaticAnalyticsLogger { - // Constants - private static final String TAG = AutomaticAnalyticsLogger.class.getCanonicalName(); - - public static void logActivateAppEvent() { - final Context context = FacebookSdk.getApplicationContext(); - final String appId = FacebookSdk.getApplicationId(); - final boolean autoLogAppEvents = FacebookSdk.getAutoLogAppEventsEnabled(); - Validate.notNull(context, "context"); - if (autoLogAppEvents) { - if (context instanceof Application) { - AppEventsLogger.activateApp((Application) context, appId); - } else { // Context is probably originated from ContentProvider or Mocked - Log.w( - TAG, - "Automatic logging of basic events will not happen, because " + - "FacebookSdk.getApplicationContext() returns object that is not " + - "instance of android.app.Application. Make sure you call " + - "FacebookSdk.sdkInitialize() from Application class and pass " + - "application context."); - } - } - } - - public static void logActivityTimeSpentEvent(String activityName, long timeSpentInSeconds) { - final Context context = FacebookSdk.getApplicationContext(); - final String appId = FacebookSdk.getApplicationId(); - Validate.notNull(context, "context"); - final FetchedAppSettings settings = FetchedAppSettingsManager.queryAppSettings( - appId, false); - if (settings != null && settings.getAutomaticLoggingEnabled() && timeSpentInSeconds > 0) { - AppEventsLogger appEventsLogger = AppEventsLogger.newLogger(context); - Bundle params = new Bundle(1); - params.putCharSequence(Constants.AA_TIME_SPENT_SCREEN_PARAMETER_NAME, activityName); - appEventsLogger.logEvent( - Constants.AA_TIME_SPENT_EVENT_NAME, timeSpentInSeconds, params); - } - } -} diff --git a/facebook/src/main/res/drawable-hdpi/com_facebook_button_icon_blue.png b/facebook/src/main/res/drawable-hdpi/com_facebook_button_icon_blue.png deleted file mode 100644 index dd8e61a620..0000000000 Binary files a/facebook/src/main/res/drawable-hdpi/com_facebook_button_icon_blue.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-hdpi/com_facebook_button_like_icon_selected.png b/facebook/src/main/res/drawable-hdpi/com_facebook_button_like_icon_selected.png deleted file mode 100644 index 5e8ac3c99e..0000000000 Binary files a/facebook/src/main/res/drawable-hdpi/com_facebook_button_like_icon_selected.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-hdpi/com_facebook_button_send_icon_blue.png b/facebook/src/main/res/drawable-hdpi/com_facebook_button_send_icon_blue.png deleted file mode 100644 index 361e638747..0000000000 Binary files a/facebook/src/main/res/drawable-hdpi/com_facebook_button_send_icon_blue.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-hdpi/com_facebook_button_send_icon_white.png b/facebook/src/main/res/drawable-hdpi/com_facebook_button_send_icon_white.png deleted file mode 100644 index dbc69dccc1..0000000000 Binary files a/facebook/src/main/res/drawable-hdpi/com_facebook_button_send_icon_white.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_black_background.9.png b/facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_black_background.9.png deleted file mode 100644 index 2c5b1bbad1..0000000000 Binary files a/facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_black_background.9.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_black_xout.png b/facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_black_xout.png deleted file mode 100644 index e2903b6ded..0000000000 Binary files a/facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_black_xout.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_background.9.png b/facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_background.9.png deleted file mode 100644 index a42b3cd92e..0000000000 Binary files a/facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_background.9.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_bottomnub.png b/facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_bottomnub.png deleted file mode 100644 index 2d292f2cad..0000000000 Binary files a/facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_bottomnub.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_topnub.png b/facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_topnub.png deleted file mode 100644 index b2dcc40899..0000000000 Binary files a/facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_topnub.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_xout.png b/facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_xout.png deleted file mode 100644 index 1285a1665a..0000000000 Binary files a/facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_xout.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-hdpi/messenger_bubble_large_blue.png b/facebook/src/main/res/drawable-hdpi/messenger_bubble_large_blue.png deleted file mode 100644 index a58670371c..0000000000 Binary files a/facebook/src/main/res/drawable-hdpi/messenger_bubble_large_blue.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-hdpi/messenger_bubble_large_white.png b/facebook/src/main/res/drawable-hdpi/messenger_bubble_large_white.png deleted file mode 100644 index 80be8f6de5..0000000000 Binary files a/facebook/src/main/res/drawable-hdpi/messenger_bubble_large_white.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-hdpi/messenger_bubble_small_blue.png b/facebook/src/main/res/drawable-hdpi/messenger_bubble_small_blue.png deleted file mode 100644 index d7a6fcd423..0000000000 Binary files a/facebook/src/main/res/drawable-hdpi/messenger_bubble_small_blue.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-hdpi/messenger_bubble_small_white.png b/facebook/src/main/res/drawable-hdpi/messenger_bubble_small_white.png deleted file mode 100644 index b368abbaae..0000000000 Binary files a/facebook/src/main/res/drawable-hdpi/messenger_bubble_small_white.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-hdpi/messenger_button_send_round_shadow.png b/facebook/src/main/res/drawable-hdpi/messenger_button_send_round_shadow.png deleted file mode 100644 index f369b41287..0000000000 Binary files a/facebook/src/main/res/drawable-hdpi/messenger_button_send_round_shadow.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-mdpi/com_facebook_button_icon_blue.png b/facebook/src/main/res/drawable-mdpi/com_facebook_button_icon_blue.png deleted file mode 100644 index fa21c2e817..0000000000 Binary files a/facebook/src/main/res/drawable-mdpi/com_facebook_button_icon_blue.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-mdpi/com_facebook_button_send_icon_blue.png b/facebook/src/main/res/drawable-mdpi/com_facebook_button_send_icon_blue.png deleted file mode 100644 index 5d58986ab9..0000000000 Binary files a/facebook/src/main/res/drawable-mdpi/com_facebook_button_send_icon_blue.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-mdpi/com_facebook_button_send_icon_white.png b/facebook/src/main/res/drawable-mdpi/com_facebook_button_send_icon_white.png deleted file mode 100644 index 5964bc945c..0000000000 Binary files a/facebook/src/main/res/drawable-mdpi/com_facebook_button_send_icon_white.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-mdpi/com_facebook_close.png b/facebook/src/main/res/drawable-mdpi/com_facebook_close.png deleted file mode 100755 index 4ffc94cdce..0000000000 Binary files a/facebook/src/main/res/drawable-mdpi/com_facebook_close.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-mdpi/com_facebook_profile_picture_blank_portrait.png b/facebook/src/main/res/drawable-mdpi/com_facebook_profile_picture_blank_portrait.png deleted file mode 100644 index 27a6f7a741..0000000000 Binary files a/facebook/src/main/res/drawable-mdpi/com_facebook_profile_picture_blank_portrait.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-mdpi/com_facebook_profile_picture_blank_square.png b/facebook/src/main/res/drawable-mdpi/com_facebook_profile_picture_blank_square.png deleted file mode 100644 index 77554e01fb..0000000000 Binary files a/facebook/src/main/res/drawable-mdpi/com_facebook_profile_picture_blank_square.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_black_background.9.png b/facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_black_background.9.png deleted file mode 100644 index d10e30391d..0000000000 Binary files a/facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_black_background.9.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_black_xout.png b/facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_black_xout.png deleted file mode 100644 index 51454e5a36..0000000000 Binary files a/facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_black_xout.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_background.9.png b/facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_background.9.png deleted file mode 100644 index bf60245bb7..0000000000 Binary files a/facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_background.9.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_topnub.png b/facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_topnub.png deleted file mode 100644 index e09406081d..0000000000 Binary files a/facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_topnub.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_xout.png b/facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_xout.png deleted file mode 100644 index 85699f8ec2..0000000000 Binary files a/facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_xout.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-mdpi/messenger_bubble_large_blue.png b/facebook/src/main/res/drawable-mdpi/messenger_bubble_large_blue.png deleted file mode 100644 index 89ec1d6a1d..0000000000 Binary files a/facebook/src/main/res/drawable-mdpi/messenger_bubble_large_blue.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-mdpi/messenger_bubble_large_white.png b/facebook/src/main/res/drawable-mdpi/messenger_bubble_large_white.png deleted file mode 100644 index b62f660e10..0000000000 Binary files a/facebook/src/main/res/drawable-mdpi/messenger_bubble_large_white.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-mdpi/messenger_bubble_small_blue.png b/facebook/src/main/res/drawable-mdpi/messenger_bubble_small_blue.png deleted file mode 100644 index cf4417797b..0000000000 Binary files a/facebook/src/main/res/drawable-mdpi/messenger_bubble_small_blue.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-mdpi/messenger_bubble_small_white.png b/facebook/src/main/res/drawable-mdpi/messenger_bubble_small_white.png deleted file mode 100644 index 2f3a364ce3..0000000000 Binary files a/facebook/src/main/res/drawable-mdpi/messenger_bubble_small_white.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-mdpi/messenger_button_send_round_shadow.png b/facebook/src/main/res/drawable-mdpi/messenger_button_send_round_shadow.png deleted file mode 100644 index d5ebd1854e..0000000000 Binary files a/facebook/src/main/res/drawable-mdpi/messenger_button_send_round_shadow.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xhdpi/com_facebook_button_icon_blue.png b/facebook/src/main/res/drawable-xhdpi/com_facebook_button_icon_blue.png deleted file mode 100644 index f4141461b3..0000000000 Binary files a/facebook/src/main/res/drawable-xhdpi/com_facebook_button_icon_blue.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xhdpi/com_facebook_button_like_icon_selected.png b/facebook/src/main/res/drawable-xhdpi/com_facebook_button_like_icon_selected.png deleted file mode 100644 index ccb98d5e3a..0000000000 Binary files a/facebook/src/main/res/drawable-xhdpi/com_facebook_button_like_icon_selected.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xhdpi/com_facebook_button_send_icon_blue.png b/facebook/src/main/res/drawable-xhdpi/com_facebook_button_send_icon_blue.png deleted file mode 100644 index 1fc78ad78f..0000000000 Binary files a/facebook/src/main/res/drawable-xhdpi/com_facebook_button_send_icon_blue.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xhdpi/com_facebook_button_send_icon_white.png b/facebook/src/main/res/drawable-xhdpi/com_facebook_button_send_icon_white.png deleted file mode 100644 index a751b5fe8e..0000000000 Binary files a/facebook/src/main/res/drawable-xhdpi/com_facebook_button_send_icon_white.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_topnub.png b/facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_topnub.png deleted file mode 100644 index 4d3f58f6ed..0000000000 Binary files a/facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_topnub.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_xout.png b/facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_xout.png deleted file mode 100644 index 6cd7bc8d96..0000000000 Binary files a/facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_xout.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_background.9.png b/facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_background.9.png deleted file mode 100644 index 7614b95c34..0000000000 Binary files a/facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_background.9.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_bottomnub.png b/facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_bottomnub.png deleted file mode 100644 index d29b952421..0000000000 Binary files a/facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_bottomnub.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_topnub.png b/facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_topnub.png deleted file mode 100644 index d2dc678ee9..0000000000 Binary files a/facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_topnub.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_xout.png b/facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_xout.png deleted file mode 100644 index e9bc616f1e..0000000000 Binary files a/facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_xout.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xhdpi/messenger_bubble_large_blue.png b/facebook/src/main/res/drawable-xhdpi/messenger_bubble_large_blue.png deleted file mode 100644 index 7bf06cc29d..0000000000 Binary files a/facebook/src/main/res/drawable-xhdpi/messenger_bubble_large_blue.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xhdpi/messenger_bubble_large_white.png b/facebook/src/main/res/drawable-xhdpi/messenger_bubble_large_white.png deleted file mode 100644 index 0743811ac2..0000000000 Binary files a/facebook/src/main/res/drawable-xhdpi/messenger_bubble_large_white.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xhdpi/messenger_bubble_small_blue.png b/facebook/src/main/res/drawable-xhdpi/messenger_bubble_small_blue.png deleted file mode 100644 index 8de9b46a8c..0000000000 Binary files a/facebook/src/main/res/drawable-xhdpi/messenger_bubble_small_blue.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xhdpi/messenger_bubble_small_white.png b/facebook/src/main/res/drawable-xhdpi/messenger_bubble_small_white.png deleted file mode 100644 index 9ed2cb28b2..0000000000 Binary files a/facebook/src/main/res/drawable-xhdpi/messenger_bubble_small_white.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xhdpi/messenger_button_send_round_shadow.png b/facebook/src/main/res/drawable-xhdpi/messenger_button_send_round_shadow.png deleted file mode 100644 index 3f93820647..0000000000 Binary files a/facebook/src/main/res/drawable-xhdpi/messenger_button_send_round_shadow.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xxhdpi/com_facebook_button_icon_blue.png b/facebook/src/main/res/drawable-xxhdpi/com_facebook_button_icon_blue.png deleted file mode 100644 index 01480c9f54..0000000000 Binary files a/facebook/src/main/res/drawable-xxhdpi/com_facebook_button_icon_blue.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xxhdpi/com_facebook_button_like_icon_selected.png b/facebook/src/main/res/drawable-xxhdpi/com_facebook_button_like_icon_selected.png deleted file mode 100644 index 41137fc92b..0000000000 Binary files a/facebook/src/main/res/drawable-xxhdpi/com_facebook_button_like_icon_selected.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xxhdpi/com_facebook_button_send_icon_white.png b/facebook/src/main/res/drawable-xxhdpi/com_facebook_button_send_icon_white.png deleted file mode 100644 index a30068b98c..0000000000 Binary files a/facebook/src/main/res/drawable-xxhdpi/com_facebook_button_send_icon_white.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xxhdpi/messenger_bubble_large_blue.png b/facebook/src/main/res/drawable-xxhdpi/messenger_bubble_large_blue.png deleted file mode 100644 index 7f18441ff2..0000000000 Binary files a/facebook/src/main/res/drawable-xxhdpi/messenger_bubble_large_blue.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xxhdpi/messenger_bubble_large_white.png b/facebook/src/main/res/drawable-xxhdpi/messenger_bubble_large_white.png deleted file mode 100644 index 39e8f4d7b3..0000000000 Binary files a/facebook/src/main/res/drawable-xxhdpi/messenger_bubble_large_white.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xxhdpi/messenger_bubble_small_blue.png b/facebook/src/main/res/drawable-xxhdpi/messenger_bubble_small_blue.png deleted file mode 100644 index b5ad769bd4..0000000000 Binary files a/facebook/src/main/res/drawable-xxhdpi/messenger_bubble_small_blue.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xxhdpi/messenger_bubble_small_white.png b/facebook/src/main/res/drawable-xxhdpi/messenger_bubble_small_white.png deleted file mode 100644 index 3134ed126d..0000000000 Binary files a/facebook/src/main/res/drawable-xxhdpi/messenger_bubble_small_white.png and /dev/null differ diff --git a/facebook/src/main/res/drawable-xxhdpi/messenger_button_send_round_shadow.png b/facebook/src/main/res/drawable-xxhdpi/messenger_button_send_round_shadow.png deleted file mode 100644 index 5b88c09471..0000000000 Binary files a/facebook/src/main/res/drawable-xxhdpi/messenger_button_send_round_shadow.png and /dev/null differ diff --git a/facebook/src/main/res/values-de/messenger_button_strings.xml b/facebook/src/main/res/values-de/messenger_button_strings.xml deleted file mode 100644 index 8b125cf1ae..0000000000 --- a/facebook/src/main/res/values-de/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Senden - diff --git a/facebook/src/main/res/values-el/messenger_button_strings.xml b/facebook/src/main/res/values-el/messenger_button_strings.xml deleted file mode 100644 index 4acca25b42..0000000000 --- a/facebook/src/main/res/values-el/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Αποστολή - diff --git a/facebook/src/main/res/values-es-rES/messenger_button_strings.xml b/facebook/src/main/res/values-es-rES/messenger_button_strings.xml deleted file mode 100644 index c7b157fb28..0000000000 --- a/facebook/src/main/res/values-es-rES/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Enviar - diff --git a/facebook/src/main/res/values-es/messenger_button_strings.xml b/facebook/src/main/res/values-es/messenger_button_strings.xml deleted file mode 100644 index c7b157fb28..0000000000 --- a/facebook/src/main/res/values-es/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Enviar - diff --git a/facebook/src/main/res/values-fi/messenger_button_strings.xml b/facebook/src/main/res/values-fi/messenger_button_strings.xml deleted file mode 100644 index f9864d98d9..0000000000 --- a/facebook/src/main/res/values-fi/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Lähetä - diff --git a/facebook/src/main/res/values-fr/messenger_button_strings.xml b/facebook/src/main/res/values-fr/messenger_button_strings.xml deleted file mode 100644 index 18721c2915..0000000000 --- a/facebook/src/main/res/values-fr/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Envoyer - diff --git a/facebook/src/main/res/values-gu/messenger_button_strings.xml b/facebook/src/main/res/values-gu/messenger_button_strings.xml deleted file mode 100644 index 012084c1b5..0000000000 --- a/facebook/src/main/res/values-gu/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - મોકલો - diff --git a/facebook/src/main/res/values-hi/messenger_button_strings.xml b/facebook/src/main/res/values-hi/messenger_button_strings.xml deleted file mode 100644 index ad8aeabd3e..0000000000 --- a/facebook/src/main/res/values-hi/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - भेजें - diff --git a/facebook/src/main/res/values-in/messenger_button_strings.xml b/facebook/src/main/res/values-in/messenger_button_strings.xml deleted file mode 100644 index 31bb1a62ea..0000000000 --- a/facebook/src/main/res/values-in/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Kirim - diff --git a/facebook/src/main/res/values-it/messenger_button_strings.xml b/facebook/src/main/res/values-it/messenger_button_strings.xml deleted file mode 100644 index 55473fbdc7..0000000000 --- a/facebook/src/main/res/values-it/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Invia - diff --git a/facebook/src/main/res/values-ja/messenger_button_strings.xml b/facebook/src/main/res/values-ja/messenger_button_strings.xml deleted file mode 100644 index 029d66e5f8..0000000000 --- a/facebook/src/main/res/values-ja/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - 送信 - diff --git a/facebook/src/main/res/values-kn/messenger_button_strings.xml b/facebook/src/main/res/values-kn/messenger_button_strings.xml deleted file mode 100644 index 1b8db435c6..0000000000 --- a/facebook/src/main/res/values-kn/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - ಕಳುಹಿಸು - diff --git a/facebook/src/main/res/values-ko/messenger_button_strings.xml b/facebook/src/main/res/values-ko/messenger_button_strings.xml deleted file mode 100644 index 0f492315bf..0000000000 --- a/facebook/src/main/res/values-ko/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - 보내기 - diff --git a/facebook/src/main/res/values-ml/messenger_button_strings.xml b/facebook/src/main/res/values-ml/messenger_button_strings.xml deleted file mode 100644 index 4709f11784..0000000000 --- a/facebook/src/main/res/values-ml/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - അയയ്ക്കുക - diff --git a/facebook/src/main/res/values-mr/messenger_button_strings.xml b/facebook/src/main/res/values-mr/messenger_button_strings.xml deleted file mode 100644 index 15fd598807..0000000000 --- a/facebook/src/main/res/values-mr/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - पाठवा - diff --git a/facebook/src/main/res/values-ms/messenger_button_strings.xml b/facebook/src/main/res/values-ms/messenger_button_strings.xml deleted file mode 100644 index 567fbbe2a4..0000000000 --- a/facebook/src/main/res/values-ms/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Hantar - diff --git a/facebook/src/main/res/values-nb/messenger_button_strings.xml b/facebook/src/main/res/values-nb/messenger_button_strings.xml deleted file mode 100644 index d4d20fbd98..0000000000 --- a/facebook/src/main/res/values-nb/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Send - diff --git a/facebook/src/main/res/values-nl/messenger_button_strings.xml b/facebook/src/main/res/values-nl/messenger_button_strings.xml deleted file mode 100644 index 293e33aa3e..0000000000 --- a/facebook/src/main/res/values-nl/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Verzenden - diff --git a/facebook/src/main/res/values-pl/messenger_button_strings.xml b/facebook/src/main/res/values-pl/messenger_button_strings.xml deleted file mode 100644 index 4e0d1732ae..0000000000 --- a/facebook/src/main/res/values-pl/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Wyślij - diff --git a/facebook/src/main/res/values-pt-rPT/messenger_button_strings.xml b/facebook/src/main/res/values-pt-rPT/messenger_button_strings.xml deleted file mode 100644 index c7b157fb28..0000000000 --- a/facebook/src/main/res/values-pt-rPT/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Enviar - diff --git a/facebook/src/main/res/values-pt/messenger_button_strings.xml b/facebook/src/main/res/values-pt/messenger_button_strings.xml deleted file mode 100644 index c7b157fb28..0000000000 --- a/facebook/src/main/res/values-pt/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Enviar - diff --git a/facebook/src/main/res/values-ru/messenger_button_strings.xml b/facebook/src/main/res/values-ru/messenger_button_strings.xml deleted file mode 100644 index da0987b7e7..0000000000 --- a/facebook/src/main/res/values-ru/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Отпр - diff --git a/facebook/src/main/res/values-sv/messenger_button_strings.xml b/facebook/src/main/res/values-sv/messenger_button_strings.xml deleted file mode 100644 index 0cff34af88..0000000000 --- a/facebook/src/main/res/values-sv/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Skicka - diff --git a/facebook/src/main/res/values-ta/messenger_button_strings.xml b/facebook/src/main/res/values-ta/messenger_button_strings.xml deleted file mode 100644 index cae24ff921..0000000000 --- a/facebook/src/main/res/values-ta/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - அனுப்பு - diff --git a/facebook/src/main/res/values-te/messenger_button_strings.xml b/facebook/src/main/res/values-te/messenger_button_strings.xml deleted file mode 100644 index d709da3d17..0000000000 --- a/facebook/src/main/res/values-te/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - పంపు - diff --git a/facebook/src/main/res/values-th/messenger_button_strings.xml b/facebook/src/main/res/values-th/messenger_button_strings.xml deleted file mode 100644 index 32f559c085..0000000000 --- a/facebook/src/main/res/values-th/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - ส่ง - diff --git a/facebook/src/main/res/values-tl/messenger_button_strings.xml b/facebook/src/main/res/values-tl/messenger_button_strings.xml deleted file mode 100644 index 38c1611568..0000000000 --- a/facebook/src/main/res/values-tl/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Ipadala - diff --git a/facebook/src/main/res/values-tr/messenger_button_strings.xml b/facebook/src/main/res/values-tr/messenger_button_strings.xml deleted file mode 100644 index e0f9539b21..0000000000 --- a/facebook/src/main/res/values-tr/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Gönder - diff --git a/facebook/src/main/res/values-vi/messenger_button_strings.xml b/facebook/src/main/res/values-vi/messenger_button_strings.xml deleted file mode 100644 index 54840acde3..0000000000 --- a/facebook/src/main/res/values-vi/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Gửi - diff --git a/facebook/src/main/res/values-zh-rCN/messenger_button_strings.xml b/facebook/src/main/res/values-zh-rCN/messenger_button_strings.xml deleted file mode 100644 index 3bc0640da6..0000000000 --- a/facebook/src/main/res/values-zh-rCN/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - 发送 - diff --git a/facebook/src/main/res/values-zh-rHK/messenger_button_strings.xml b/facebook/src/main/res/values-zh-rHK/messenger_button_strings.xml deleted file mode 100644 index 457aeeb9f9..0000000000 --- a/facebook/src/main/res/values-zh-rHK/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - 傳送 - diff --git a/facebook/src/main/res/values-zh-rTW/messenger_button_strings.xml b/facebook/src/main/res/values-zh-rTW/messenger_button_strings.xml deleted file mode 100644 index 457aeeb9f9..0000000000 --- a/facebook/src/main/res/values-zh-rTW/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - 傳送 - diff --git a/facebook/src/main/res/values/messenger_button_strings.xml b/facebook/src/main/res/values/messenger_button_strings.xml deleted file mode 100644 index d4d20fbd98..0000000000 --- a/facebook/src/main/res/values/messenger_button_strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Send - diff --git a/facebook/src/main/res/values/styles.xml b/facebook/src/main/res/values/styles.xml deleted file mode 100644 index 8931eb4632..0000000000 --- a/facebook/src/main/res/values/styles.xml +++ /dev/null @@ -1,148 +0,0 @@ - - - - - #3C6499 - #3B5998 - #0084ff - - 11.0sp - #6a7180 - 2dp - 6dp - - 6dp - 3dp - 3dp - 1dp - #6a7180 - #6a7180 - 11.0sp - 6dp - - 50dp - 100dp - 180dp - - 12dp - 12dp - 12dp - 16dp - 12dp - #FFFFFF - 16.0sp - - 10dp - - #90949C - - - - #415dae - #FFFFFe - #84878c - #7c8fc8 - #bdc1c9 - #2f477a - #f4f6f8 - #4267b2 - #e9eaf0 - @color/com_facebook_messenger_blue - #006fff - - #dedee6 - - - - - - - - - - - - - - - - - - - - diff --git a/facebook/src/test/java/com/facebook/ErrorClassificationTest.java b/facebook/src/test/java/com/facebook/ErrorClassificationTest.java index 960ec36586..bc4f18a7aa 100644 --- a/facebook/src/test/java/com/facebook/ErrorClassificationTest.java +++ b/facebook/src/test/java/com/facebook/ErrorClassificationTest.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -24,7 +24,7 @@ import org.junit.Test; -import static org.junit.Assert.*; +import static junit.framework.Assert.assertEquals; public class ErrorClassificationTest extends FacebookTestCase { diff --git a/facebook/src/test/java/com/facebook/FacebookContentProviderTest.java b/facebook/src/test/java/com/facebook/FacebookContentProviderTest.java index 24f1c28be8..038fa42665 100644 --- a/facebook/src/test/java/com/facebook/FacebookContentProviderTest.java +++ b/facebook/src/test/java/com/facebook/FacebookContentProviderTest.java @@ -29,7 +29,6 @@ import org.junit.Before; import org.junit.Test; import org.powermock.core.classloader.annotations.PrepareForTest; -import org.robolectric.Robolectric; import org.robolectric.RuntimeEnvironment; import java.io.File; diff --git a/facebook/src/test/java/com/facebook/FacebookSdkPowerMockTest.java b/facebook/src/test/java/com/facebook/FacebookSdkPowerMockTest.java index ac0fce5643..295d6e33d1 100644 --- a/facebook/src/test/java/com/facebook/FacebookSdkPowerMockTest.java +++ b/facebook/src/test/java/com/facebook/FacebookSdkPowerMockTest.java @@ -26,7 +26,6 @@ import android.os.Bundle; import android.os.ConditionVariable; -import com.facebook.internal.CallbackManagerImpl; import com.facebook.internal.FetchedAppSettingsManager; import com.facebook.internal.ServerProtocol; import com.facebook.internal.Utility; @@ -35,7 +34,6 @@ import org.junit.Test; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.reflect.Whitebox; -import org.robolectric.Robolectric; import org.robolectric.RuntimeEnvironment; import java.util.concurrent.Executor; diff --git a/facebook/src/test/java/com/facebook/GraphErrorTest.java b/facebook/src/test/java/com/facebook/GraphErrorTest.java index 23fcc60005..96d68b4d87 100644 --- a/facebook/src/test/java/com/facebook/GraphErrorTest.java +++ b/facebook/src/test/java/com/facebook/GraphErrorTest.java @@ -27,16 +27,13 @@ import org.json.JSONObject; import org.junit.Before; import org.junit.Test; -import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; -import org.robolectric.Robolectric; import org.robolectric.RuntimeEnvironment; import java.io.IOException; import java.net.HttpURLConnection; import static org.junit.Assert.*; -import static org.powermock.api.mockito.PowerMockito.doNothing; import static org.powermock.api.mockito.PowerMockito.mock; import static org.powermock.api.mockito.PowerMockito.mockStatic; import static org.powermock.api.mockito.PowerMockito.when; diff --git a/facebook/src/test/java/com/facebook/LegacyTokenCacheTest.java b/facebook/src/test/java/com/facebook/LegacyTokenCacheTest.java index 85140317b4..fe41857759 100644 --- a/facebook/src/test/java/com/facebook/LegacyTokenCacheTest.java +++ b/facebook/src/test/java/com/facebook/LegacyTokenCacheTest.java @@ -29,7 +29,6 @@ import org.junit.Test; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; -import org.robolectric.Robolectric; import org.robolectric.RuntimeEnvironment; import java.lang.reflect.Array; diff --git a/facebook/src/test/java/com/facebook/appevents/AppEventTest.java b/facebook/src/test/java/com/facebook/appevents/AppEventTest.java index 37fa2d501a..8f8352f7cd 100644 --- a/facebook/src/test/java/com/facebook/appevents/AppEventTest.java +++ b/facebook/src/test/java/com/facebook/appevents/AppEventTest.java @@ -22,6 +22,7 @@ import com.facebook.FacebookSdk; import com.facebook.FacebookTestCase; + import com.facebook.appevents.internal.Constants; import org.junit.Assert; diff --git a/facebook/src/test/java/com/facebook/appevents/AutomaticAnalyticsTest.java b/facebook/src/test/java/com/facebook/appevents/AutomaticAnalyticsTest.java index 8f0f2e7e59..addc869514 100644 --- a/facebook/src/test/java/com/facebook/appevents/AutomaticAnalyticsTest.java +++ b/facebook/src/test/java/com/facebook/appevents/AutomaticAnalyticsTest.java @@ -21,7 +21,6 @@ package com.facebook.appevents; import com.facebook.internal.FetchedAppSettingsManager; -import com.facebook.internal.Utility; import com.facebook.internal.FetchedAppSettings; import com.facebook.FacebookTestCase; diff --git a/facebook/src/test/java/com/facebook/internal/BundleJSONConverterTest.java b/facebook/src/test/java/com/facebook/internal/BundleJSONConverterTest.java index 986acd4642..43fe37411d 100644 --- a/facebook/src/test/java/com/facebook/internal/BundleJSONConverterTest.java +++ b/facebook/src/test/java/com/facebook/internal/BundleJSONConverterTest.java @@ -34,7 +34,9 @@ import java.util.ArrayList; import java.util.List; -import static org.junit.Assert.*; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNotNull; +import static junit.framework.Assert.assertTrue; public class BundleJSONConverterTest extends FacebookTestCase { diff --git a/facebook/src/test/java/com/facebook/internal/CallbackManagerImplPowerMockTest.java b/facebook/src/test/java/com/facebook/internal/CallbackManagerImplPowerMockTest.java index 37c044b2e2..b083216c58 100644 --- a/facebook/src/test/java/com/facebook/internal/CallbackManagerImplPowerMockTest.java +++ b/facebook/src/test/java/com/facebook/internal/CallbackManagerImplPowerMockTest.java @@ -29,7 +29,6 @@ import org.junit.Test; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.reflect.Whitebox; -import org.robolectric.Robolectric; import org.robolectric.RuntimeEnvironment; import java.util.HashMap; diff --git a/facebook/src/test/java/com/facebook/internal/FacebookRequestErrorClassificationTest.java b/facebook/src/test/java/com/facebook/internal/FacebookRequestErrorClassificationTest.java index d6ec8b7c38..01c0d23b7a 100644 --- a/facebook/src/test/java/com/facebook/internal/FacebookRequestErrorClassificationTest.java +++ b/facebook/src/test/java/com/facebook/internal/FacebookRequestErrorClassificationTest.java @@ -27,7 +27,9 @@ import org.json.JSONObject; import org.junit.Test; -import static org.junit.Assert.*; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNotNull; +import static junit.framework.Assert.assertNull; public class FacebookRequestErrorClassificationTest extends FacebookTestCase { private final String errorClassificationJSON = diff --git a/facebook/src/test/java/com/facebook/internal/FileLruCacheTest.java b/facebook/src/test/java/com/facebook/internal/FileLruCacheTest.java index 56fc69a7b3..e51639fff3 100644 --- a/facebook/src/test/java/com/facebook/internal/FileLruCacheTest.java +++ b/facebook/src/test/java/com/facebook/internal/FileLruCacheTest.java @@ -27,7 +27,6 @@ import org.junit.Before; import org.junit.Test; -import org.robolectric.Robolectric; import org.robolectric.RuntimeEnvironment; import java.io.ByteArrayInputStream; @@ -36,7 +35,10 @@ import java.io.OutputStream; import java.util.Random; -import static org.junit.Assert.*; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNotNull; +import static junit.framework.Assert.assertNull; +import static junit.framework.TestCase.assertTrue; public final class FileLruCacheTest extends FacebookTestCase { private static final Random random = new Random(); diff --git a/facebook/src/main/java/com/facebook/internal/JsonUtil.java b/facebook/src/test/java/com/facebook/internal/JsonUtil.java similarity index 99% rename from facebook/src/main/java/com/facebook/internal/JsonUtil.java rename to facebook/src/test/java/com/facebook/internal/JsonUtil.java index b009e11b26..4c27fbf83f 100644 --- a/facebook/src/main/java/com/facebook/internal/JsonUtil.java +++ b/facebook/src/test/java/com/facebook/internal/JsonUtil.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, diff --git a/facebook/src/test/java/com/facebook/internal/JsonUtilTest.java b/facebook/src/test/java/com/facebook/internal/JsonUtilTest.java index c3cf07344e..e56dad0a3a 100644 --- a/facebook/src/test/java/com/facebook/internal/JsonUtilTest.java +++ b/facebook/src/test/java/com/facebook/internal/JsonUtilTest.java @@ -31,7 +31,9 @@ import org.json.JSONObject; import org.junit.Test; -import static org.junit.Assert.*; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertTrue; public final class JsonUtilTest extends FacebookTestCase { diff --git a/facebook/src/test/java/com/facebook/internal/NativeAppCallAttachmentStoreTest.java b/facebook/src/test/java/com/facebook/internal/NativeAppCallAttachmentStoreTest.java index e4aff2a8d0..16eb2be303 100644 --- a/facebook/src/test/java/com/facebook/internal/NativeAppCallAttachmentStoreTest.java +++ b/facebook/src/test/java/com/facebook/internal/NativeAppCallAttachmentStoreTest.java @@ -25,14 +25,15 @@ import com.facebook.FacebookTestCase; import org.junit.Test; -import org.robolectric.Robolectric; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.UUID; -import static org.junit.Assert.*; +import static junit.framework.Assert.assertNotNull; +import static junit.framework.Assert.assertTrue; +import static junit.framework.Assert.fail; public class NativeAppCallAttachmentStoreTest extends FacebookTestCase { diff --git a/facebook/src/test/java/com/facebook/internal/NativeProtocolVersionTest.java b/facebook/src/test/java/com/facebook/internal/NativeProtocolVersionTest.java index 58f330a413..f9425bd25d 100644 --- a/facebook/src/test/java/com/facebook/internal/NativeProtocolVersionTest.java +++ b/facebook/src/test/java/com/facebook/internal/NativeProtocolVersionTest.java @@ -20,15 +20,13 @@ package com.facebook.internal; -import android.test.suitebuilder.annotation.SmallTest; - import com.facebook.FacebookTestCase; import org.junit.Test; import java.util.TreeSet; -import static org.junit.Assert.*; +import static junit.framework.Assert.assertEquals; public class NativeProtocolVersionTest extends FacebookTestCase { diff --git a/facebook/src/test/java/com/facebook/internal/UtilityIntersectRangeTest.java b/facebook/src/test/java/com/facebook/internal/UtilityIntersectRangeTest.java index d134cffc78..0e490e0328 100644 --- a/facebook/src/test/java/com/facebook/internal/UtilityIntersectRangeTest.java +++ b/facebook/src/test/java/com/facebook/internal/UtilityIntersectRangeTest.java @@ -26,7 +26,7 @@ import java.util.Arrays; -import static org.junit.Assert.*; +import static junit.framework.Assert.assertTrue; public class UtilityIntersectRangeTest extends FacebookTestCase { diff --git a/facebook/src/test/java/com/facebook/internal/UtilityTest.java b/facebook/src/test/java/com/facebook/internal/UtilityTest.java index 205e3107f3..54b1aeecfc 100644 --- a/facebook/src/test/java/com/facebook/internal/UtilityTest.java +++ b/facebook/src/test/java/com/facebook/internal/UtilityTest.java @@ -29,7 +29,8 @@ import java.util.HashMap; import java.util.Map; -import static org.junit.Assert.*; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNull; public class UtilityTest extends FacebookTestCase { diff --git a/facebook/src/test/java/com/facebook/internal/ValidateTest.java b/facebook/src/test/java/com/facebook/internal/ValidateTest.java index 60c1fde4ac..990a198400 100644 --- a/facebook/src/test/java/com/facebook/internal/ValidateTest.java +++ b/facebook/src/test/java/com/facebook/internal/ValidateTest.java @@ -26,7 +26,7 @@ import org.junit.Test; -import static org.junit.Assert.*; +import static junit.framework.Assert.fail; public class ValidateTest extends FacebookTestCase { diff --git a/facebook/src/test/java/com/facebook/internal/WorkQueueTest.java b/facebook/src/test/java/com/facebook/internal/WorkQueueTest.java index 983410c58c..5a0b0b7249 100644 --- a/facebook/src/test/java/com/facebook/internal/WorkQueueTest.java +++ b/facebook/src/test/java/com/facebook/internal/WorkQueueTest.java @@ -28,7 +28,8 @@ import java.util.ArrayList; import java.util.concurrent.Executor; -import static org.junit.Assert.*; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertTrue; public class WorkQueueTest extends FacebookTestCase { diff --git a/facebook/src/test/java/com/facebook/login/CustomTabLoginMethodHandlerTest.java b/facebook/src/test/java/com/facebook/login/CustomTabLoginMethodHandlerTest.java index f1be054a35..49fe01d711 100644 --- a/facebook/src/test/java/com/facebook/login/CustomTabLoginMethodHandlerTest.java +++ b/facebook/src/test/java/com/facebook/login/CustomTabLoginMethodHandlerTest.java @@ -27,7 +27,6 @@ import android.content.pm.ServiceInfo; import android.os.Bundle; import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentActivity; import com.facebook.AccessToken; import com.facebook.FacebookActivity; diff --git a/facebook/src/test/java/com/facebook/login/LoginManagerTest.java b/facebook/src/test/java/com/facebook/login/LoginManagerTest.java index c3b14805ea..84c33468be 100644 --- a/facebook/src/test/java/com/facebook/login/LoginManagerTest.java +++ b/facebook/src/test/java/com/facebook/login/LoginManagerTest.java @@ -25,6 +25,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.os.Bundle; @@ -53,14 +54,15 @@ import java.util.Arrays; import java.util.Collection; import java.util.Date; -import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.concurrent.ThreadPoolExecutor; import static org.junit.Assert.*; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyBoolean; import static org.mockito.Matchers.anyInt; +import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.argThat; import static org.mockito.Matchers.eq; import static org.mockito.Matchers.isA; @@ -87,6 +89,8 @@ public class LoginManagerTest extends FacebookPowerMockTestCase { @Mock private FacebookCallback mockCallback; @Mock private ThreadPoolExecutor threadExecutor; @Mock private FragmentActivity mockFragmentActivity; + @Mock private SharedPreferences mockSharedPreferences; + @Mock private SharedPreferences.Editor mockEditor; @Before public void before() throws Exception { @@ -101,6 +105,10 @@ public void before() throws Exception { when(FacebookSdk.getExecutor()).thenReturn(threadExecutor); when(mockFragment.getActivity()).thenReturn(mockFragmentActivity); when(mockActivity.getApplicationContext()).thenReturn(mockApplicationContext); + when(FacebookSdk.getApplicationContext() + .getSharedPreferences(anyString(), anyInt())).thenReturn(mockSharedPreferences); + when(mockSharedPreferences.edit()).thenReturn(mockEditor); + when(mockEditor.putBoolean(anyString(), anyBoolean())).thenReturn(mockEditor); // We use mocks rather than RobolectricPackageManager because it's simpler to not // have to specify Intents. Default to resolving all intents to something. diff --git a/facebook/src/test/java/com/facebook/share/internal/ShareContentValidationTest.java b/facebook/src/test/java/com/facebook/share/internal/ShareContentValidationTest.java index 0e80ebf01b..e89c401286 100644 --- a/facebook/src/test/java/com/facebook/share/internal/ShareContentValidationTest.java +++ b/facebook/src/test/java/com/facebook/share/internal/ShareContentValidationTest.java @@ -19,29 +19,21 @@ */ package com.facebook.share.internal; -import android.content.Context; import android.graphics.Bitmap; import android.net.Uri; import com.facebook.FacebookException; import com.facebook.FacebookPowerMockTestCase; -import com.facebook.FacebookSdk; import com.facebook.internal.Validate; import com.facebook.share.model.ShareLinkContent; import com.facebook.share.model.ShareOpenGraphAction; import com.facebook.share.model.ShareOpenGraphContent; import com.facebook.share.model.SharePhoto; import com.facebook.share.model.SharePhotoContent; -import com.facebook.share.model.ShareVideo; import com.facebook.share.model.ShareVideoContent; import org.junit.Test; -import org.mockito.Mockito; -import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; -import org.robolectric.RuntimeEnvironment; - -import static org.powermock.api.mockito.PowerMockito.doNothing; /** diff --git a/maven.gradle b/maven.gradle new file mode 100644 index 0000000000..c675605d7b --- /dev/null +++ b/maven.gradle @@ -0,0 +1,100 @@ +apply plugin: 'maven' +apply plugin: 'signing' + +def isSnapshot = version.endsWith('-SNAPSHOT') +def ossrhUsername = hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : "" +def ossrhPassword = hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : "" + +task setVersion { + // The version will be derived from source + project.version = null + def sdkVersionFile = file("${rootDir}/facebook-core/src/main/java/com/facebook/FacebookSdkVersion.java") + sdkVersionFile.eachLine{ + def matcher = (it =~ /(?:.*BUILD = \")(.*)(?:\".*)/) + if (matcher.matches()) { + project.version = matcher[0][1] + return + } + } + if (project.version.is('unspecified')) { + throw new GradleScriptException('Version could not be found.', null) + } +} + +uploadArchives { + repositories.mavenDeployer { + beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } + + repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") { + authentication(userName: ossrhUsername, password: ossrhPassword) + } + + snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") { + authentication(userName: ossrhUsername, password: ossrhPassword) + } + + pom.project { + name project.ext.name + artifactId project.ext.artifactId + packaging 'aar' + description project.ext.description + url project.ext.url + + scm { + connection 'scm:git@github.com:facebook/facebook-android-sdk.git' + developerConnection 'scm:git@github.com:facebook/facebook-android-sdk.git' + url 'https://github.com/facebook/facebook-android-sdk' + } + + licenses { + license { + name 'Facebook Platform License' + url 'https://github.com/facebook/facebook-android-sdk/blob/master/LICENSE.txt' + distribution 'repo' + } + } + + developers { + developer { + id 'facebook' + name 'Facebook' + } + } + } + } +} + +uploadArchives.dependsOn(setVersion) + +signing { + required { !isSnapshot && gradle.taskGraph.hasTask("uploadArchives") } + sign configurations.archives +} + +task androidJavadocs(type: Javadoc) { + source = android.sourceSets.main.java.srcDirs + classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) + // JDK 1.8 is more strict then 1.7. Have JDK 1.8 behave like 1.7 for javadoc generation + if (org.gradle.internal.jvm.Jvm.current().getJavaVersion() == JavaVersion.VERSION_1_8) { + options.addStringOption('Xdoclint:none', '-quiet') + } +} + +task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { + classifier = 'javadoc' + from androidJavadocs.destinationDir +} + +task androidSourcesJar(type: Jar) { + classifier = 'sources' + from android.sourceSets.main.java.sourceFiles +} + +artifacts { + archives androidSourcesJar + archives androidJavadocsJar +} + +afterEvaluate { + androidJavadocs.classpath += project.android.libraryVariants.toList().first().javaCompile.classpath +} diff --git a/samples/HelloFacebookSample/build.gradle b/samples/HelloFacebookSample/build.gradle index 7d7156e282..6449d9482f 100644 --- a/samples/HelloFacebookSample/build.gradle +++ b/samples/HelloFacebookSample/build.gradle @@ -1,7 +1,8 @@ apply plugin: 'com.android.application' dependencies { - compile project(':facebook') + compile project(':facebook-login') + compile project(':facebook-share') } android { diff --git a/samples/HelloFacebookSample/src/com/example/hellofacebook/HelloFacebookSampleActivity.java b/samples/HelloFacebookSample/src/com/example/hellofacebook/HelloFacebookSampleActivity.java index ab8001764c..6dce0c7d07 100644 --- a/samples/HelloFacebookSample/src/com/example/hellofacebook/HelloFacebookSampleActivity.java +++ b/samples/HelloFacebookSample/src/com/example/hellofacebook/HelloFacebookSampleActivity.java @@ -34,7 +34,9 @@ import android.widget.TextView; import com.facebook.*; -import com.facebook.appevents.AppEventsLogger; +import com.facebook.AccessToken; +import com.facebook.FacebookException; +import com.facebook.Profile; import com.facebook.login.LoginManager; import com.facebook.login.LoginResult; import com.facebook.login.widget.ProfilePictureView; diff --git a/samples/Iconicus/build.gradle b/samples/Iconicus/build.gradle index 2c95ebc24e..c064c9a24c 100644 --- a/samples/Iconicus/build.gradle +++ b/samples/Iconicus/build.gradle @@ -5,7 +5,7 @@ repositories { } dependencies { - compile project(':facebook') + compile project(':facebook-share') // In order to test a specific version published on maven, comment out the project compile // directive and and comment this line and update to the specific version. // compile 'com.facebook.android:facebook-android-sdk:4.0.1' diff --git a/samples/Iconicus/src/com/example/iconicus/MainActivity.java b/samples/Iconicus/src/com/example/iconicus/MainActivity.java index b071453c9a..ba6fe03860 100644 --- a/samples/Iconicus/src/com/example/iconicus/MainActivity.java +++ b/samples/Iconicus/src/com/example/iconicus/MainActivity.java @@ -29,7 +29,6 @@ import android.widget.GridView; import android.widget.Toast; -import com.facebook.FacebookSdk; import com.facebook.share.model.ShareLinkContent; import com.facebook.share.widget.SendButton; import com.facebook.share.widget.ShareButton; diff --git a/samples/LoginSample/build.gradle b/samples/LoginSample/build.gradle index 032dc78c88..673fa4d908 100644 --- a/samples/LoginSample/build.gradle +++ b/samples/LoginSample/build.gradle @@ -39,7 +39,7 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) - compile project(':facebook') + compile project(':facebook-login') compile 'com.android.support:appcompat-v7:24.1.1' compile 'com.facebook.android:account-kit-sdk:4.+' testCompile 'junit:junit:4.12' diff --git a/samples/LoginSample/src/main/java/com/facebook/samples/loginsample/MainActivity.java b/samples/LoginSample/src/main/java/com/facebook/samples/loginsample/MainActivity.java index 3fe6ed627e..d229254c65 100644 --- a/samples/LoginSample/src/main/java/com/facebook/samples/loginsample/MainActivity.java +++ b/samples/LoginSample/src/main/java/com/facebook/samples/loginsample/MainActivity.java @@ -26,7 +26,6 @@ import android.view.View; import android.widget.Button; -import com.facebook.FacebookSdk; import com.facebook.samples.loginsample.accountkit.AccountKitLoginActivity; import com.facebook.samples.loginsample.facebook.FacebookLoginActivity; diff --git a/samples/MessengerSendSample/build.gradle b/samples/MessengerSendSample/build.gradle index 756c69332a..be26ca2717 100644 --- a/samples/MessengerSendSample/build.gradle +++ b/samples/MessengerSendSample/build.gradle @@ -39,6 +39,6 @@ android { } dependencies { - compile project(':facebook') - compile('com.android.support:appcompat-v7:21.0.3') + compile project(':facebook-messenger') + compile('com.android.support:appcompat-v7:25.3.1') } diff --git a/samples/PlacesGraphSample/build.gradle b/samples/PlacesGraphSample/build.gradle index 9aa9b166dc..801cd5afc5 100644 --- a/samples/PlacesGraphSample/build.gradle +++ b/samples/PlacesGraphSample/build.gradle @@ -1,7 +1,8 @@ apply plugin: 'com.android.application' dependencies { - compile project(':facebook') + compile project(':facebook-login') + compile project(':facebook-places') compile 'com.android.support:appcompat-v7:24.2.1' compile 'com.android.support:cardview-v7:24.2.1' compile 'com.android.support:design:24.2.1' diff --git a/samples/PlacesGraphSample/src/com/example/places/PlacesGraphSDKHelper.java b/samples/PlacesGraphSample/src/com/example/places/PlacesGraphSDKHelper.java index 8c2e7bbe48..d5dade6e2f 100644 --- a/samples/PlacesGraphSample/src/com/example/places/PlacesGraphSDKHelper.java +++ b/samples/PlacesGraphSample/src/com/example/places/PlacesGraphSDKHelper.java @@ -26,7 +26,6 @@ import com.example.places.model.CurrentPlaceResult; import com.example.places.model.Place; import com.example.places.utils.BitmapDownloadTask; -import com.facebook.AccessToken; import com.facebook.FacebookRequestError; import com.facebook.FacebookSdk; import com.facebook.GraphRequest; diff --git a/samples/RPSSample/build.gradle b/samples/RPSSample/build.gradle index 58f0e677f3..f23e234559 100644 --- a/samples/RPSSample/build.gradle +++ b/samples/RPSSample/build.gradle @@ -1,7 +1,8 @@ apply plugin: 'com.android.application' dependencies { - compile project(':facebook') + compile project(':facebook-login') + compile project(':facebook-share') } android { diff --git a/samples/RPSSample/src/com/example/rps/MainActivity.java b/samples/RPSSample/src/com/example/rps/MainActivity.java index d87c786e5a..f3bad16b13 100644 --- a/samples/RPSSample/src/com/example/rps/MainActivity.java +++ b/samples/RPSSample/src/com/example/rps/MainActivity.java @@ -33,7 +33,9 @@ import bolts.AppLinks; import com.facebook.*; -import com.facebook.appevents.AppEventsLogger; +import com.facebook.AccessToken; +import com.facebook.FacebookException; +import com.facebook.FacebookSdk; import com.facebook.share.model.GameRequestContent; import com.facebook.share.widget.GameRequestDialog; diff --git a/samples/RPSSample/src/com/example/rps/RpsFragment.java b/samples/RPSSample/src/com/example/rps/RpsFragment.java index a057b3ae8e..675df413f2 100644 --- a/samples/RPSSample/src/com/example/rps/RpsFragment.java +++ b/samples/RPSSample/src/com/example/rps/RpsFragment.java @@ -46,6 +46,9 @@ import com.android.vending.billing.IInAppBillingService; import com.facebook.*; +import com.facebook.AccessToken; +import com.facebook.FacebookException; +import com.facebook.internal.Utility; import com.facebook.login.DefaultAudience; import com.facebook.login.LoginManager; import com.facebook.login.LoginResult; @@ -689,7 +692,7 @@ public void onError(FacebookException error) { @Override public void onServiceDisconnected(ComponentName name) { inAppBillingService = null; - Log.d(TAG, "in app billing service disconnected"); + Utility.logd(TAG, "In-app billing service disconnected"); } @Override @@ -697,7 +700,7 @@ public void onServiceConnected( ComponentName name, IBinder service) { inAppBillingService = IInAppBillingService.Stub.asInterface(service); - Log.d(TAG, "In app billing service connected"); + Utility.logd(TAG, "In app billing service connected"); try { Bundle ownedItems = inAppBillingService.getPurchases( 3, diff --git a/samples/Scrumptious/build.gradle b/samples/Scrumptious/build.gradle index b939629a6e..64d74b8adb 100644 --- a/samples/Scrumptious/build.gradle +++ b/samples/Scrumptious/build.gradle @@ -1,7 +1,8 @@ apply plugin: 'com.android.application' dependencies { - compile project(':facebook') + compile project(':facebook-login') + compile project(':facebook-share') } android { diff --git a/samples/Scrumptious/src/com/example/scrumptious/MainActivity.java b/samples/Scrumptious/src/com/example/scrumptious/MainActivity.java index 92e833d225..9afe82eca9 100644 --- a/samples/Scrumptious/src/com/example/scrumptious/MainActivity.java +++ b/samples/Scrumptious/src/com/example/scrumptious/MainActivity.java @@ -29,7 +29,6 @@ import com.facebook.AccessToken; import com.facebook.AccessTokenTracker; -import com.facebook.appevents.AppEventsLogger; import com.facebook.CallbackManager; public class MainActivity extends Activity { diff --git a/samples/Scrumptious/src/com/example/scrumptious/ScrumptiousApplication.java b/samples/Scrumptious/src/com/example/scrumptious/ScrumptiousApplication.java index 4a775d76f2..27df704dae 100644 --- a/samples/Scrumptious/src/com/example/scrumptious/ScrumptiousApplication.java +++ b/samples/Scrumptious/src/com/example/scrumptious/ScrumptiousApplication.java @@ -22,7 +22,6 @@ import android.app.Application; -import com.facebook.FacebookSdk; import org.json.JSONObject; diff --git a/samples/Scrumptious/src/com/example/scrumptious/SelectionFragment.java b/samples/Scrumptious/src/com/example/scrumptious/SelectionFragment.java index bc3f54f0a6..b86688c60e 100644 --- a/samples/Scrumptious/src/com/example/scrumptious/SelectionFragment.java +++ b/samples/Scrumptious/src/com/example/scrumptious/SelectionFragment.java @@ -45,6 +45,12 @@ import android.widget.*; import com.facebook.*; +import com.facebook.AccessToken; +import com.facebook.FacebookException; +import com.facebook.FacebookGraphResponseException; +import com.facebook.FacebookRequestError; +import com.facebook.FacebookSdk; +import com.facebook.GraphResponse; import com.facebook.internal.Utility; import com.facebook.login.DefaultAudience; import com.facebook.login.LoginManager; diff --git a/samples/Scrumptious/src/com/example/scrumptious/picker/GraphObjectPagingLoader.java b/samples/Scrumptious/src/com/example/scrumptious/picker/GraphObjectPagingLoader.java index 01aa6304a7..a767628b51 100644 --- a/samples/Scrumptious/src/com/example/scrumptious/picker/GraphObjectPagingLoader.java +++ b/samples/Scrumptious/src/com/example/scrumptious/picker/GraphObjectPagingLoader.java @@ -24,6 +24,12 @@ import android.content.Loader; import com.facebook.*; +import com.facebook.FacebookException; +import com.facebook.FacebookRequestError; +import com.facebook.GraphRequest; +import com.facebook.GraphRequestBatch; +import com.facebook.GraphResponse; + import org.json.JSONArray; class GraphObjectPagingLoader extends Loader { diff --git a/samples/Scrumptious/src/com/example/scrumptious/picker/PlacePickerFragment.java b/samples/Scrumptious/src/com/example/scrumptious/picker/PlacePickerFragment.java index ce9188d497..97e53d4e95 100644 --- a/samples/Scrumptious/src/com/example/scrumptious/picker/PlacePickerFragment.java +++ b/samples/Scrumptious/src/com/example/scrumptious/picker/PlacePickerFragment.java @@ -36,7 +36,10 @@ import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.ListView; -import com.facebook.*; +import com.facebook.AccessToken; +import com.facebook.FacebookException; +import com.facebook.GraphRequest; +import com.facebook.LoggingBehavior; import com.facebook.appevents.AppEventsLogger; import com.example.scrumptious.R; import com.facebook.internal.AnalyticsEvents; diff --git a/samples/ShareIt/build.gradle b/samples/ShareIt/build.gradle index 173deb16d9..ae460b7af2 100644 --- a/samples/ShareIt/build.gradle +++ b/samples/ShareIt/build.gradle @@ -5,7 +5,8 @@ repositories { } dependencies { - compile project(':facebook') + compile project(':facebook-share') + compile project(':facebook-login') // In order to test a specific version published on maven, comment out the project compile // directive and and comment this line and update to the specific version. // compile 'com.facebook.android:facebook-android-sdk:4.0.1' diff --git a/samples/SwitchUserSample/build.gradle b/samples/SwitchUserSample/build.gradle index 276a869287..26cbaddc70 100644 --- a/samples/SwitchUserSample/build.gradle +++ b/samples/SwitchUserSample/build.gradle @@ -1,7 +1,7 @@ apply plugin: 'com.android.application' dependencies { - compile project(':facebook') + compile project(':facebook-login') compile 'com.android.support:appcompat-v7:21.0.3' } diff --git a/samples/SwitchUserSample/src/com/example/switchuser/MainActivity.java b/samples/SwitchUserSample/src/com/example/switchuser/MainActivity.java index 2a83f33d6f..89b5a46fcd 100644 --- a/samples/SwitchUserSample/src/com/example/switchuser/MainActivity.java +++ b/samples/SwitchUserSample/src/com/example/switchuser/MainActivity.java @@ -26,9 +26,6 @@ import android.support.v7.app.ActionBarActivity; import android.view.MenuItem; -import com.facebook.*; -import com.facebook.appevents.AppEventsLogger; - public class MainActivity extends ActionBarActivity { private static final String SHOWING_SETTINGS_KEY = "Showing settings"; diff --git a/settings.gradle b/settings.gradle index e52d6aa8f4..21e4c0a3b8 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,4 +1,6 @@ // Facebook SDK +include ':facebook-core' +include ':facebook-common', ':facebook-login', ':facebook-share', ':facebook-places', ':facebook-applinks', ':facebook-messenger' include ':facebook' // Samples