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 extends ShareContent> 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> ની મુલકાત લો; અને ઉપર આપેલો કોડ દાખલ કરો.
+ તમારા એકાઉન્ટ સાથે કનેક્ટ કરવા માટે, તમારા મોબાઇલ ઉપકરણ પર 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> ולהזין את הקוד המוצג למעלה
+ כדי לחבר את חשבונך, יש לפתוח את אפליקציית פייסבוק במכשיר הנייד ולבדוק אם יש התראות.
+ - או -
+ אשר/י את ההתחברות
+ המשך/המשיכי בתור %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>,並輸入上方顯示的代碼。
+ 若要連結帳戶,請在流動裝置上開啟 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>,並輸入上方顯示的代碼。
+ 若要連結帳號,請在行動裝置上開啟 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