From 1ebea4d8e02aff0bc96cad34c959ab680421f8eb Mon Sep 17 00:00:00 2001 From: Art Beatte IV Date: Tue, 26 Sep 2017 09:07:47 -0700 Subject: [PATCH] Facebook Android SDK 4.27 --- README.mdown | 82 +++++++- facebook-applinks/.gitignore | 1 + facebook-applinks/build.gradle | 33 +++ facebook-applinks/proguard-rules.pro | 33 +++ .../src/main/AndroidManifest.xml | 11 +- .../com/facebook/applinks/AppLinkData.java | 0 .../java/com/facebook/applinks/AppLinks.java | 5 + .../applinks/FacebookAppLinkResolver.java | 0 facebook-common/.gitignore | 1 + facebook-common/build.gradle | 54 +++++ facebook-common/proguard-rules.pro | 33 +++ .../src/main/AndroidManifest.xml | 18 +- .../java/com/facebook/AccessTokenTracker.java | 3 + .../java/com/facebook/CustomTabActivity.java | 0 .../com/facebook/CustomTabMainActivity.java | 1 + .../java/com/facebook/FacebookActivity.java | 3 +- .../FacebookAuthorizationException.java | 2 + .../java/com/facebook/FacebookButtonBase.java | 2 + .../java/com/facebook/FacebookCallback.java | 2 + .../java/com/facebook/FacebookDialog.java | 4 +- .../com/facebook/FacebookDialogException.java | 2 + .../com/facebook/LoginStatusCallback.java | 2 + .../java/com/facebook/ShareGraphRequest.java | 101 +++++++++ .../src/main/java/com/facebook/WebDialog.java | 31 +-- .../main/java/com/facebook/common/Common.java | 5 + .../internal/DeviceRequestsHelper.java | 0 .../java/com/facebook/internal/AppCall.java | 0 .../java/com/facebook/internal/CustomTab.java | 2 + .../com/facebook/internal/DialogFeature.java | 0 .../facebook/internal/DialogPresenter.java | 5 + .../facebook/internal/FacebookDialogBase.java | 4 + .../internal/FacebookDialogFragment.java | 6 +- .../internal/FacebookWebFallbackDialog.java | 16 +- .../facebook/internal/FragmentWrapper.java | 2 + .../internal/LoginAuthorizationType.java | 0 .../internal/PlatformServiceClient.java | 2 + .../java/com/facebook/internal/WebDialog.java | 85 +++++++- .../login/CustomTabLoginMethodHandler.java | 0 .../com/facebook/login/DeviceAuthDialog.java | 2 +- .../login/DeviceAuthMethodHandler.java | 0 .../login/FacebookLiteLoginMethodHandler.java | 0 .../com/facebook/login/GetTokenClient.java | 0 .../login/GetTokenLoginMethodHandler.java | 0 .../login/KatanaProxyLoginMethodHandler.java | 0 .../com/facebook/login/LoginBehavior.java | 0 .../java/com/facebook/login/LoginClient.java | 3 +- .../com/facebook/login/LoginFragment.java | 4 +- .../java/com/facebook/login/LoginLogger.java | 0 .../java/com/facebook/login/LoginManager.java | 44 +++- .../facebook/login/LoginMethodHandler.java | 0 .../java/com/facebook/login/LoginResult.java | 0 .../com/facebook/login/LoginStatusClient.java | 0 .../login/NativeAppLoginMethodHandler.java | 0 .../facebook/login/StartActivityDelegate.java | 0 .../facebook/login/WebLoginMethodHandler.java | 1 + .../login/WebViewLoginMethodHandler.java | 7 +- .../java/com/facebook/share/ShareBuilder.java | 0 .../main/java/com/facebook/share/Sharer.java | 0 .../share/internal/CameraEffectFeature.java | 38 +++- .../internal/CameraEffectJSONUtility.java | 147 ++++++++++++++ .../internal/DeviceShareDialogFragment.java | 2 +- .../LegacyNativeDialogParameters.java | 0 .../share/internal/LikeActionController.java | 10 + .../share/internal/LikeBoxCountView.java | 2 +- .../facebook/share/internal/LikeButton.java | 2 +- .../facebook/share/internal/LikeContent.java | 0 .../facebook/share/internal/LikeDialog.java | 0 .../share/internal/LikeDialogFeature.java | 0 .../share/internal/LikeStatusClient.java | 1 - .../internal/NativeDialogParameters.java | 44 ++++ .../OpenGraphActionDialogFeature.java | 0 .../share/internal/OpenGraphJSONUtility.java | 0 .../share/internal/ResultProcessor.java | 0 .../share/internal/ShareConstants.java | 5 + .../internal/ShareContentValidation.java | 15 ++ .../share/internal/ShareDialogFeature.java | 0 .../share/internal/ShareFeedContent.java | 0 .../share/internal/ShareInternalUtility.java | 33 +++ .../share/internal/WebDialogParameters.java | 0 .../share/model/AppGroupCreationContent.java | 0 .../share/model/CameraEffectArguments.java | 187 +++++++++++++++++ .../share/model/CameraEffectTextures.java | 158 +++++++++++++++ .../share/model/GameRequestContent.java | 0 .../share/model/ShareCameraEffectContent.java | 191 ++++++++++++++++++ .../facebook/share/model/ShareContent.java | 0 .../facebook/share/model/ShareHashtag.java | 0 .../share/model/ShareLinkContent.java | 0 .../com/facebook/share/model/ShareMedia.java | 0 .../share/model/ShareMediaContent.java | 0 .../com/facebook/share/model/ShareModel.java | 0 .../share/model/ShareModelBuilder.java | 0 .../share/model/ShareOpenGraphAction.java | 0 .../share/model/ShareOpenGraphContent.java | 0 .../share/model/ShareOpenGraphObject.java | 0 .../model/ShareOpenGraphValueContainer.java | 0 .../com/facebook/share/model/SharePhoto.java | 0 .../share/model/SharePhotoContent.java | 0 .../com/facebook/share/model/ShareVideo.java | 0 .../share/model/ShareVideoContent.java | 0 .../com/facebook/share/widget/LikeView.java | 4 +- .../facebook/share/widget/ShareDialog.java | 52 ++++- .../color/com_facebook_button_text_color.xml | 0 .../com_facebook_button_icon_blue.png | Bin 0 -> 626 bytes .../com_facebook_button_icon_white.png | Bin ...com_facebook_button_like_icon_selected.png | Bin 0 -> 179 bytes .../res/drawable-hdpi/com_facebook_close.png | Bin .../com_facebook_button_icon_blue.png | Bin 0 -> 475 bytes .../com_facebook_button_icon_white.png | Bin ...com_facebook_button_like_icon_selected.png | Bin .../res/drawable-mdpi/com_facebook_close.png | Bin 0 -> 1448 bytes .../com_facebook_button_icon_blue.png | Bin 0 -> 904 bytes .../com_facebook_button_icon_white.png | Bin ...com_facebook_button_like_icon_selected.png | Bin 0 -> 197 bytes .../res/drawable-xhdpi/com_facebook_close.png | Bin .../com_facebook_button_icon_blue.png | Bin 0 -> 1045 bytes .../com_facebook_button_icon_white.png | Bin ...com_facebook_button_like_icon_selected.png | Bin 0 -> 232 bytes .../com_facebook_auth_dialog_background.xml | 0 ...facebook_auth_dialog_cancel_background.xml | 0 ...facebook_auth_dialog_header_background.xml | 0 .../com_facebook_button_background.xml | 0 .../res/drawable/com_facebook_button_icon.xml | 0 .../com_facebook_button_like_background.xml | 0 .../drawable/com_facebook_favicon_blue.xml | 0 .../layout/com_facebook_activity_layout.xml | 0 ...m_facebook_device_auth_dialog_fragment.xml | 0 .../layout/com_facebook_login_fragment.xml | 0 ..._facebook_smart_device_dialog_fragment.xml | 0 .../src/main/res/values-af/strings.xml | 0 .../src/main/res/values-ar/strings.xml | 0 .../src/main/res/values-bn/strings.xml | 0 .../src/main/res/values-cs/strings.xml | 0 .../src/main/res/values-da/strings.xml | 0 .../src/main/res/values-de/strings.xml | 0 .../src/main/res/values-el/strings.xml | 0 .../src/main/res/values-en-rGB/strings.xml | 0 .../src/main/res/values-es-rES/strings.xml | 0 .../src/main/res/values-es/strings.xml | 0 .../src/main/res/values-fi/strings.xml | 0 .../src/main/res/values-fr/strings.xml | 0 .../src/main/res/values-gu/strings.xml | 0 .../src/main/res/values-hi/strings.xml | 0 .../src/main/res/values-hr/strings.xml | 0 .../src/main/res/values-hu/strings.xml | 0 .../src/main/res/values-id/strings.xml | 0 .../src/main/res/values-in/strings.xml | 0 .../src/main/res/values-it/strings.xml | 0 .../src/main/res/values-iw/strings.xml | 0 .../src/main/res/values-ja/strings.xml | 0 .../src/main/res/values-kn/strings.xml | 0 .../src/main/res/values-ko/strings.xml | 0 .../src/main/res/values-ml/strings.xml | 0 .../src/main/res/values-mr/strings.xml | 0 .../src/main/res/values-ms/strings.xml | 0 .../src/main/res/values-nb/strings.xml | 0 .../src/main/res/values-nl/strings.xml | 0 .../src/main/res/values-pa/strings.xml | 0 .../src/main/res/values-pl/strings.xml | 0 .../src/main/res/values-pt-rPT/strings.xml | 0 .../src/main/res/values-pt/strings.xml | 0 .../src/main/res/values-ru/strings.xml | 0 .../src/main/res/values-sk/strings.xml | 0 .../src/main/res/values-sv/strings.xml | 0 .../src/main/res/values-ta/strings.xml | 0 .../src/main/res/values-te/strings.xml | 0 .../src/main/res/values-th/strings.xml | 0 .../src/main/res/values-tl/strings.xml | 0 .../src/main/res/values-tr/strings.xml | 0 .../src/main/res/values-vi/strings.xml | 0 .../src/main/res/values-zh-rCN/strings.xml | 0 .../src/main/res/values-zh-rHK/strings.xml | 0 .../src/main/res/values-zh-rTW/strings.xml | 0 .../src/main/res/values/attrs.xml | 20 -- .../src/main/res/values/dimens.xml | 39 ++++ .../src/main/res/values/strings.xml | 0 .../src/main/res/values/styles.xml | 77 +++++++ facebook-core/.gitignore | 1 + facebook-core/build.gradle | 40 ++++ facebook-core/proguard-rules.pro | 38 ++++ facebook-core/src/main/AndroidManifest.xml | 42 ++++ .../main/java/com/facebook/AccessToken.java | 0 .../java/com/facebook/AccessTokenCache.java | 0 .../java/com/facebook/AccessTokenManager.java | 12 +- .../java/com/facebook/AccessTokenSource.java | 0 .../java/com/facebook/CallbackManager.java | 0 .../facebook/FacebookBroadcastReceiver.java | 0 .../com/facebook/FacebookContentProvider.java | 0 .../java/com/facebook/FacebookException.java | 0 .../FacebookGraphResponseException.java | 0 .../FacebookOperationCanceledException.java | 0 .../com/facebook/FacebookRequestError.java | 0 .../main/java/com/facebook/FacebookSdk.java | 31 +-- .../FacebookSdkNotInitializedException.java | 0 .../java/com/facebook/FacebookSdkVersion.java | 4 +- .../facebook/FacebookServiceException.java | 0 .../main/java/com/facebook/GraphRequest.java | 62 ------ .../com/facebook/GraphRequestAsyncTask.java | 0 .../java/com/facebook/GraphRequestBatch.java | 0 .../main/java/com/facebook/GraphResponse.java | 0 .../main/java/com/facebook/HttpMethod.java | 0 .../java/com/facebook/LegacyTokenHelper.java | 0 .../java/com/facebook/LoggingBehavior.java | 0 .../src/main/java/com/facebook/Profile.java | 0 .../main/java/com/facebook/ProfileCache.java | 0 .../java/com/facebook/ProfileManager.java | 8 +- .../java/com/facebook/ProfileTracker.java | 8 +- .../facebook/ProgressNoopOutputStream.java | 0 .../com/facebook/ProgressOutputStream.java | 0 .../com/facebook/RequestOutputStream.java | 0 .../java/com/facebook/RequestProgress.java | 0 .../appevents/AccessTokenAppIdPair.java | 0 .../appevents/AnalyticsUserIDStore.java | 0 .../java/com/facebook/appevents/AppEvent.java | 0 .../appevents/AppEventCollection.java | 0 .../com/facebook/appevents/AppEventQueue.java | 1 - .../com/facebook/appevents/AppEventStore.java | 4 +- .../appevents/AppEventsConstants.java | 0 .../facebook/appevents/AppEventsLogger.java | 99 ++++++++- .../appevents/FacebookTimeSpentData.java | 0 .../com/facebook/appevents/FlushReason.java | 0 .../com/facebook/appevents/FlushResult.java | 0 .../facebook/appevents/FlushStatistics.java | 0 .../facebook/appevents/PersistedEvents.java | 2 +- .../appevents/SessionEventsState.java | 0 .../internal/ActivityLifecycleTracker.java | 28 ++- .../appevents/internal/AppEventUtility.java | 5 +- .../internal/AutomaticAnalyticsLogger.java | 180 +++++++++++++++++ .../appevents/internal/Constants.java | 8 + .../internal/InAppPurchaseEventManager.java | 148 ++++++++++++++ .../internal/InternalAppEventsLogger.java | 0 .../appevents/internal/SessionInfo.java | 2 +- .../appevents/internal/SessionLogger.java | 0 .../internal/SourceApplicationInfo.java | 0 .../src/main/java/com/facebook/core/Core.java | 5 + .../facebook/internal/AnalyticsEvents.java | 2 + .../internal/AppEventsLoggerUtility.java | 0 .../internal/AttributionIdentifiers.java | 0 .../BoltsMeasurementEventListener.java | 2 +- .../internal/BundleJSONConverter.java | 0 .../internal/CallbackManagerImpl.java | 29 +++ .../internal/FacebookInitProvider.java | 0 .../FacebookRequestErrorClassification.java | 0 .../internal/FacebookSignatureValidator.java | 6 + .../facebook/internal/FetchedAppSettings.java | 8 +- .../internal/FetchedAppSettingsManager.java | 31 ++- .../com/facebook/internal/FileLruCache.java | 0 .../facebook/internal/ImageDownloader.java | 4 +- .../com/facebook/internal/ImageRequest.java | 0 .../com/facebook/internal/ImageResponse.java | 0 .../facebook/internal/ImageResponseCache.java | 0 .../facebook/internal/InternalSettings.java | 0 .../facebook/internal/LockOnGetVariable.java | 0 .../java/com/facebook/internal/Logger.java | 0 .../NativeAppCallAttachmentStore.java | 0 .../com/facebook/internal/NativeProtocol.java | 51 +++-- .../internal/ProfileInformationCache.java | 0 .../com/facebook/internal/ServerProtocol.java | 0 .../facebook/internal/SmartLoginOption.java | 0 .../facebook/internal/UrlRedirectCache.java | 0 .../java/com/facebook/internal/Utility.java | 0 .../java/com/facebook/internal/Validate.java | 6 +- .../java/com/facebook/internal/WorkQueue.java | 0 .../com/facebook/internal/package-info.java | 2 +- .../com/facebook/login/DefaultAudience.java | 0 facebook-login/.gitignore | 1 + facebook-login/build.gradle | 48 +++++ facebook-login/proguard-rules.pro | 33 +++ .../src/main/AndroidManifest.xml | 11 +- .../facebook/login/DeviceLoginManager.java | 0 .../main/java/com/facebook/login/Login.java | 5 + .../login/widget/DeviceLoginButton.java | 0 .../facebook/login/widget/LoginButton.java | 4 +- .../login/widget/ProfilePictureView.java | 2 +- .../facebook/login/widget/ToolTipPopup.java | 5 +- ...om_facebook_tooltip_black_background.9.png | Bin 0 -> 1634 bytes .../com_facebook_tooltip_black_bottomnub.png | Bin .../com_facebook_tooltip_black_topnub.png | Bin .../com_facebook_tooltip_black_xout.png | Bin 0 -> 193 bytes ...com_facebook_tooltip_blue_background.9.png | Bin 0 -> 2188 bytes .../com_facebook_tooltip_blue_bottomnub.png | Bin 0 -> 769 bytes .../com_facebook_tooltip_blue_topnub.png | Bin 0 -> 591 bytes .../com_facebook_tooltip_blue_xout.png | Bin 0 -> 192 bytes ...acebook_profile_picture_blank_portrait.png | Bin 0 -> 1553 bytes ..._facebook_profile_picture_blank_square.png | Bin 0 -> 1476 bytes ...om_facebook_tooltip_black_background.9.png | Bin 0 -> 1120 bytes .../com_facebook_tooltip_black_bottomnub.png | Bin .../com_facebook_tooltip_black_topnub.png | Bin .../com_facebook_tooltip_black_xout.png | Bin 0 -> 158 bytes ...com_facebook_tooltip_blue_background.9.png | Bin 0 -> 1321 bytes .../com_facebook_tooltip_blue_bottomnub.png | Bin .../com_facebook_tooltip_blue_topnub.png | Bin 0 -> 329 bytes .../com_facebook_tooltip_blue_xout.png | Bin 0 -> 159 bytes ...om_facebook_tooltip_black_background.9.png | Bin .../com_facebook_tooltip_black_bottomnub.png | Bin .../com_facebook_tooltip_black_topnub.png | Bin 0 -> 581 bytes .../com_facebook_tooltip_black_xout.png | Bin 0 -> 204 bytes ...com_facebook_tooltip_blue_background.9.png | Bin 0 -> 3276 bytes .../com_facebook_tooltip_blue_bottomnub.png | Bin 0 -> 973 bytes .../com_facebook_tooltip_blue_topnub.png | Bin 0 -> 706 bytes .../com_facebook_tooltip_blue_xout.png | Bin 0 -> 222 bytes .../com_facebook_button_login_background.xml | 0 .../com_facebook_button_login_logo.xml | 0 ...acebook_button_login_silver_background.xml | 0 .../layout/com_facebook_tooltip_bubble.xml | 0 .../src/main/res/values-af/strings.xml | 30 +++ .../src/main/res/values-ar/strings.xml | 30 +++ .../src/main/res/values-bn/strings.xml | 30 +++ .../src/main/res/values-cs/strings.xml | 30 +++ .../src/main/res/values-da/strings.xml | 29 +++ .../src/main/res/values-de/strings.xml | 30 +++ .../src/main/res/values-el/strings.xml | 30 +++ .../src/main/res/values-en-rGB/strings.xml | 11 + .../src/main/res/values-es-rES/strings.xml | 30 +++ .../src/main/res/values-es/strings.xml | 30 +++ .../src/main/res/values-fi/strings.xml | 30 +++ .../src/main/res/values-fr/strings.xml | 30 +++ .../src/main/res/values-gu/strings.xml | 30 +++ .../src/main/res/values-hi/strings.xml | 30 +++ .../src/main/res/values-hr/strings.xml | 30 +++ .../src/main/res/values-hu/strings.xml | 30 +++ .../src/main/res/values-in/strings.xml | 30 +++ .../src/main/res/values-it/strings.xml | 30 +++ .../src/main/res/values-iw/strings.xml | 30 +++ .../src/main/res/values-ja/strings.xml | 30 +++ .../src/main/res/values-kn/strings.xml | 30 +++ .../src/main/res/values-ko/strings.xml | 30 +++ .../src/main/res/values-ml/strings.xml | 30 +++ .../src/main/res/values-mr/strings.xml | 30 +++ .../src/main/res/values-ms/strings.xml | 30 +++ .../src/main/res/values-nb/strings.xml | 29 +++ .../src/main/res/values-nl/strings.xml | 30 +++ .../src/main/res/values-pa/strings.xml | 30 +++ .../src/main/res/values-pl/strings.xml | 30 +++ .../src/main/res/values-pt-rPT/strings.xml | 30 +++ .../src/main/res/values-pt/strings.xml | 30 +++ .../src/main/res/values-ru/strings.xml | 30 +++ .../src/main/res/values-sk/strings.xml | 30 +++ .../src/main/res/values-sv/strings.xml | 30 +++ .../src/main/res/values-ta/strings.xml | 30 +++ .../src/main/res/values-te/strings.xml | 30 +++ .../src/main/res/values-th/strings.xml | 30 +++ .../src/main/res/values-tl/strings.xml | 29 +++ .../src/main/res/values-tr/strings.xml | 30 +++ .../src/main/res/values-vi/strings.xml | 30 +++ .../src/main/res/values-zh-rCN/strings.xml | 30 +++ .../src/main/res/values-zh-rHK/strings.xml | 30 +++ .../src/main/res/values-zh-rTW/strings.xml | 30 +++ facebook-login/src/main/res/values/attrs.xml | 43 ++++ .../src/main/res/values/dimens.xml | 10 +- .../src/main/res/values/strings.xml | 45 +++++ facebook-login/src/main/res/values/styles.xml | 50 +++++ facebook-messenger/.gitignore | 1 + facebook-messenger/build.gradle | 47 +++++ facebook-messenger/proguard-rules.pro | 33 +++ .../src/main/AndroidManifest.xml | 29 +++ .../com/facebook/messenger/Messenger.java | 5 + .../messenger/MessengerThreadParams.java | 2 +- .../facebook/messenger/MessengerUtils.java | 3 +- .../messenger/ShareToMessengerParams.java | 2 +- .../ShareToMessengerParamsBuilder.java | 2 +- .../messenger_bubble_large_blue.png | Bin 0 -> 636 bytes .../messenger_bubble_large_white.png | Bin 0 -> 523 bytes .../messenger_bubble_small_blue.png | Bin 0 -> 556 bytes .../messenger_bubble_small_white.png | Bin 0 -> 461 bytes .../messenger_button_send_round_shadow.png | Bin 0 -> 1752 bytes .../messenger_bubble_large_blue.png | Bin 0 -> 442 bytes .../messenger_bubble_large_white.png | Bin 0 -> 375 bytes .../messenger_bubble_small_blue.png | Bin 0 -> 406 bytes .../messenger_bubble_small_white.png | Bin 0 -> 344 bytes .../messenger_button_send_round_shadow.png | Bin 0 -> 829 bytes .../messenger_bubble_large_blue.png | Bin 0 -> 834 bytes .../messenger_bubble_large_white.png | Bin 0 -> 713 bytes .../messenger_bubble_small_blue.png | Bin 0 -> 720 bytes .../messenger_bubble_small_white.png | Bin 0 -> 613 bytes .../messenger_button_send_round_shadow.png | Bin 0 -> 2563 bytes .../messenger_bubble_large_blue.png | Bin 0 -> 1192 bytes .../messenger_bubble_large_white.png | Bin 0 -> 993 bytes .../messenger_bubble_small_blue.png | Bin 0 -> 1043 bytes .../messenger_bubble_small_white.png | Bin 0 -> 890 bytes .../messenger_button_send_round_shadow.png | Bin 0 -> 5226 bytes .../messenger_button_blue_bg_round.xml | 0 .../messenger_button_blue_bg_selector.xml | 0 .../messenger_button_white_bg_round.xml | 0 .../messenger_button_white_bg_selector.xml | 0 .../messenger_button_send_blue_large.xml | 0 .../messenger_button_send_blue_round.xml | 0 .../messenger_button_send_blue_small.xml | 0 .../messenger_button_send_white_large.xml | 0 .../messenger_button_send_white_round.xml | 0 .../messenger_button_send_white_small.xml | 0 .../res/values}/messenger_button_strings.xml | 0 .../res/values/messenger_button_styles.xml | 0 facebook-places/.gitignore | 1 + facebook-places/build.gradle | 46 +++++ facebook-places/proguard-rules.pro | 33 +++ .../src/main/AndroidManifest.xml | 11 +- .../com/facebook/places/PlaceManager.java | 1 - .../main/java/com/facebook/places/Places.java | 5 + .../facebook/places/internal/BleScanner.java | 0 .../places/internal/BleScannerImpl.java | 0 .../places/internal/BleScannerLegacy.java | 0 .../places/internal/BluetoothScanResult.java | 0 .../places/internal/LocationPackage.java | 0 .../internal/LocationPackageManager.java | 0 .../LocationPackageRequestParams.java | 0 .../places/internal/LocationScanner.java | 0 .../places/internal/LocationScannerImpl.java | 0 .../places/internal/ScannerException.java | 0 .../places/internal/ScannerFactory.java | 0 .../places/internal/WifiScanResult.java | 0 .../facebook/places/internal/WifiScanner.java | 0 .../places/internal/WifiScannerImpl.java | 32 ++- .../CurrentPlaceFeedbackRequestParams.java | 0 .../model/CurrentPlaceRequestParams.java | 0 .../facebook/places/model/PlaceFields.java | 0 .../places/model/PlaceInfoRequestParams.java | 0 .../model/PlaceSearchRequestParams.java | 0 facebook-share/.gitignore | 1 + facebook-share/build.gradle | 48 +++++ facebook-share/proguard-rules.pro | 33 +++ .../src/main/AndroidManifest.xml | 11 +- .../facebook/internal/CollectionMapper.java | 0 .../java/com/facebook/internal/Mutable.java | 0 .../com/facebook/share/DeviceShareDialog.java | 0 .../main/java/com/facebook/share/Share.java | 5 + .../java/com/facebook/share/ShareApi.java | 0 .../internal/AppInviteDialogFeature.java | 0 .../share/internal/GameRequestValidation.java | 0 .../share/internal/MessageDialogFeature.java | 0 .../OpenGraphMessageDialogFeature.java | 0 .../share/internal/VideoUploader.java | 0 .../share/model/AppInviteContent.java | 0 .../share/widget/AppInviteDialog.java | 6 + .../share/widget/CreateAppGroupDialog.java | 0 .../share/widget/DeviceShareButton.java | 2 +- .../share/widget/GameRequestDialog.java | 0 .../share/widget/JoinAppGroupDialog.java | 0 .../facebook/share/widget/MessageDialog.java | 0 .../com/facebook/share/widget/SendButton.java | 2 +- .../facebook/share/widget/ShareButton.java | 2 +- .../share/widget/ShareButtonBase.java | 0 .../com_facebook_send_button_text_color.xml | 0 .../com_facebook_button_send_icon_blue.png | Bin 0 -> 659 bytes .../com_facebook_button_send_icon_white.png | Bin 0 -> 348 bytes .../com_facebook_button_send_icon_blue.png | Bin 0 -> 412 bytes .../com_facebook_button_send_icon_white.png | Bin 0 -> 251 bytes .../com_facebook_button_send_icon_blue.png | Bin 0 -> 460 bytes .../com_facebook_button_send_icon_white.png | Bin 0 -> 445 bytes .../com_facebook_button_send_icon_white.png | Bin 0 -> 640 bytes .../com_facebook_button_send_background.xml | 0 .../com_facebook_send_button_icon.xml | 0 facebook-share/src/main/res/values/styles.xml | 39 ++++ facebook/build.gradle | 127 ++---------- facebook/proguard-project.txt | 12 +- .../java/com/facebook/AsyncRequestTests.java | 5 - .../java/com/facebook/RequestTests.java | 6 +- .../java/com/facebook/TestUserManager.java | 9 +- .../java/com/facebook/TestUtils.java | 1 + .../appevents/AppEventsLoggerTests.java | 9 - .../java/com/facebook/internal/GraphUtil.java | 2 +- .../internal/ImageResponseCacheTest.java | 4 - facebook/src/main/AndroidManifest.xml | 23 +-- .../src/main/java/com.facebook.all/All.java | 5 + .../internal/AutomaticAnalyticsLogger.java | 77 ------- .../com_facebook_button_icon_blue.png | Bin 2797 -> 0 bytes ...com_facebook_button_like_icon_selected.png | Bin 187 -> 0 bytes .../com_facebook_button_send_icon_blue.png | Bin 1386 -> 0 bytes .../com_facebook_button_send_icon_white.png | Bin 478 -> 0 bytes ...om_facebook_tooltip_black_background.9.png | Bin 1645 -> 0 bytes .../com_facebook_tooltip_black_xout.png | Bin 228 -> 0 bytes ...com_facebook_tooltip_blue_background.9.png | Bin 2207 -> 0 bytes .../com_facebook_tooltip_blue_bottomnub.png | Bin 785 -> 0 bytes .../com_facebook_tooltip_blue_topnub.png | Bin 607 -> 0 bytes .../com_facebook_tooltip_blue_xout.png | Bin 228 -> 0 bytes .../messenger_bubble_large_blue.png | Bin 1059 -> 0 bytes .../messenger_bubble_large_white.png | Bin 785 -> 0 bytes .../messenger_bubble_small_blue.png | Bin 918 -> 0 bytes .../messenger_bubble_small_white.png | Bin 700 -> 0 bytes .../messenger_button_send_round_shadow.png | Bin 3404 -> 0 bytes .../com_facebook_button_icon_blue.png | Bin 1780 -> 0 bytes .../com_facebook_button_send_icon_blue.png | Bin 980 -> 0 bytes .../com_facebook_button_send_icon_white.png | Bin 346 -> 0 bytes .../res/drawable-mdpi/com_facebook_close.png | Bin 1470 -> 0 bytes ...acebook_profile_picture_blank_portrait.png | Bin 1568 -> 0 bytes ..._facebook_profile_picture_blank_square.png | Bin 1482 -> 0 bytes ...om_facebook_tooltip_black_background.9.png | Bin 1128 -> 0 bytes .../com_facebook_tooltip_black_xout.png | Bin 193 -> 0 bytes ...com_facebook_tooltip_blue_background.9.png | Bin 1336 -> 0 bytes .../com_facebook_tooltip_blue_topnub.png | Bin 338 -> 0 bytes .../com_facebook_tooltip_blue_xout.png | Bin 193 -> 0 bytes .../messenger_bubble_large_blue.png | Bin 700 -> 0 bytes .../messenger_bubble_large_white.png | Bin 512 -> 0 bytes .../messenger_bubble_small_blue.png | Bin 644 -> 0 bytes .../messenger_bubble_small_white.png | Bin 473 -> 0 bytes .../messenger_button_send_round_shadow.png | Bin 1751 -> 0 bytes .../com_facebook_button_icon_blue.png | Bin 4354 -> 0 bytes ...com_facebook_button_like_icon_selected.png | Bin 205 -> 0 bytes .../com_facebook_button_send_icon_blue.png | Bin 924 -> 0 bytes .../com_facebook_button_send_icon_white.png | Bin 645 -> 0 bytes .../com_facebook_tooltip_black_topnub.png | Bin 589 -> 0 bytes .../com_facebook_tooltip_black_xout.png | Bin 210 -> 0 bytes ...com_facebook_tooltip_blue_background.9.png | Bin 3350 -> 0 bytes .../com_facebook_tooltip_blue_bottomnub.png | Bin 977 -> 0 bytes .../com_facebook_tooltip_blue_topnub.png | Bin 720 -> 0 bytes .../com_facebook_tooltip_blue_xout.png | Bin 226 -> 0 bytes .../messenger_bubble_large_blue.png | Bin 1499 -> 0 bytes .../messenger_bubble_large_white.png | Bin 1178 -> 0 bytes .../messenger_bubble_small_blue.png | Bin 1257 -> 0 bytes .../messenger_bubble_small_white.png | Bin 966 -> 0 bytes .../messenger_button_send_round_shadow.png | Bin 5367 -> 0 bytes .../com_facebook_button_icon_blue.png | Bin 7289 -> 0 bytes ...com_facebook_button_like_icon_selected.png | Bin 256 -> 0 bytes .../com_facebook_button_send_icon_white.png | Bin 1002 -> 0 bytes .../messenger_bubble_large_blue.png | Bin 2197 -> 0 bytes .../messenger_bubble_large_white.png | Bin 1764 -> 0 bytes .../messenger_bubble_small_blue.png | Bin 1895 -> 0 bytes .../messenger_bubble_small_white.png | Bin 1513 -> 0 bytes .../messenger_button_send_round_shadow.png | Bin 8993 -> 0 bytes .../values-de/messenger_button_strings.xml | 24 --- .../values-el/messenger_button_strings.xml | 24 --- .../messenger_button_strings.xml | 24 --- .../values-es/messenger_button_strings.xml | 24 --- .../values-fi/messenger_button_strings.xml | 24 --- .../values-fr/messenger_button_strings.xml | 24 --- .../values-gu/messenger_button_strings.xml | 24 --- .../values-hi/messenger_button_strings.xml | 24 --- .../values-in/messenger_button_strings.xml | 24 --- .../values-it/messenger_button_strings.xml | 24 --- .../values-ja/messenger_button_strings.xml | 24 --- .../values-kn/messenger_button_strings.xml | 24 --- .../values-ko/messenger_button_strings.xml | 24 --- .../values-ml/messenger_button_strings.xml | 24 --- .../values-mr/messenger_button_strings.xml | 24 --- .../values-ms/messenger_button_strings.xml | 24 --- .../values-nb/messenger_button_strings.xml | 24 --- .../values-nl/messenger_button_strings.xml | 24 --- .../values-pl/messenger_button_strings.xml | 24 --- .../messenger_button_strings.xml | 24 --- .../values-pt/messenger_button_strings.xml | 24 --- .../values-ru/messenger_button_strings.xml | 24 --- .../values-sv/messenger_button_strings.xml | 24 --- .../values-ta/messenger_button_strings.xml | 24 --- .../values-te/messenger_button_strings.xml | 24 --- .../values-th/messenger_button_strings.xml | 24 --- .../values-tl/messenger_button_strings.xml | 24 --- .../values-tr/messenger_button_strings.xml | 24 --- .../values-vi/messenger_button_strings.xml | 24 --- .../messenger_button_strings.xml | 24 --- .../messenger_button_strings.xml | 24 --- .../messenger_button_strings.xml | 24 --- .../res/values/messenger_button_strings.xml | 24 --- facebook/src/main/res/values/styles.xml | 148 -------------- .../com/facebook/ErrorClassificationTest.java | 4 +- .../facebook/FacebookContentProviderTest.java | 1 - .../facebook/FacebookSdkPowerMockTest.java | 2 - .../java/com/facebook/GraphErrorTest.java | 3 - .../com/facebook/LegacyTokenCacheTest.java | 1 - .../com/facebook/appevents/AppEventTest.java | 1 + .../appevents/AutomaticAnalyticsTest.java | 1 - .../internal/BundleJSONConverterTest.java | 4 +- .../CallbackManagerImplPowerMockTest.java | 1 - ...acebookRequestErrorClassificationTest.java | 4 +- .../facebook/internal/FileLruCacheTest.java | 6 +- .../java/com/facebook/internal/JsonUtil.java | 2 +- .../com/facebook/internal/JsonUtilTest.java | 4 +- .../NativeAppCallAttachmentStoreTest.java | 5 +- .../internal/NativeProtocolVersionTest.java | 4 +- .../internal/UtilityIntersectRangeTest.java | 2 +- .../com/facebook/internal/UtilityTest.java | 3 +- .../com/facebook/internal/ValidateTest.java | 2 +- .../com/facebook/internal/WorkQueueTest.java | 3 +- .../CustomTabLoginMethodHandlerTest.java | 1 - .../com/facebook/login/LoginManagerTest.java | 10 +- .../internal/ShareContentValidationTest.java | 8 - maven.gradle | 100 +++++++++ samples/HelloFacebookSample/build.gradle | 3 +- .../HelloFacebookSampleActivity.java | 4 +- samples/Iconicus/build.gradle | 2 +- .../com/example/iconicus/MainActivity.java | 1 - samples/LoginSample/build.gradle | 2 +- .../samples/loginsample/MainActivity.java | 1 - samples/MessengerSendSample/build.gradle | 4 +- samples/PlacesGraphSample/build.gradle | 3 +- .../example/places/PlacesGraphSDKHelper.java | 1 - samples/RPSSample/build.gradle | 3 +- .../src/com/example/rps/MainActivity.java | 4 +- .../src/com/example/rps/RpsFragment.java | 7 +- samples/Scrumptious/build.gradle | 3 +- .../com/example/scrumptious/MainActivity.java | 1 - .../scrumptious/ScrumptiousApplication.java | 1 - .../scrumptious/SelectionFragment.java | 6 + .../picker/GraphObjectPagingLoader.java | 6 + .../picker/PlacePickerFragment.java | 5 +- samples/ShareIt/build.gradle | 3 +- samples/SwitchUserSample/build.gradle | 2 +- .../com/example/switchuser/MainActivity.java | 3 - settings.gradle | 2 + 597 files changed, 4390 insertions(+), 1504 deletions(-) create mode 100644 facebook-applinks/.gitignore create mode 100644 facebook-applinks/build.gradle create mode 100644 facebook-applinks/proguard-rules.pro rename facebook/src/main/res/values-cs/messenger_button_strings.xml => facebook-applinks/src/main/AndroidManifest.xml (86%) rename {facebook => facebook-applinks}/src/main/java/com/facebook/applinks/AppLinkData.java (100%) create mode 100644 facebook-applinks/src/main/java/com/facebook/applinks/AppLinks.java rename {facebook => facebook-applinks}/src/main/java/com/facebook/applinks/FacebookAppLinkResolver.java (100%) create mode 100644 facebook-common/.gitignore create mode 100644 facebook-common/build.gradle create mode 100644 facebook-common/proguard-rules.pro rename facebook/src/main/res/values-pa/messenger_button_strings.xml => facebook-common/src/main/AndroidManifest.xml (70%) rename {facebook => facebook-common}/src/main/java/com/facebook/AccessTokenTracker.java (97%) rename {facebook => facebook-common}/src/main/java/com/facebook/CustomTabActivity.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/CustomTabMainActivity.java (99%) rename {facebook => facebook-common}/src/main/java/com/facebook/FacebookActivity.java (99%) rename {facebook => facebook-common}/src/main/java/com/facebook/FacebookAuthorizationException.java (98%) rename {facebook => facebook-common}/src/main/java/com/facebook/FacebookButtonBase.java (99%) rename {facebook => facebook-common}/src/main/java/com/facebook/FacebookCallback.java (98%) rename {facebook => facebook-common}/src/main/java/com/facebook/FacebookDialog.java (98%) rename {facebook => facebook-common}/src/main/java/com/facebook/FacebookDialogException.java (98%) rename {facebook => facebook-common}/src/main/java/com/facebook/LoginStatusCallback.java (98%) create mode 100644 facebook-common/src/main/java/com/facebook/ShareGraphRequest.java rename facebook/src/test/java/com/facebook/GraphUtilTest.java => facebook-common/src/main/java/com/facebook/WebDialog.java (65%) create mode 100644 facebook-common/src/main/java/com/facebook/common/Common.java rename {facebook => facebook-common}/src/main/java/com/facebook/devicerequests/internal/DeviceRequestsHelper.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/internal/AppCall.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/internal/CustomTab.java (96%) rename {facebook => facebook-common}/src/main/java/com/facebook/internal/DialogFeature.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/internal/DialogPresenter.java (98%) rename {facebook => facebook-common}/src/main/java/com/facebook/internal/FacebookDialogBase.java (98%) rename {facebook => facebook-common}/src/main/java/com/facebook/internal/FacebookDialogFragment.java (97%) rename {facebook => facebook-common}/src/main/java/com/facebook/internal/FacebookWebFallbackDialog.java (92%) rename {facebook => facebook-common}/src/main/java/com/facebook/internal/FragmentWrapper.java (98%) rename {facebook => facebook-common}/src/main/java/com/facebook/internal/LoginAuthorizationType.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/internal/PlatformServiceClient.java (99%) rename {facebook => facebook-common}/src/main/java/com/facebook/internal/WebDialog.java (93%) rename {facebook => facebook-common}/src/main/java/com/facebook/login/CustomTabLoginMethodHandler.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/login/DeviceAuthDialog.java (99%) rename {facebook => facebook-common}/src/main/java/com/facebook/login/DeviceAuthMethodHandler.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/login/FacebookLiteLoginMethodHandler.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/login/GetTokenClient.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/login/GetTokenLoginMethodHandler.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/login/KatanaProxyLoginMethodHandler.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/login/LoginBehavior.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/login/LoginClient.java (99%) rename {facebook => facebook-common}/src/main/java/com/facebook/login/LoginFragment.java (99%) rename {facebook => facebook-common}/src/main/java/com/facebook/login/LoginLogger.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/login/LoginManager.java (95%) rename {facebook => facebook-common}/src/main/java/com/facebook/login/LoginMethodHandler.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/login/LoginResult.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/login/LoginStatusClient.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/login/NativeAppLoginMethodHandler.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/login/StartActivityDelegate.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/login/WebLoginMethodHandler.java (99%) rename {facebook => facebook-common}/src/main/java/com/facebook/login/WebViewLoginMethodHandler.java (96%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/ShareBuilder.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/Sharer.java (100%) rename facebook/src/main/java/com/facebook/internal/PermissionType.java => facebook-common/src/main/java/com/facebook/share/internal/CameraEffectFeature.java (54%) create mode 100644 facebook-common/src/main/java/com/facebook/share/internal/CameraEffectJSONUtility.java rename {facebook => facebook-common}/src/main/java/com/facebook/share/internal/DeviceShareDialogFragment.java (99%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/internal/LegacyNativeDialogParameters.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/internal/LikeActionController.java (99%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/internal/LikeBoxCountView.java (99%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/internal/LikeButton.java (99%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/internal/LikeContent.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/internal/LikeDialog.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/internal/LikeDialogFeature.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/internal/LikeStatusClient.java (97%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/internal/NativeDialogParameters.java (82%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/internal/OpenGraphActionDialogFeature.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/internal/OpenGraphJSONUtility.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/internal/ResultProcessor.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/internal/ShareConstants.java (97%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/internal/ShareContentValidation.java (95%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/internal/ShareDialogFeature.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/internal/ShareFeedContent.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/internal/ShareInternalUtility.java (95%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/internal/WebDialogParameters.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/model/AppGroupCreationContent.java (100%) create mode 100644 facebook-common/src/main/java/com/facebook/share/model/CameraEffectArguments.java create mode 100644 facebook-common/src/main/java/com/facebook/share/model/CameraEffectTextures.java rename {facebook => facebook-common}/src/main/java/com/facebook/share/model/GameRequestContent.java (100%) create mode 100644 facebook-common/src/main/java/com/facebook/share/model/ShareCameraEffectContent.java rename {facebook => facebook-common}/src/main/java/com/facebook/share/model/ShareContent.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/model/ShareHashtag.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/model/ShareLinkContent.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/model/ShareMedia.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/model/ShareMediaContent.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/model/ShareModel.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/model/ShareModelBuilder.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/model/ShareOpenGraphAction.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/model/ShareOpenGraphContent.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/model/ShareOpenGraphObject.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/model/ShareOpenGraphValueContainer.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/model/SharePhoto.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/model/SharePhotoContent.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/model/ShareVideo.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/model/ShareVideoContent.java (100%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/widget/LikeView.java (99%) rename {facebook => facebook-common}/src/main/java/com/facebook/share/widget/ShareDialog.java (91%) rename {facebook => facebook-common}/src/main/res/color/com_facebook_button_text_color.xml (100%) create mode 100644 facebook-common/src/main/res/drawable-hdpi/com_facebook_button_icon_blue.png rename {facebook => facebook-common}/src/main/res/drawable-hdpi/com_facebook_button_icon_white.png (100%) create mode 100644 facebook-common/src/main/res/drawable-hdpi/com_facebook_button_like_icon_selected.png rename {facebook => facebook-common}/src/main/res/drawable-hdpi/com_facebook_close.png (100%) create mode 100644 facebook-common/src/main/res/drawable-mdpi/com_facebook_button_icon_blue.png rename {facebook => facebook-common}/src/main/res/drawable-mdpi/com_facebook_button_icon_white.png (100%) rename {facebook => facebook-common}/src/main/res/drawable-mdpi/com_facebook_button_like_icon_selected.png (100%) create mode 100755 facebook-common/src/main/res/drawable-mdpi/com_facebook_close.png create mode 100644 facebook-common/src/main/res/drawable-xhdpi/com_facebook_button_icon_blue.png rename {facebook => facebook-common}/src/main/res/drawable-xhdpi/com_facebook_button_icon_white.png (100%) create mode 100644 facebook-common/src/main/res/drawable-xhdpi/com_facebook_button_like_icon_selected.png rename {facebook => facebook-common}/src/main/res/drawable-xhdpi/com_facebook_close.png (100%) create mode 100644 facebook-common/src/main/res/drawable-xxhdpi/com_facebook_button_icon_blue.png rename {facebook => facebook-common}/src/main/res/drawable-xxhdpi/com_facebook_button_icon_white.png (100%) create mode 100644 facebook-common/src/main/res/drawable-xxhdpi/com_facebook_button_like_icon_selected.png rename {facebook => facebook-common}/src/main/res/drawable/com_facebook_auth_dialog_background.xml (100%) rename {facebook => facebook-common}/src/main/res/drawable/com_facebook_auth_dialog_cancel_background.xml (100%) rename {facebook => facebook-common}/src/main/res/drawable/com_facebook_auth_dialog_header_background.xml (100%) rename {facebook => facebook-common}/src/main/res/drawable/com_facebook_button_background.xml (100%) rename {facebook => facebook-common}/src/main/res/drawable/com_facebook_button_icon.xml (100%) rename {facebook => facebook-common}/src/main/res/drawable/com_facebook_button_like_background.xml (100%) rename {facebook => facebook-common}/src/main/res/drawable/com_facebook_favicon_blue.xml (100%) rename {facebook => facebook-common}/src/main/res/layout/com_facebook_activity_layout.xml (100%) rename {facebook => facebook-common}/src/main/res/layout/com_facebook_device_auth_dialog_fragment.xml (100%) rename {facebook => facebook-common}/src/main/res/layout/com_facebook_login_fragment.xml (100%) rename {facebook => facebook-common}/src/main/res/layout/com_facebook_smart_device_dialog_fragment.xml (100%) rename {facebook => facebook-common}/src/main/res/values-af/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-ar/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-bn/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-cs/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-da/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-de/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-el/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-en-rGB/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-es-rES/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-es/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-fi/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-fr/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-gu/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-hi/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-hr/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-hu/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-id/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-in/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-it/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-iw/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-ja/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-kn/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-ko/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-ml/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-mr/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-ms/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-nb/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-nl/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-pa/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-pl/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-pt-rPT/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-pt/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-ru/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-sk/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-sv/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-ta/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-te/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-th/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-tl/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-tr/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-vi/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-zh-rCN/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-zh-rHK/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values-zh-rTW/strings.xml (100%) rename {facebook => facebook-common}/src/main/res/values/attrs.xml (71%) create mode 100644 facebook-common/src/main/res/values/dimens.xml rename {facebook => facebook-common}/src/main/res/values/strings.xml (100%) create mode 100644 facebook-common/src/main/res/values/styles.xml create mode 100644 facebook-core/.gitignore create mode 100644 facebook-core/build.gradle create mode 100644 facebook-core/proguard-rules.pro create mode 100644 facebook-core/src/main/AndroidManifest.xml rename {facebook => facebook-core}/src/main/java/com/facebook/AccessToken.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/AccessTokenCache.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/AccessTokenManager.java (97%) rename {facebook => facebook-core}/src/main/java/com/facebook/AccessTokenSource.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/CallbackManager.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/FacebookBroadcastReceiver.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/FacebookContentProvider.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/FacebookException.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/FacebookGraphResponseException.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/FacebookOperationCanceledException.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/FacebookRequestError.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/FacebookSdk.java (98%) rename {facebook => facebook-core}/src/main/java/com/facebook/FacebookSdkNotInitializedException.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/FacebookSdkVersion.java (95%) rename {facebook => facebook-core}/src/main/java/com/facebook/FacebookServiceException.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/GraphRequest.java (97%) rename {facebook => facebook-core}/src/main/java/com/facebook/GraphRequestAsyncTask.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/GraphRequestBatch.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/GraphResponse.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/HttpMethod.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/LegacyTokenHelper.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/LoggingBehavior.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/Profile.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/ProfileCache.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/ProfileManager.java (95%) rename {facebook => facebook-core}/src/main/java/com/facebook/ProfileTracker.java (93%) rename {facebook => facebook-core}/src/main/java/com/facebook/ProgressNoopOutputStream.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/ProgressOutputStream.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/RequestOutputStream.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/RequestProgress.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/AccessTokenAppIdPair.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/AnalyticsUserIDStore.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/AppEvent.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/AppEventCollection.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/AppEventQueue.java (99%) rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/AppEventStore.java (97%) rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/AppEventsConstants.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/AppEventsLogger.java (91%) rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/FacebookTimeSpentData.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/FlushReason.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/FlushResult.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/FlushStatistics.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/PersistedEvents.java (99%) rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/SessionEventsState.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/internal/ActivityLifecycleTracker.java (94%) rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/internal/AppEventUtility.java (97%) create mode 100644 facebook-core/src/main/java/com/facebook/appevents/internal/AutomaticAnalyticsLogger.java rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/internal/Constants.java (74%) create mode 100644 facebook-core/src/main/java/com/facebook/appevents/internal/InAppPurchaseEventManager.java rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/internal/InternalAppEventsLogger.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/internal/SessionInfo.java (99%) rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/internal/SessionLogger.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/appevents/internal/SourceApplicationInfo.java (100%) create mode 100644 facebook-core/src/main/java/com/facebook/core/Core.java rename {facebook => facebook-core}/src/main/java/com/facebook/internal/AnalyticsEvents.java (99%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/AppEventsLoggerUtility.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/AttributionIdentifiers.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/BoltsMeasurementEventListener.java (98%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/BundleJSONConverter.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/CallbackManagerImpl.java (79%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/FacebookInitProvider.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/FacebookRequestErrorClassification.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/FacebookSignatureValidator.java (90%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/FetchedAppSettings.java (96%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/FetchedAppSettingsManager.java (88%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/FileLruCache.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/ImageDownloader.java (98%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/ImageRequest.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/ImageResponse.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/ImageResponseCache.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/InternalSettings.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/LockOnGetVariable.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/Logger.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/NativeAppCallAttachmentStore.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/NativeProtocol.java (95%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/ProfileInformationCache.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/ServerProtocol.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/SmartLoginOption.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/UrlRedirectCache.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/Utility.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/Validate.java (98%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/WorkQueue.java (100%) rename {facebook => facebook-core}/src/main/java/com/facebook/internal/package-info.java (99%) rename {facebook => facebook-core}/src/main/java/com/facebook/login/DefaultAudience.java (100%) create mode 100644 facebook-login/.gitignore create mode 100644 facebook-login/build.gradle create mode 100644 facebook-login/proguard-rules.pro rename facebook/src/main/res/values-ar/messenger_button_strings.xml => facebook-login/src/main/AndroidManifest.xml (86%) rename {facebook => facebook-login}/src/main/java/com/facebook/login/DeviceLoginManager.java (100%) create mode 100644 facebook-login/src/main/java/com/facebook/login/Login.java rename {facebook => facebook-login}/src/main/java/com/facebook/login/widget/DeviceLoginButton.java (100%) rename {facebook => facebook-login}/src/main/java/com/facebook/login/widget/LoginButton.java (99%) rename {facebook => facebook-login}/src/main/java/com/facebook/login/widget/ProfilePictureView.java (99%) rename {facebook => facebook-login}/src/main/java/com/facebook/login/widget/ToolTipPopup.java (99%) create mode 100644 facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_black_background.9.png rename {facebook => facebook-login}/src/main/res/drawable-hdpi/com_facebook_tooltip_black_bottomnub.png (100%) rename {facebook => facebook-login}/src/main/res/drawable-hdpi/com_facebook_tooltip_black_topnub.png (100%) create mode 100644 facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_black_xout.png create mode 100644 facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_background.9.png create mode 100644 facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_bottomnub.png create mode 100644 facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_topnub.png create mode 100644 facebook-login/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_xout.png create mode 100644 facebook-login/src/main/res/drawable-mdpi/com_facebook_profile_picture_blank_portrait.png create mode 100644 facebook-login/src/main/res/drawable-mdpi/com_facebook_profile_picture_blank_square.png create mode 100644 facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_black_background.9.png rename {facebook => facebook-login}/src/main/res/drawable-mdpi/com_facebook_tooltip_black_bottomnub.png (100%) rename {facebook => facebook-login}/src/main/res/drawable-mdpi/com_facebook_tooltip_black_topnub.png (100%) create mode 100644 facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_black_xout.png create mode 100644 facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_background.9.png rename {facebook => facebook-login}/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_bottomnub.png (100%) create mode 100644 facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_topnub.png create mode 100644 facebook-login/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_xout.png rename {facebook => facebook-login}/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_background.9.png (100%) rename {facebook => facebook-login}/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_bottomnub.png (100%) create mode 100644 facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_topnub.png create mode 100644 facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_xout.png create mode 100644 facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_background.9.png create mode 100644 facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_bottomnub.png create mode 100644 facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_topnub.png create mode 100644 facebook-login/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_xout.png rename {facebook => facebook-login}/src/main/res/drawable/com_facebook_button_login_background.xml (100%) rename {facebook => facebook-login}/src/main/res/drawable/com_facebook_button_login_logo.xml (100%) rename {facebook => facebook-login}/src/main/res/drawable/com_facebook_button_login_silver_background.xml (100%) rename {facebook => facebook-login}/src/main/res/layout/com_facebook_tooltip_bubble.xml (100%) create mode 100644 facebook-login/src/main/res/values-af/strings.xml create mode 100644 facebook-login/src/main/res/values-ar/strings.xml create mode 100644 facebook-login/src/main/res/values-bn/strings.xml create mode 100644 facebook-login/src/main/res/values-cs/strings.xml create mode 100644 facebook-login/src/main/res/values-da/strings.xml create mode 100644 facebook-login/src/main/res/values-de/strings.xml create mode 100644 facebook-login/src/main/res/values-el/strings.xml create mode 100644 facebook-login/src/main/res/values-en-rGB/strings.xml create mode 100644 facebook-login/src/main/res/values-es-rES/strings.xml create mode 100644 facebook-login/src/main/res/values-es/strings.xml create mode 100644 facebook-login/src/main/res/values-fi/strings.xml create mode 100644 facebook-login/src/main/res/values-fr/strings.xml create mode 100644 facebook-login/src/main/res/values-gu/strings.xml create mode 100644 facebook-login/src/main/res/values-hi/strings.xml create mode 100644 facebook-login/src/main/res/values-hr/strings.xml create mode 100644 facebook-login/src/main/res/values-hu/strings.xml create mode 100644 facebook-login/src/main/res/values-in/strings.xml create mode 100644 facebook-login/src/main/res/values-it/strings.xml create mode 100644 facebook-login/src/main/res/values-iw/strings.xml create mode 100644 facebook-login/src/main/res/values-ja/strings.xml create mode 100644 facebook-login/src/main/res/values-kn/strings.xml create mode 100644 facebook-login/src/main/res/values-ko/strings.xml create mode 100644 facebook-login/src/main/res/values-ml/strings.xml create mode 100644 facebook-login/src/main/res/values-mr/strings.xml create mode 100644 facebook-login/src/main/res/values-ms/strings.xml create mode 100644 facebook-login/src/main/res/values-nb/strings.xml create mode 100644 facebook-login/src/main/res/values-nl/strings.xml create mode 100644 facebook-login/src/main/res/values-pa/strings.xml create mode 100644 facebook-login/src/main/res/values-pl/strings.xml create mode 100644 facebook-login/src/main/res/values-pt-rPT/strings.xml create mode 100644 facebook-login/src/main/res/values-pt/strings.xml create mode 100644 facebook-login/src/main/res/values-ru/strings.xml create mode 100644 facebook-login/src/main/res/values-sk/strings.xml create mode 100644 facebook-login/src/main/res/values-sv/strings.xml create mode 100644 facebook-login/src/main/res/values-ta/strings.xml create mode 100644 facebook-login/src/main/res/values-te/strings.xml create mode 100644 facebook-login/src/main/res/values-th/strings.xml create mode 100644 facebook-login/src/main/res/values-tl/strings.xml create mode 100644 facebook-login/src/main/res/values-tr/strings.xml create mode 100644 facebook-login/src/main/res/values-vi/strings.xml create mode 100644 facebook-login/src/main/res/values-zh-rCN/strings.xml create mode 100644 facebook-login/src/main/res/values-zh-rHK/strings.xml create mode 100644 facebook-login/src/main/res/values-zh-rTW/strings.xml create mode 100644 facebook-login/src/main/res/values/attrs.xml rename {facebook => facebook-login}/src/main/res/values/dimens.xml (79%) create mode 100644 facebook-login/src/main/res/values/strings.xml create mode 100644 facebook-login/src/main/res/values/styles.xml create mode 100644 facebook-messenger/.gitignore create mode 100644 facebook-messenger/build.gradle create mode 100644 facebook-messenger/proguard-rules.pro create mode 100644 facebook-messenger/src/main/AndroidManifest.xml create mode 100644 facebook-messenger/src/main/java/com/facebook/messenger/Messenger.java rename {facebook => facebook-messenger}/src/main/java/com/facebook/messenger/MessengerThreadParams.java (99%) rename {facebook => facebook-messenger}/src/main/java/com/facebook/messenger/MessengerUtils.java (99%) rename {facebook => facebook-messenger}/src/main/java/com/facebook/messenger/ShareToMessengerParams.java (99%) rename {facebook => facebook-messenger}/src/main/java/com/facebook/messenger/ShareToMessengerParamsBuilder.java (99%) create mode 100644 facebook-messenger/src/main/res/drawable-hdpi/messenger_bubble_large_blue.png create mode 100644 facebook-messenger/src/main/res/drawable-hdpi/messenger_bubble_large_white.png create mode 100644 facebook-messenger/src/main/res/drawable-hdpi/messenger_bubble_small_blue.png create mode 100644 facebook-messenger/src/main/res/drawable-hdpi/messenger_bubble_small_white.png create mode 100644 facebook-messenger/src/main/res/drawable-hdpi/messenger_button_send_round_shadow.png create mode 100644 facebook-messenger/src/main/res/drawable-mdpi/messenger_bubble_large_blue.png create mode 100644 facebook-messenger/src/main/res/drawable-mdpi/messenger_bubble_large_white.png create mode 100644 facebook-messenger/src/main/res/drawable-mdpi/messenger_bubble_small_blue.png create mode 100644 facebook-messenger/src/main/res/drawable-mdpi/messenger_bubble_small_white.png create mode 100644 facebook-messenger/src/main/res/drawable-mdpi/messenger_button_send_round_shadow.png create mode 100644 facebook-messenger/src/main/res/drawable-xhdpi/messenger_bubble_large_blue.png create mode 100644 facebook-messenger/src/main/res/drawable-xhdpi/messenger_bubble_large_white.png create mode 100644 facebook-messenger/src/main/res/drawable-xhdpi/messenger_bubble_small_blue.png create mode 100644 facebook-messenger/src/main/res/drawable-xhdpi/messenger_bubble_small_white.png create mode 100644 facebook-messenger/src/main/res/drawable-xhdpi/messenger_button_send_round_shadow.png create mode 100644 facebook-messenger/src/main/res/drawable-xxhdpi/messenger_bubble_large_blue.png create mode 100644 facebook-messenger/src/main/res/drawable-xxhdpi/messenger_bubble_large_white.png create mode 100644 facebook-messenger/src/main/res/drawable-xxhdpi/messenger_bubble_small_blue.png create mode 100644 facebook-messenger/src/main/res/drawable-xxhdpi/messenger_bubble_small_white.png create mode 100644 facebook-messenger/src/main/res/drawable-xxhdpi/messenger_button_send_round_shadow.png rename {facebook => facebook-messenger}/src/main/res/drawable/messenger_button_blue_bg_round.xml (100%) rename {facebook => facebook-messenger}/src/main/res/drawable/messenger_button_blue_bg_selector.xml (100%) rename {facebook => facebook-messenger}/src/main/res/drawable/messenger_button_white_bg_round.xml (100%) rename {facebook => facebook-messenger}/src/main/res/drawable/messenger_button_white_bg_selector.xml (100%) rename {facebook => facebook-messenger}/src/main/res/layout/messenger_button_send_blue_large.xml (100%) rename {facebook => facebook-messenger}/src/main/res/layout/messenger_button_send_blue_round.xml (100%) rename {facebook => facebook-messenger}/src/main/res/layout/messenger_button_send_blue_small.xml (100%) rename {facebook => facebook-messenger}/src/main/res/layout/messenger_button_send_white_large.xml (100%) rename {facebook => facebook-messenger}/src/main/res/layout/messenger_button_send_white_round.xml (100%) rename {facebook => facebook-messenger}/src/main/res/layout/messenger_button_send_white_small.xml (100%) rename {facebook/src/main/res/values-da => facebook-messenger/src/main/res/values}/messenger_button_strings.xml (100%) rename {facebook => facebook-messenger}/src/main/res/values/messenger_button_styles.xml (100%) create mode 100644 facebook-places/.gitignore create mode 100644 facebook-places/build.gradle create mode 100644 facebook-places/proguard-rules.pro rename facebook/src/main/res/values-bn/messenger_button_strings.xml => facebook-places/src/main/AndroidManifest.xml (86%) rename {facebook => facebook-places}/src/main/java/com/facebook/places/PlaceManager.java (99%) create mode 100644 facebook-places/src/main/java/com/facebook/places/Places.java rename {facebook => facebook-places}/src/main/java/com/facebook/places/internal/BleScanner.java (100%) rename {facebook => facebook-places}/src/main/java/com/facebook/places/internal/BleScannerImpl.java (100%) rename {facebook => facebook-places}/src/main/java/com/facebook/places/internal/BleScannerLegacy.java (100%) rename {facebook => facebook-places}/src/main/java/com/facebook/places/internal/BluetoothScanResult.java (100%) rename {facebook => facebook-places}/src/main/java/com/facebook/places/internal/LocationPackage.java (100%) rename {facebook => facebook-places}/src/main/java/com/facebook/places/internal/LocationPackageManager.java (100%) rename {facebook => facebook-places}/src/main/java/com/facebook/places/internal/LocationPackageRequestParams.java (100%) rename {facebook => facebook-places}/src/main/java/com/facebook/places/internal/LocationScanner.java (100%) rename {facebook => facebook-places}/src/main/java/com/facebook/places/internal/LocationScannerImpl.java (100%) rename {facebook => facebook-places}/src/main/java/com/facebook/places/internal/ScannerException.java (100%) rename {facebook => facebook-places}/src/main/java/com/facebook/places/internal/ScannerFactory.java (100%) rename {facebook => facebook-places}/src/main/java/com/facebook/places/internal/WifiScanResult.java (100%) rename {facebook => facebook-places}/src/main/java/com/facebook/places/internal/WifiScanner.java (100%) rename {facebook => facebook-places}/src/main/java/com/facebook/places/internal/WifiScannerImpl.java (91%) rename {facebook => facebook-places}/src/main/java/com/facebook/places/model/CurrentPlaceFeedbackRequestParams.java (100%) rename {facebook => facebook-places}/src/main/java/com/facebook/places/model/CurrentPlaceRequestParams.java (100%) rename {facebook => facebook-places}/src/main/java/com/facebook/places/model/PlaceFields.java (100%) rename {facebook => facebook-places}/src/main/java/com/facebook/places/model/PlaceInfoRequestParams.java (100%) rename {facebook => facebook-places}/src/main/java/com/facebook/places/model/PlaceSearchRequestParams.java (100%) create mode 100644 facebook-share/.gitignore create mode 100644 facebook-share/build.gradle create mode 100644 facebook-share/proguard-rules.pro rename facebook/src/main/res/values-af/messenger_button_strings.xml => facebook-share/src/main/AndroidManifest.xml (86%) rename {facebook => facebook-share}/src/main/java/com/facebook/internal/CollectionMapper.java (100%) rename {facebook => facebook-share}/src/main/java/com/facebook/internal/Mutable.java (100%) rename {facebook => facebook-share}/src/main/java/com/facebook/share/DeviceShareDialog.java (100%) create mode 100644 facebook-share/src/main/java/com/facebook/share/Share.java rename {facebook => facebook-share}/src/main/java/com/facebook/share/ShareApi.java (100%) rename {facebook => facebook-share}/src/main/java/com/facebook/share/internal/AppInviteDialogFeature.java (100%) rename {facebook => facebook-share}/src/main/java/com/facebook/share/internal/GameRequestValidation.java (100%) rename {facebook => facebook-share}/src/main/java/com/facebook/share/internal/MessageDialogFeature.java (100%) rename {facebook => facebook-share}/src/main/java/com/facebook/share/internal/OpenGraphMessageDialogFeature.java (100%) rename {facebook => facebook-share}/src/main/java/com/facebook/share/internal/VideoUploader.java (100%) rename {facebook => facebook-share}/src/main/java/com/facebook/share/model/AppInviteContent.java (100%) rename {facebook => facebook-share}/src/main/java/com/facebook/share/widget/AppInviteDialog.java (97%) rename {facebook => facebook-share}/src/main/java/com/facebook/share/widget/CreateAppGroupDialog.java (100%) rename {facebook => facebook-share}/src/main/java/com/facebook/share/widget/DeviceShareButton.java (99%) rename {facebook => facebook-share}/src/main/java/com/facebook/share/widget/GameRequestDialog.java (100%) rename {facebook => facebook-share}/src/main/java/com/facebook/share/widget/JoinAppGroupDialog.java (100%) rename {facebook => facebook-share}/src/main/java/com/facebook/share/widget/MessageDialog.java (100%) rename {facebook => facebook-share}/src/main/java/com/facebook/share/widget/SendButton.java (99%) rename {facebook => facebook-share}/src/main/java/com/facebook/share/widget/ShareButton.java (99%) rename {facebook => facebook-share}/src/main/java/com/facebook/share/widget/ShareButtonBase.java (100%) rename {facebook => facebook-share}/src/main/res/color/com_facebook_send_button_text_color.xml (100%) create mode 100644 facebook-share/src/main/res/drawable-hdpi/com_facebook_button_send_icon_blue.png create mode 100644 facebook-share/src/main/res/drawable-hdpi/com_facebook_button_send_icon_white.png create mode 100644 facebook-share/src/main/res/drawable-mdpi/com_facebook_button_send_icon_blue.png create mode 100644 facebook-share/src/main/res/drawable-mdpi/com_facebook_button_send_icon_white.png create mode 100644 facebook-share/src/main/res/drawable-xhdpi/com_facebook_button_send_icon_blue.png create mode 100644 facebook-share/src/main/res/drawable-xhdpi/com_facebook_button_send_icon_white.png create mode 100644 facebook-share/src/main/res/drawable-xxhdpi/com_facebook_button_send_icon_white.png rename {facebook => facebook-share}/src/main/res/drawable/com_facebook_button_send_background.xml (100%) rename {facebook => facebook-share}/src/main/res/drawable/com_facebook_send_button_icon.xml (100%) create mode 100644 facebook-share/src/main/res/values/styles.xml rename facebook/src/{main => androidTest}/java/com/facebook/TestUserManager.java (97%) rename facebook/src/{main => androidTest}/java/com/facebook/internal/GraphUtil.java (99%) create mode 100644 facebook/src/main/java/com.facebook.all/All.java delete mode 100644 facebook/src/main/java/com/facebook/appevents/internal/AutomaticAnalyticsLogger.java delete mode 100644 facebook/src/main/res/drawable-hdpi/com_facebook_button_icon_blue.png delete mode 100644 facebook/src/main/res/drawable-hdpi/com_facebook_button_like_icon_selected.png delete mode 100644 facebook/src/main/res/drawable-hdpi/com_facebook_button_send_icon_blue.png delete mode 100644 facebook/src/main/res/drawable-hdpi/com_facebook_button_send_icon_white.png delete mode 100644 facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_black_background.9.png delete mode 100644 facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_black_xout.png delete mode 100644 facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_background.9.png delete mode 100644 facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_bottomnub.png delete mode 100644 facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_topnub.png delete mode 100644 facebook/src/main/res/drawable-hdpi/com_facebook_tooltip_blue_xout.png delete mode 100644 facebook/src/main/res/drawable-hdpi/messenger_bubble_large_blue.png delete mode 100644 facebook/src/main/res/drawable-hdpi/messenger_bubble_large_white.png delete mode 100644 facebook/src/main/res/drawable-hdpi/messenger_bubble_small_blue.png delete mode 100644 facebook/src/main/res/drawable-hdpi/messenger_bubble_small_white.png delete mode 100644 facebook/src/main/res/drawable-hdpi/messenger_button_send_round_shadow.png delete mode 100644 facebook/src/main/res/drawable-mdpi/com_facebook_button_icon_blue.png delete mode 100644 facebook/src/main/res/drawable-mdpi/com_facebook_button_send_icon_blue.png delete mode 100644 facebook/src/main/res/drawable-mdpi/com_facebook_button_send_icon_white.png delete mode 100755 facebook/src/main/res/drawable-mdpi/com_facebook_close.png delete mode 100644 facebook/src/main/res/drawable-mdpi/com_facebook_profile_picture_blank_portrait.png delete mode 100644 facebook/src/main/res/drawable-mdpi/com_facebook_profile_picture_blank_square.png delete mode 100644 facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_black_background.9.png delete mode 100644 facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_black_xout.png delete mode 100644 facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_background.9.png delete mode 100644 facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_topnub.png delete mode 100644 facebook/src/main/res/drawable-mdpi/com_facebook_tooltip_blue_xout.png delete mode 100644 facebook/src/main/res/drawable-mdpi/messenger_bubble_large_blue.png delete mode 100644 facebook/src/main/res/drawable-mdpi/messenger_bubble_large_white.png delete mode 100644 facebook/src/main/res/drawable-mdpi/messenger_bubble_small_blue.png delete mode 100644 facebook/src/main/res/drawable-mdpi/messenger_bubble_small_white.png delete mode 100644 facebook/src/main/res/drawable-mdpi/messenger_button_send_round_shadow.png delete mode 100644 facebook/src/main/res/drawable-xhdpi/com_facebook_button_icon_blue.png delete mode 100644 facebook/src/main/res/drawable-xhdpi/com_facebook_button_like_icon_selected.png delete mode 100644 facebook/src/main/res/drawable-xhdpi/com_facebook_button_send_icon_blue.png delete mode 100644 facebook/src/main/res/drawable-xhdpi/com_facebook_button_send_icon_white.png delete mode 100644 facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_topnub.png delete mode 100644 facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_black_xout.png delete mode 100644 facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_background.9.png delete mode 100644 facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_bottomnub.png delete mode 100644 facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_topnub.png delete mode 100644 facebook/src/main/res/drawable-xhdpi/com_facebook_tooltip_blue_xout.png delete mode 100644 facebook/src/main/res/drawable-xhdpi/messenger_bubble_large_blue.png delete mode 100644 facebook/src/main/res/drawable-xhdpi/messenger_bubble_large_white.png delete mode 100644 facebook/src/main/res/drawable-xhdpi/messenger_bubble_small_blue.png delete mode 100644 facebook/src/main/res/drawable-xhdpi/messenger_bubble_small_white.png delete mode 100644 facebook/src/main/res/drawable-xhdpi/messenger_button_send_round_shadow.png delete mode 100644 facebook/src/main/res/drawable-xxhdpi/com_facebook_button_icon_blue.png delete mode 100644 facebook/src/main/res/drawable-xxhdpi/com_facebook_button_like_icon_selected.png delete mode 100644 facebook/src/main/res/drawable-xxhdpi/com_facebook_button_send_icon_white.png delete mode 100644 facebook/src/main/res/drawable-xxhdpi/messenger_bubble_large_blue.png delete mode 100644 facebook/src/main/res/drawable-xxhdpi/messenger_bubble_large_white.png delete mode 100644 facebook/src/main/res/drawable-xxhdpi/messenger_bubble_small_blue.png delete mode 100644 facebook/src/main/res/drawable-xxhdpi/messenger_bubble_small_white.png delete mode 100644 facebook/src/main/res/drawable-xxhdpi/messenger_button_send_round_shadow.png delete mode 100644 facebook/src/main/res/values-de/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-el/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-es-rES/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-es/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-fi/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-fr/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-gu/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-hi/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-in/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-it/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-ja/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-kn/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-ko/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-ml/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-mr/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-ms/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-nb/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-nl/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-pl/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-pt-rPT/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-pt/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-ru/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-sv/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-ta/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-te/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-th/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-tl/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-tr/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-vi/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-zh-rCN/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-zh-rHK/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values-zh-rTW/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values/messenger_button_strings.xml delete mode 100644 facebook/src/main/res/values/styles.xml rename facebook/src/{main => test}/java/com/facebook/internal/JsonUtil.java (99%) create mode 100644 maven.gradle diff --git a/README.mdown b/README.mdown index d13f6a4bc4..bdb321d827 100644 --- a/README.mdown +++ b/README.mdown @@ -15,11 +15,87 @@ TRY IT OUT FEATURES -------- -* Login - https://developers.facebook.com/docs/facebook-login -* Sharing - https://developers.facebook.com/docs/sharing +* Login - https://developers.facebook.com/docs/facebook-login +* Sharing - https://developers.facebook.com/docs/sharing +* Places - https://developers.facebook.com/docs/places +* Messenger - https://developers.facebook.com/docs/messenger-expressions * App Links - https://developers.facebook.com/docs/applinks -* Graph API - https://developers.facebook.com/docs/android/graph * Analytics - https://developers.facebook.com/docs/analytics +* Graph API - https://developers.facebook.com/docs/android/graph + +STRUCTURE +--------- +The SDK is separated into modules with the following structure. Each box represents a module with an +estimated size when included into an app (when included using proguard and supporting a single language). + + +--------------------------------------------------------------+ + | | + | Facebook-android-sdk : 335.39 kb | + | | + +--------------------------------------------------------------+ + +----------+ +----------+ +----------+ +----------+ +----------+ + | | | | | | | | | | + | | | | | | | | | | + | Facebook | | Facebook | | Facebook | | Facebook | | Facebook | + | -Login : | | -Share : | | -Places :| |-Messenger: |-Applinks:| + | | | | | | | | | | + | 246.66 kb| | 247.92 kb| | 53.48 kb | | 91.96 kb | | 67.00 kb | + +----------+ +----------+ | | | | | | + +-----------------------+ | | | | | | + | | | | | | | | + | Facebook-Common : N/A | | | | | | | + | | | | | | | | + +-----------------------+ +----------+ +----------+ +----------+ + +--------------------------------------------------------------+ + | | + | Facebook-Core : 52.46 kb | + | | + +--------------------------------------------------------------+ + +Example: Including the Facebook-Login module (which depends on Facebook-Common and Facebook-Core) would +increase your app's size by an estimated 243.91 kb and including just Facebook-Core would only increase +your size by 50.98 kb. + +USAGE +----- +Facebook SDKs are broken up into separate modules as shown above. To ensure the most optimized use of +space only install the modules that you intend to use. To get started, see the Installation section below. + +INSTALLATION +------------ +Facebook SDKs are published to Maven as independent modules. To utilize a feature listed above +include the appropriate dependency (or dependencies) listed below in your `app/build.gradle` file. + + dependencies { + // Facebook Core only (Analytics) + compile 'com.facebook.android:facebook-core:4.27' + + // Facebook Login only + compile 'com.facebook.android:facebook-login:4.27' + + // Facebook Share only + compile 'com.facebook.android:facebook-share:4.27' + + // Facebook Places only + compile 'com.facebook.android:facebook-places:4.27' + + // Facbeook Messenger only + compile 'com.facebook.android:facebook-messenger:4.27' + + // Facebook App Links only + compile 'com.facebook.android:facebook-applinks:4.27' + + // Facebook Android SDK (everything) + compile 'com.facebook.android:facebook-android-sdk:4.27' + } + +You may also need to add the following to your project/build.gradle file. + + buildscript { + repositories { + mavenCentral() + } + } GIVE FEEDBACK ------------- diff --git a/facebook-applinks/.gitignore b/facebook-applinks/.gitignore new file mode 100644 index 0000000000..796b96d1c4 --- /dev/null +++ b/facebook-applinks/.gitignore @@ -0,0 +1 @@ +/build diff --git a/facebook-applinks/build.gradle b/facebook-applinks/build.gradle new file mode 100644 index 0000000000..e3756d51b9 --- /dev/null +++ b/facebook-applinks/build.gradle @@ -0,0 +1,33 @@ +apply plugin: 'com.android.library' + +project.group 'com.facebook.android' + +project.ext.name = 'Facebook-Applinks-Android-SDK' +project.ext.artifactId = "facebook-applinks" +project.ext.description = 'Facebook Applinks Android SDK' +project.ext.url = 'https://github.com/facebook/facebook-android-sdk/facebook-applinks' + +dependencies { + // Facebook Dependencies + compile project(':facebook-core') +} + +android { + compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION) + buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION + + defaultConfig { + minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION) + targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION) + consumerProguardFiles 'proguard-rules.pro' + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +apply from: "${rootDir}/maven.gradle" diff --git a/facebook-applinks/proguard-rules.pro b/facebook-applinks/proguard-rules.pro new file mode 100644 index 0000000000..3d8585b06b --- /dev/null +++ b/facebook-applinks/proguard-rules.pro @@ -0,0 +1,33 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +-keepclassmembers class * implements java.io.Serializable { + private static final java.io.ObjectStreamField[] serialPersistentFields; + private void writeObject(java.io.ObjectOutputStream); + private void readObject(java.io.ObjectInputStream); + java.lang.Object writeReplace(); + java.lang.Object readResolve(); +} + +-keepnames class com.facebook.FacebookActivity +-keepnames class com.facebook.CustomTabActivity + +-keep class com.facebook.applinks.AppLinks \ No newline at end of file diff --git a/facebook/src/main/res/values-cs/messenger_button_strings.xml b/facebook-applinks/src/main/AndroidManifest.xml similarity index 86% rename from facebook/src/main/res/values-cs/messenger_button_strings.xml rename to facebook-applinks/src/main/AndroidManifest.xml index 381bf74f6d..52fc26c0a0 100644 --- a/facebook/src/main/res/values-cs/messenger_button_strings.xml +++ b/facebook-applinks/src/main/AndroidManifest.xml @@ -19,6 +19,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --> - - Odeslat - + + + + + + + diff --git a/facebook/src/main/java/com/facebook/applinks/AppLinkData.java b/facebook-applinks/src/main/java/com/facebook/applinks/AppLinkData.java similarity index 100% rename from facebook/src/main/java/com/facebook/applinks/AppLinkData.java rename to facebook-applinks/src/main/java/com/facebook/applinks/AppLinkData.java diff --git a/facebook-applinks/src/main/java/com/facebook/applinks/AppLinks.java b/facebook-applinks/src/main/java/com/facebook/applinks/AppLinks.java new file mode 100644 index 0000000000..7fc64e106f --- /dev/null +++ b/facebook-applinks/src/main/java/com/facebook/applinks/AppLinks.java @@ -0,0 +1,5 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +package com.facebook.applinks; + +public class AppLinks { } diff --git a/facebook/src/main/java/com/facebook/applinks/FacebookAppLinkResolver.java b/facebook-applinks/src/main/java/com/facebook/applinks/FacebookAppLinkResolver.java similarity index 100% rename from facebook/src/main/java/com/facebook/applinks/FacebookAppLinkResolver.java rename to facebook-applinks/src/main/java/com/facebook/applinks/FacebookAppLinkResolver.java diff --git a/facebook-common/.gitignore b/facebook-common/.gitignore new file mode 100644 index 0000000000..796b96d1c4 --- /dev/null +++ b/facebook-common/.gitignore @@ -0,0 +1 @@ +/build diff --git a/facebook-common/build.gradle b/facebook-common/build.gradle new file mode 100644 index 0000000000..3e286586cd --- /dev/null +++ b/facebook-common/build.gradle @@ -0,0 +1,54 @@ +apply plugin: 'com.android.library' + +project.group 'com.facebook.android' + +project.ext.name = 'Facebook-Common-Android-SDK' +project.ext.artifactId = "facebook-common" +project.ext.description = 'Facebook Common Android SDK' +project.ext.url = 'https://github.com/facebook/facebook-android-sdk/facebook-common' + +dependencies { + // Facebook Dependencies + compile project(':facebook-core') + // Support Dependencies + compile 'com.android.support:appcompat-v7:25.3.1' + compile 'com.android.support:cardview-v7:25.3.1' + compile 'com.android.support:customtabs:25.3.1' + compile 'com.android.support:support-v4:25.3.1' + // Third-party Dependencies + compile 'com.google.zxing:core:3.3.0' +} + +android { + compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION) + buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION + + defaultConfig { + minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION) + targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION) + consumerProguardFiles 'proguard-rules.pro' + vectorDrawables.useSupportLibrary = true + } + + aaptOptions { + additionalParameters "--no-version-vectors" + } + + lintOptions { + abortOnError false + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_7 + targetCompatibility JavaVersion.VERSION_1_7 + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +apply from: "${rootDir}/maven.gradle" diff --git a/facebook-common/proguard-rules.pro b/facebook-common/proguard-rules.pro new file mode 100644 index 0000000000..5d0cc61f89 --- /dev/null +++ b/facebook-common/proguard-rules.pro @@ -0,0 +1,33 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +-keepclassmembers class * implements java.io.Serializable { + private static final java.io.ObjectStreamField[] serialPersistentFields; + private void writeObject(java.io.ObjectOutputStream); + private void readObject(java.io.ObjectInputStream); + java.lang.Object writeReplace(); + java.lang.Object readResolve(); +} + +-keepnames class com.facebook.FacebookActivity +-keepnames class com.facebook.CustomTabActivity + +-keep class com.facebook.common.Common diff --git a/facebook/src/main/res/values-pa/messenger_button_strings.xml b/facebook-common/src/main/AndroidManifest.xml similarity index 70% rename from facebook/src/main/res/values-pa/messenger_button_strings.xml rename to facebook-common/src/main/AndroidManifest.xml index 12057e2f74..11c353a701 100644 --- a/facebook/src/main/res/values-pa/messenger_button_strings.xml +++ b/facebook-common/src/main/AndroidManifest.xml @@ -19,6 +19,18 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --> - - ਭੇਜੋ - + + + + + + + + + + + diff --git a/facebook/src/main/java/com/facebook/AccessTokenTracker.java b/facebook-common/src/main/java/com/facebook/AccessTokenTracker.java similarity index 97% rename from facebook/src/main/java/com/facebook/AccessTokenTracker.java rename to facebook-common/src/main/java/com/facebook/AccessTokenTracker.java index b25b6e4f6c..c4f3ed29c7 100644 --- a/facebook/src/main/java/com/facebook/AccessTokenTracker.java +++ b/facebook-common/src/main/java/com/facebook/AccessTokenTracker.java @@ -26,6 +26,9 @@ import android.content.IntentFilter; import android.support.v4.content.LocalBroadcastManager; +import com.facebook.AccessToken; +import com.facebook.AccessTokenManager; +import com.facebook.FacebookSdk; import com.facebook.internal.Validate; diff --git a/facebook/src/main/java/com/facebook/CustomTabActivity.java b/facebook-common/src/main/java/com/facebook/CustomTabActivity.java similarity index 100% rename from facebook/src/main/java/com/facebook/CustomTabActivity.java rename to facebook-common/src/main/java/com/facebook/CustomTabActivity.java diff --git a/facebook/src/main/java/com/facebook/CustomTabMainActivity.java b/facebook-common/src/main/java/com/facebook/CustomTabMainActivity.java similarity index 99% rename from facebook/src/main/java/com/facebook/CustomTabMainActivity.java rename to facebook-common/src/main/java/com/facebook/CustomTabMainActivity.java index f29c027fbc..004852f94f 100644 --- a/facebook/src/main/java/com/facebook/CustomTabMainActivity.java +++ b/facebook-common/src/main/java/com/facebook/CustomTabMainActivity.java @@ -29,6 +29,7 @@ import android.os.Bundle; import android.support.v4.content.LocalBroadcastManager; +import com.facebook.FacebookSdk; import com.facebook.internal.CustomTab; public class CustomTabMainActivity extends Activity { diff --git a/facebook/src/main/java/com/facebook/FacebookActivity.java b/facebook-common/src/main/java/com/facebook/FacebookActivity.java similarity index 99% rename from facebook/src/main/java/com/facebook/FacebookActivity.java rename to facebook-common/src/main/java/com/facebook/FacebookActivity.java index ded4c9660c..3c691db225 100644 --- a/facebook/src/main/java/com/facebook/FacebookActivity.java +++ b/facebook-common/src/main/java/com/facebook/FacebookActivity.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -28,6 +28,7 @@ import android.support.v4.app.FragmentManager; import android.util.Log; +import com.facebook.common.R; import com.facebook.internal.FacebookDialogFragment; import com.facebook.internal.NativeProtocol; import com.facebook.login.LoginFragment; diff --git a/facebook/src/main/java/com/facebook/FacebookAuthorizationException.java b/facebook-common/src/main/java/com/facebook/FacebookAuthorizationException.java similarity index 98% rename from facebook/src/main/java/com/facebook/FacebookAuthorizationException.java rename to facebook-common/src/main/java/com/facebook/FacebookAuthorizationException.java index 1997e80575..b61765e7ad 100644 --- a/facebook/src/main/java/com/facebook/FacebookAuthorizationException.java +++ b/facebook-common/src/main/java/com/facebook/FacebookAuthorizationException.java @@ -20,6 +20,8 @@ package com.facebook; +import com.facebook.FacebookException; + /** * An Exception indicating that Login failed. */ diff --git a/facebook/src/main/java/com/facebook/FacebookButtonBase.java b/facebook-common/src/main/java/com/facebook/FacebookButtonBase.java similarity index 99% rename from facebook/src/main/java/com/facebook/FacebookButtonBase.java rename to facebook-common/src/main/java/com/facebook/FacebookButtonBase.java index 0192206cd4..5cde8d40f7 100644 --- a/facebook/src/main/java/com/facebook/FacebookButtonBase.java +++ b/facebook-common/src/main/java/com/facebook/FacebookButtonBase.java @@ -35,8 +35,10 @@ import android.view.View; import android.widget.Button; +import com.facebook.FacebookException; import com.facebook.appevents.AppEventsLogger; import com.facebook.internal.FragmentWrapper; +import com.facebook.common.R; /** * A base class for a facebook button. diff --git a/facebook/src/main/java/com/facebook/FacebookCallback.java b/facebook-common/src/main/java/com/facebook/FacebookCallback.java similarity index 98% rename from facebook/src/main/java/com/facebook/FacebookCallback.java rename to facebook-common/src/main/java/com/facebook/FacebookCallback.java index b25092c1d7..222dc5cf99 100644 --- a/facebook/src/main/java/com/facebook/FacebookCallback.java +++ b/facebook-common/src/main/java/com/facebook/FacebookCallback.java @@ -20,6 +20,8 @@ package com.facebook; +import com.facebook.FacebookException; + /** * A callback class for the Facebook SDK. */ diff --git a/facebook/src/main/java/com/facebook/FacebookDialog.java b/facebook-common/src/main/java/com/facebook/FacebookDialog.java similarity index 98% rename from facebook/src/main/java/com/facebook/FacebookDialog.java rename to facebook-common/src/main/java/com/facebook/FacebookDialog.java index 5af094bc63..f66e8125d5 100644 --- a/facebook/src/main/java/com/facebook/FacebookDialog.java +++ b/facebook-common/src/main/java/com/facebook/FacebookDialog.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -20,6 +20,8 @@ package com.facebook; +import com.facebook.CallbackManager; + /** * Represents dialogs provided by Facebook */ diff --git a/facebook/src/main/java/com/facebook/FacebookDialogException.java b/facebook-common/src/main/java/com/facebook/FacebookDialogException.java similarity index 98% rename from facebook/src/main/java/com/facebook/FacebookDialogException.java rename to facebook-common/src/main/java/com/facebook/FacebookDialogException.java index 4a336fa280..67ddb452d2 100644 --- a/facebook/src/main/java/com/facebook/FacebookDialogException.java +++ b/facebook-common/src/main/java/com/facebook/FacebookDialogException.java @@ -20,6 +20,8 @@ package com.facebook; +import com.facebook.FacebookException; + /** * Represents an error condition relating to displaying a Facebook Web dialog. */ diff --git a/facebook/src/main/java/com/facebook/LoginStatusCallback.java b/facebook-common/src/main/java/com/facebook/LoginStatusCallback.java similarity index 98% rename from facebook/src/main/java/com/facebook/LoginStatusCallback.java rename to facebook-common/src/main/java/com/facebook/LoginStatusCallback.java index beab053eeb..d4de3939dd 100644 --- a/facebook/src/main/java/com/facebook/LoginStatusCallback.java +++ b/facebook-common/src/main/java/com/facebook/LoginStatusCallback.java @@ -20,6 +20,8 @@ package com.facebook; +import com.facebook.AccessToken; + /** * A callback class for getting the Login Status of a user. */ diff --git a/facebook-common/src/main/java/com/facebook/ShareGraphRequest.java b/facebook-common/src/main/java/com/facebook/ShareGraphRequest.java new file mode 100644 index 0000000000..436d3561d1 --- /dev/null +++ b/facebook-common/src/main/java/com/facebook/ShareGraphRequest.java @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, + * copy, modify, and distribute this software in source code or binary form for use + * in connection with the web services and APIs provided by Facebook. + * + * As with any software that integrates with the Facebook platform, your use of + * this software is subject to the Facebook Developer Principles and Policies + * [http://developers.facebook.com/policy/]. This copyright notice shall be + * included in all copies or substantial portions of the software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.facebook; + +import android.net.Uri; +import android.os.Bundle; + +import com.facebook.AccessToken; +import com.facebook.FacebookException; +import com.facebook.GraphRequest; +import com.facebook.HttpMethod; +import com.facebook.internal.NativeProtocol; +import com.facebook.share.internal.OpenGraphJSONUtility; +import com.facebook.share.model.ShareOpenGraphObject; +import com.facebook.share.model.SharePhoto; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.Locale; + +public class ShareGraphRequest { + + /** + * Create an User Owned Open Graph object + * + * Use this method to create an open graph object, which can then be posted utilizing the same + * GraphRequest methods as other GraphRequests. + * + * @param openGraphObject The open graph object to create. Only SharePhotos with the imageUrl + * set are accepted through this helper method. + * @return GraphRequest for creating the given openGraphObject + * @throws FacebookException thrown in the case of a JSONException or in the case of invalid + * format for SharePhoto (missing imageUrl) + */ + + public static GraphRequest createOpenGraphObject(final ShareOpenGraphObject openGraphObject) + throws FacebookException { + String type = openGraphObject.getString("type"); + if (type == null) { + type = openGraphObject.getString("og:type"); + } + + if (type == null) { + throw new FacebookException("Open graph object type cannot be null"); + } + try { + JSONObject stagedObject = (JSONObject) OpenGraphJSONUtility.toJSONValue( + openGraphObject, + new OpenGraphJSONUtility.PhotoJSONProcessor() { + @Override + public JSONObject toJSONObject(SharePhoto photo) { + Uri photoUri = photo.getImageUrl(); + JSONObject photoJSONObject = new JSONObject(); + try { + photoJSONObject.put( + NativeProtocol.IMAGE_URL_KEY, photoUri.toString()); + } catch (Exception e) { + throw new FacebookException("Unable to attach images", e); + } + return photoJSONObject; + } + }); + String ogType = type; + Bundle parameters = new Bundle(); + parameters.putString("object", stagedObject.toString()); + + String graphPath = String.format( + Locale.ROOT, "%s/%s", + "me", + "objects/" + ogType); + return new GraphRequest( + AccessToken.getCurrentAccessToken(), + graphPath, + parameters, + HttpMethod.POST); + } + catch(JSONException e){ + throw new FacebookException(e.getMessage()); + } + } + +} diff --git a/facebook/src/test/java/com/facebook/GraphUtilTest.java b/facebook-common/src/main/java/com/facebook/WebDialog.java similarity index 65% rename from facebook/src/test/java/com/facebook/GraphUtilTest.java rename to facebook-common/src/main/java/com/facebook/WebDialog.java index a89fcf8462..168b31b480 100644 --- a/facebook/src/test/java/com/facebook/GraphUtilTest.java +++ b/facebook-common/src/main/java/com/facebook/WebDialog.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -20,22 +20,23 @@ package com.facebook; -import com.facebook.internal.GraphUtil; -import com.facebook.internal.NativeProtocol; +public class WebDialog { -import org.json.JSONObject; -import org.junit.Test; + private WebDialog() { /* no instances */ } -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import static org.junit.Assert.*; + /** + * Gets the theme used by {@link com.facebook.internal.WebDialog} + * @return the theme + */ + public static int getWebDialogTheme() { + return com.facebook.internal.WebDialog.getWebDialogTheme(); + } -public class GraphUtilTest extends FacebookTestCase { - @Test - public void testIsOpenGraphObjectForPost() { - JSONObject jsonObject = mock(JSONObject.class); - when(jsonObject.optBoolean(NativeProtocol.OPEN_GRAPH_CREATE_OBJECT_KEY)).thenReturn(true); - assertTrue(GraphUtil.isOpenGraphObjectForPost(jsonObject)); + /** + * Sets the theme used by {@link com.facebook.internal.WebDialog} + * @param theme A theme to use + */ + public static void setWebDialogTheme(int theme) { + com.facebook.internal.WebDialog.setWebDialogTheme(theme); } } diff --git a/facebook-common/src/main/java/com/facebook/common/Common.java b/facebook-common/src/main/java/com/facebook/common/Common.java new file mode 100644 index 0000000000..af14a02534 --- /dev/null +++ b/facebook-common/src/main/java/com/facebook/common/Common.java @@ -0,0 +1,5 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +package com.facebook.common; + +public class Common { } diff --git a/facebook/src/main/java/com/facebook/devicerequests/internal/DeviceRequestsHelper.java b/facebook-common/src/main/java/com/facebook/devicerequests/internal/DeviceRequestsHelper.java similarity index 100% rename from facebook/src/main/java/com/facebook/devicerequests/internal/DeviceRequestsHelper.java rename to facebook-common/src/main/java/com/facebook/devicerequests/internal/DeviceRequestsHelper.java diff --git a/facebook/src/main/java/com/facebook/internal/AppCall.java b/facebook-common/src/main/java/com/facebook/internal/AppCall.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/AppCall.java rename to facebook-common/src/main/java/com/facebook/internal/AppCall.java diff --git a/facebook/src/main/java/com/facebook/internal/CustomTab.java b/facebook-common/src/main/java/com/facebook/internal/CustomTab.java similarity index 96% rename from facebook/src/main/java/com/facebook/internal/CustomTab.java rename to facebook-common/src/main/java/com/facebook/internal/CustomTab.java index 91c345222e..22dcad5098 100644 --- a/facebook/src/main/java/com/facebook/internal/CustomTab.java +++ b/facebook-common/src/main/java/com/facebook/internal/CustomTab.java @@ -28,6 +28,8 @@ import android.support.customtabs.CustomTabsIntent; import com.facebook.FacebookSdk; +import com.facebook.internal.ServerProtocol; +import com.facebook.internal.Utility; public class CustomTab { diff --git a/facebook/src/main/java/com/facebook/internal/DialogFeature.java b/facebook-common/src/main/java/com/facebook/internal/DialogFeature.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/DialogFeature.java rename to facebook-common/src/main/java/com/facebook/internal/DialogFeature.java diff --git a/facebook/src/main/java/com/facebook/internal/DialogPresenter.java b/facebook-common/src/main/java/com/facebook/internal/DialogPresenter.java similarity index 98% rename from facebook/src/main/java/com/facebook/internal/DialogPresenter.java rename to facebook-common/src/main/java/com/facebook/internal/DialogPresenter.java index bb85849226..eca10cdf1b 100644 --- a/facebook/src/main/java/com/facebook/internal/DialogPresenter.java +++ b/facebook-common/src/main/java/com/facebook/internal/DialogPresenter.java @@ -30,6 +30,11 @@ import com.facebook.FacebookException; import com.facebook.FacebookSdk; import com.facebook.appevents.AppEventsLogger; +import com.facebook.internal.FetchedAppSettings; +import com.facebook.internal.NativeProtocol; +import com.facebook.internal.ServerProtocol; +import com.facebook.internal.Utility; +import com.facebook.internal.Validate; /** * com.facebook.internal is solely for the use of other packages within the diff --git a/facebook/src/main/java/com/facebook/internal/FacebookDialogBase.java b/facebook-common/src/main/java/com/facebook/internal/FacebookDialogBase.java similarity index 98% rename from facebook/src/main/java/com/facebook/internal/FacebookDialogBase.java rename to facebook-common/src/main/java/com/facebook/internal/FacebookDialogBase.java index 3eabaf47c0..b9b46c43fa 100644 --- a/facebook/src/main/java/com/facebook/internal/FacebookDialogBase.java +++ b/facebook-common/src/main/java/com/facebook/internal/FacebookDialogBase.java @@ -30,6 +30,10 @@ import com.facebook.FacebookException; import com.facebook.FacebookSdk; import com.facebook.LoggingBehavior; +import com.facebook.internal.CallbackManagerImpl; +import com.facebook.internal.Logger; +import com.facebook.internal.Utility; +import com.facebook.internal.Validate; import java.util.List; diff --git a/facebook/src/main/java/com/facebook/internal/FacebookDialogFragment.java b/facebook-common/src/main/java/com/facebook/internal/FacebookDialogFragment.java similarity index 97% rename from facebook/src/main/java/com/facebook/internal/FacebookDialogFragment.java rename to facebook-common/src/main/java/com/facebook/internal/FacebookDialogFragment.java index 57d78ed6ec..935d64fd5c 100644 --- a/facebook/src/main/java/com/facebook/internal/FacebookDialogFragment.java +++ b/facebook-common/src/main/java/com/facebook/internal/FacebookDialogFragment.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -31,6 +31,8 @@ import com.facebook.FacebookException; import com.facebook.FacebookSdk; +import com.facebook.internal.NativeProtocol; +import com.facebook.internal.Utility; /** * com.facebook.internal is solely for the use of other packages within the @@ -92,7 +94,7 @@ public void onComplete(Bundle values, FacebookException error) { String redirectUrl = String.format("fb%s://bridge/", FacebookSdk.getApplicationId()); - webDialog = new FacebookWebFallbackDialog(activity, url, redirectUrl); + webDialog = FacebookWebFallbackDialog.newInstance(activity, url, redirectUrl); webDialog.setOnCompleteListener(new WebDialog.OnCompleteListener() { @Override public void onComplete(Bundle values, FacebookException error) { diff --git a/facebook/src/main/java/com/facebook/internal/FacebookWebFallbackDialog.java b/facebook-common/src/main/java/com/facebook/internal/FacebookWebFallbackDialog.java similarity index 92% rename from facebook/src/main/java/com/facebook/internal/FacebookWebFallbackDialog.java rename to facebook-common/src/main/java/com/facebook/internal/FacebookWebFallbackDialog.java index 9d945cdcdd..3d501b255e 100644 --- a/facebook/src/main/java/com/facebook/internal/FacebookWebFallbackDialog.java +++ b/facebook-common/src/main/java/com/facebook/internal/FacebookWebFallbackDialog.java @@ -27,6 +27,11 @@ import android.os.Looper; import android.webkit.WebView; +import com.facebook.internal.BundleJSONConverter; +import com.facebook.internal.NativeProtocol; +import com.facebook.internal.ServerProtocol; +import com.facebook.internal.Utility; + import org.json.JSONException; import org.json.JSONObject; @@ -45,7 +50,16 @@ public class FacebookWebFallbackDialog extends WebDialog { private boolean waitingForDialogToClose; - public FacebookWebFallbackDialog(Context context, String url, String expectedRedirectUrl) { + public static FacebookWebFallbackDialog newInstance( + Context context, + String url, + String expectedRedirectUrl) { + WebDialog.initDefaultTheme(context); + + return new FacebookWebFallbackDialog(context, url, expectedRedirectUrl); + } + + private FacebookWebFallbackDialog(Context context, String url, String expectedRedirectUrl) { super(context, url); setExpectedRedirectUrl(expectedRedirectUrl); diff --git a/facebook/src/main/java/com/facebook/internal/FragmentWrapper.java b/facebook-common/src/main/java/com/facebook/internal/FragmentWrapper.java similarity index 98% rename from facebook/src/main/java/com/facebook/internal/FragmentWrapper.java rename to facebook-common/src/main/java/com/facebook/internal/FragmentWrapper.java index 990faa3a9a..98a8249b32 100644 --- a/facebook/src/main/java/com/facebook/internal/FragmentWrapper.java +++ b/facebook-common/src/main/java/com/facebook/internal/FragmentWrapper.java @@ -26,6 +26,8 @@ import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; +import com.facebook.internal.Validate; + public class FragmentWrapper { private Fragment supportFragment; private android.app.Fragment nativeFragment; diff --git a/facebook/src/main/java/com/facebook/internal/LoginAuthorizationType.java b/facebook-common/src/main/java/com/facebook/internal/LoginAuthorizationType.java similarity index 100% rename from facebook/src/main/java/com/facebook/internal/LoginAuthorizationType.java rename to facebook-common/src/main/java/com/facebook/internal/LoginAuthorizationType.java diff --git a/facebook/src/main/java/com/facebook/internal/PlatformServiceClient.java b/facebook-common/src/main/java/com/facebook/internal/PlatformServiceClient.java similarity index 99% rename from facebook/src/main/java/com/facebook/internal/PlatformServiceClient.java rename to facebook-common/src/main/java/com/facebook/internal/PlatformServiceClient.java index 45b7dfab80..8d54147c97 100644 --- a/facebook/src/main/java/com/facebook/internal/PlatformServiceClient.java +++ b/facebook-common/src/main/java/com/facebook/internal/PlatformServiceClient.java @@ -26,6 +26,8 @@ import android.content.ServiceConnection; import android.os.*; +import com.facebook.internal.NativeProtocol; + /** * com.facebook.internal is solely for the use of other packages within the Facebook SDK for * Android. Use of any of the classes in this package is unsupported, and they may be modified or diff --git a/facebook/src/main/java/com/facebook/internal/WebDialog.java b/facebook-common/src/main/java/com/facebook/internal/WebDialog.java similarity index 93% rename from facebook/src/main/java/com/facebook/internal/WebDialog.java rename to facebook-common/src/main/java/com/facebook/internal/WebDialog.java index 03fce88591..045f889535 100644 --- a/facebook/src/main/java/com/facebook/internal/WebDialog.java +++ b/facebook-common/src/main/java/com/facebook/internal/WebDialog.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -27,6 +27,8 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.drawable.Drawable; @@ -61,7 +63,11 @@ import com.facebook.GraphRequest; import com.facebook.GraphRequestAsyncTask; import com.facebook.GraphResponse; -import com.facebook.R; +import com.facebook.common.R; +import com.facebook.internal.Logger; +import com.facebook.internal.ServerProtocol; +import com.facebook.internal.Utility; +import com.facebook.internal.Validate; import com.facebook.share.internal.ShareConstants; import com.facebook.share.internal.ShareInternalUtility; import com.facebook.share.widget.ShareDialog; @@ -75,6 +81,8 @@ import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.CountDownLatch; +import static com.facebook.FacebookSdk.WEB_DIALOG_THEME; + /** * com.facebook.internal is solely for the use of other packages within the Facebook SDK for * Android. Use of any of the classes in this package is unsupported, and they may be modified or @@ -106,6 +114,8 @@ public class WebDialog extends Dialog { // translucent border around the webview private static final int BACKGROUND_GRAY = 0xCC000000; + private static final int DEFAULT_THEME = R.style.com_facebook_activity_theme; + private String url; private String expectedRedirectUrl = REDIRECT_URI; private OnCompleteListener onCompleteListener; @@ -117,6 +127,58 @@ public class WebDialog extends Dialog { private boolean listenerCalled = false; private boolean isDetached = false; private boolean isPageFinished = false; + private static volatile int webDialogTheme; + + protected static void initDefaultTheme(Context context) { + if (context == null) { + return; + } + + ApplicationInfo ai; + try { + ai = context.getPackageManager().getApplicationInfo( + context.getPackageName(), PackageManager.GET_META_DATA); + } catch (PackageManager.NameNotFoundException e) { + return; + } + + if (ai == null || ai.metaData == null) { + return; + } + + + if (webDialogTheme == 0) { + setWebDialogTheme(ai.metaData.getInt(WEB_DIALOG_THEME)); + } + } + + public static WebDialog newInstance( + Context context, + String action, + Bundle parameters, + int theme, + OnCompleteListener listener) { + initDefaultTheme(context); + + return new WebDialog(context, action, parameters, theme, listener); + } + + /** + * Gets the theme used by {@link com.facebook.internal.WebDialog} + * @return the theme + */ + public static int getWebDialogTheme() { + Validate.sdkInitialized(); + return webDialogTheme; + } + + /** + * Sets the theme used by {@link com.facebook.internal.WebDialog} + * @param theme A theme to use + */ + public static void setWebDialogTheme(int theme) { + webDialogTheme = (theme != 0) ? theme : DEFAULT_THEME; + } /** * Interface that implements a listener to be called when the user's interaction with the @@ -140,8 +202,8 @@ public interface OnCompleteListener { * @param url the URL of the Web Dialog to display; no validation is done on this URL, but it should * be a valid URL pointing to a Facebook Web Dialog */ - public WebDialog(Context context, String url) { - this(context, url, FacebookSdk.getWebDialogTheme()); + protected WebDialog(Context context, String url) { + this(context, url, getWebDialogTheme()); } /** @@ -152,8 +214,8 @@ public WebDialog(Context context, String url) { * be a valid URL pointing to a Facebook Web Dialog * @param theme identifier of a theme to pass to the Dialog class */ - public WebDialog(Context context, String url, int theme) { - super(context, theme == 0 ? FacebookSdk.getWebDialogTheme() : theme); + private WebDialog(Context context, String url, int theme) { + super(context, theme == 0 ? getWebDialogTheme() : theme); this.url = url; } @@ -166,8 +228,13 @@ public WebDialog(Context context, String url, int theme) { * @param theme identifier of a theme to pass to the Dialog class * @param listener the listener to notify, or null if no notification is desired */ - public WebDialog(Context context, String action, Bundle parameters, int theme, OnCompleteListener listener) { - super(context, theme == 0 ? FacebookSdk.getWebDialogTheme() : theme); + private WebDialog( + Context context, + String action, + Bundle parameters, + int theme, + OnCompleteListener listener) { + super(context, theme == 0 ? getWebDialogTheme() : theme); if (parameters == null) { parameters = new Bundle(); @@ -672,7 +739,7 @@ public WebDialog build() { parameters.putString(ServerProtocol.DIALOG_PARAM_APP_ID, applicationId); } - return new WebDialog(context, action, parameters, theme, listener); + return WebDialog.newInstance(context, action, parameters, theme, listener); } public String getApplicationId() { diff --git a/facebook/src/main/java/com/facebook/login/CustomTabLoginMethodHandler.java b/facebook-common/src/main/java/com/facebook/login/CustomTabLoginMethodHandler.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/CustomTabLoginMethodHandler.java rename to facebook-common/src/main/java/com/facebook/login/CustomTabLoginMethodHandler.java diff --git a/facebook/src/main/java/com/facebook/login/DeviceAuthDialog.java b/facebook-common/src/main/java/com/facebook/login/DeviceAuthDialog.java similarity index 99% rename from facebook/src/main/java/com/facebook/login/DeviceAuthDialog.java rename to facebook-common/src/main/java/com/facebook/login/DeviceAuthDialog.java index 9b3b108397..6e5b57d3ec 100644 --- a/facebook/src/main/java/com/facebook/login/DeviceAuthDialog.java +++ b/facebook-common/src/main/java/com/facebook/login/DeviceAuthDialog.java @@ -50,7 +50,7 @@ import com.facebook.GraphRequestAsyncTask; import com.facebook.GraphResponse; import com.facebook.HttpMethod; -import com.facebook.R; +import com.facebook.common.R; import com.facebook.appevents.AppEventsLogger; import com.facebook.devicerequests.internal.DeviceRequestsHelper; import com.facebook.internal.AnalyticsEvents; diff --git a/facebook/src/main/java/com/facebook/login/DeviceAuthMethodHandler.java b/facebook-common/src/main/java/com/facebook/login/DeviceAuthMethodHandler.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/DeviceAuthMethodHandler.java rename to facebook-common/src/main/java/com/facebook/login/DeviceAuthMethodHandler.java diff --git a/facebook/src/main/java/com/facebook/login/FacebookLiteLoginMethodHandler.java b/facebook-common/src/main/java/com/facebook/login/FacebookLiteLoginMethodHandler.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/FacebookLiteLoginMethodHandler.java rename to facebook-common/src/main/java/com/facebook/login/FacebookLiteLoginMethodHandler.java diff --git a/facebook/src/main/java/com/facebook/login/GetTokenClient.java b/facebook-common/src/main/java/com/facebook/login/GetTokenClient.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/GetTokenClient.java rename to facebook-common/src/main/java/com/facebook/login/GetTokenClient.java diff --git a/facebook/src/main/java/com/facebook/login/GetTokenLoginMethodHandler.java b/facebook-common/src/main/java/com/facebook/login/GetTokenLoginMethodHandler.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/GetTokenLoginMethodHandler.java rename to facebook-common/src/main/java/com/facebook/login/GetTokenLoginMethodHandler.java diff --git a/facebook/src/main/java/com/facebook/login/KatanaProxyLoginMethodHandler.java b/facebook-common/src/main/java/com/facebook/login/KatanaProxyLoginMethodHandler.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/KatanaProxyLoginMethodHandler.java rename to facebook-common/src/main/java/com/facebook/login/KatanaProxyLoginMethodHandler.java diff --git a/facebook/src/main/java/com/facebook/login/LoginBehavior.java b/facebook-common/src/main/java/com/facebook/login/LoginBehavior.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/LoginBehavior.java rename to facebook-common/src/main/java/com/facebook/login/LoginBehavior.java diff --git a/facebook/src/main/java/com/facebook/login/LoginClient.java b/facebook-common/src/main/java/com/facebook/login/LoginClient.java similarity index 99% rename from facebook/src/main/java/com/facebook/login/LoginClient.java rename to facebook-common/src/main/java/com/facebook/login/LoginClient.java index 486b26b9ee..81c35069a2 100644 --- a/facebook/src/main/java/com/facebook/login/LoginClient.java +++ b/facebook-common/src/main/java/com/facebook/login/LoginClient.java @@ -32,11 +32,12 @@ import com.facebook.AccessToken; import com.facebook.FacebookException; -import com.facebook.R; +import com.facebook.common.R; import com.facebook.appevents.AppEventsConstants; import com.facebook.internal.CallbackManagerImpl; import com.facebook.internal.Utility; import com.facebook.internal.Validate; +import com.facebook.login.DefaultAudience; import org.json.JSONException; import org.json.JSONObject; diff --git a/facebook/src/main/java/com/facebook/login/LoginFragment.java b/facebook-common/src/main/java/com/facebook/login/LoginFragment.java similarity index 99% rename from facebook/src/main/java/com/facebook/login/LoginFragment.java rename to facebook-common/src/main/java/com/facebook/login/LoginFragment.java index d168c51c13..1222581c93 100644 --- a/facebook/src/main/java/com/facebook/login/LoginFragment.java +++ b/facebook-common/src/main/java/com/facebook/login/LoginFragment.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -31,7 +31,7 @@ import android.view.View; import android.view.ViewGroup; -import com.facebook.R; +import com.facebook.common.R; /** * This Fragment is a necessary part of the overall Facebook login process diff --git a/facebook/src/main/java/com/facebook/login/LoginLogger.java b/facebook-common/src/main/java/com/facebook/login/LoginLogger.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/LoginLogger.java rename to facebook-common/src/main/java/com/facebook/login/LoginLogger.java diff --git a/facebook/src/main/java/com/facebook/login/LoginManager.java b/facebook-common/src/main/java/com/facebook/login/LoginManager.java similarity index 95% rename from facebook/src/main/java/com/facebook/login/LoginManager.java rename to facebook-common/src/main/java/com/facebook/login/LoginManager.java index db00b44ece..0694dc83cf 100644 --- a/facebook/src/main/java/com/facebook/login/LoginManager.java +++ b/facebook-common/src/main/java/com/facebook/login/LoginManager.java @@ -23,6 +23,7 @@ import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.Intent; +import android.content.SharedPreferences; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Bundle; @@ -46,6 +47,7 @@ import com.facebook.internal.Utility; import com.facebook.internal.Validate; import com.facebook.appevents.AppEventsConstants; +import com.facebook.login.DefaultAudience; import java.util.ArrayList; import java.util.Collection; @@ -63,15 +65,20 @@ public class LoginManager { private static final String PUBLISH_PERMISSION_PREFIX = "publish"; private static final String MANAGE_PERMISSION_PREFIX = "manage"; + private static final String EXPRESS_LOGIN_ALLOWED = "express_login_allowed"; + private static final String PREFERENCE_LOGIN_MANAGER = "com.facebook.loginManager"; private static final Set OTHER_PUBLISH_PERMISSIONS = getOtherPublishPermissions(); private static volatile LoginManager instance; private LoginBehavior loginBehavior = LoginBehavior.NATIVE_WITH_FALLBACK; private DefaultAudience defaultAudience = DefaultAudience.FRIENDS; + private final SharedPreferences sharedPreferences; LoginManager() { Validate.sdkInitialized(); + sharedPreferences = FacebookSdk.getApplicationContext() + .getSharedPreferences(PREFERENCE_LOGIN_MANAGER, Context.MODE_PRIVATE); } /** @@ -281,6 +288,7 @@ public LoginManager setDefaultAudience(DefaultAudience defaultAudience) { public void logOut() { AccessToken.setCurrentAccessToken(null); Profile.setCurrentProfile(null); + setExpressLoginStatus(false); } /** @@ -627,6 +635,7 @@ private void finishLogin( } else if (exception != null) { callback.onError(exception); } else if (newToken != null) { + setExpressLoginStatus(true); callback.onSuccess(loginResult); } } @@ -636,18 +645,25 @@ private void retrieveLoginStatusImpl( final Context context, final LoginStatusCallback responseCallback, final long toastDurationMs) { - final String applicationId = FacebookSdk.getApplicationId(); - final String loggerRef = UUID.randomUUID().toString(); - final LoginStatusClient client - = new LoginStatusClient( - context, - applicationId, - loggerRef, - FacebookSdk.getGraphApiVersion(), - toastDurationMs); + final String applicationId = FacebookSdk.getApplicationId(); + final String loggerRef = UUID.randomUUID().toString(); final LoginLogger logger = new LoginLogger(context, applicationId); + if (!isExpressLoginAllowed()) { + logger.logLoginStatusFailure(loggerRef); + responseCallback.onFailure(); + return; + } + + final LoginStatusClient client + = new LoginStatusClient( + context, + applicationId, + loggerRef, + FacebookSdk.getGraphApiVersion(), + toastDurationMs); + final LoginStatusClient.CompletedListener callback = new LoginStatusClient.CompletedListener() { @Override @@ -724,6 +740,16 @@ public void completed(Bundle result) { }; } + private void setExpressLoginStatus(boolean isExpressLoginAllowed) { + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.putBoolean(EXPRESS_LOGIN_ALLOWED, isExpressLoginAllowed); + editor.apply(); + } + + private boolean isExpressLoginAllowed() { + return sharedPreferences.getBoolean(EXPRESS_LOGIN_ALLOWED, true); + } + @Nullable private static Profile getProfileFromBundle(Bundle result) { final String name = result.getString(NativeProtocol.EXTRA_ARGS_PROFILE_NAME); diff --git a/facebook/src/main/java/com/facebook/login/LoginMethodHandler.java b/facebook-common/src/main/java/com/facebook/login/LoginMethodHandler.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/LoginMethodHandler.java rename to facebook-common/src/main/java/com/facebook/login/LoginMethodHandler.java diff --git a/facebook/src/main/java/com/facebook/login/LoginResult.java b/facebook-common/src/main/java/com/facebook/login/LoginResult.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/LoginResult.java rename to facebook-common/src/main/java/com/facebook/login/LoginResult.java diff --git a/facebook/src/main/java/com/facebook/login/LoginStatusClient.java b/facebook-common/src/main/java/com/facebook/login/LoginStatusClient.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/LoginStatusClient.java rename to facebook-common/src/main/java/com/facebook/login/LoginStatusClient.java diff --git a/facebook/src/main/java/com/facebook/login/NativeAppLoginMethodHandler.java b/facebook-common/src/main/java/com/facebook/login/NativeAppLoginMethodHandler.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/NativeAppLoginMethodHandler.java rename to facebook-common/src/main/java/com/facebook/login/NativeAppLoginMethodHandler.java diff --git a/facebook/src/main/java/com/facebook/login/StartActivityDelegate.java b/facebook-common/src/main/java/com/facebook/login/StartActivityDelegate.java similarity index 100% rename from facebook/src/main/java/com/facebook/login/StartActivityDelegate.java rename to facebook-common/src/main/java/com/facebook/login/StartActivityDelegate.java diff --git a/facebook/src/main/java/com/facebook/login/WebLoginMethodHandler.java b/facebook-common/src/main/java/com/facebook/login/WebLoginMethodHandler.java similarity index 99% rename from facebook/src/main/java/com/facebook/login/WebLoginMethodHandler.java rename to facebook-common/src/main/java/com/facebook/login/WebLoginMethodHandler.java index 1aa098c765..00567aa156 100644 --- a/facebook/src/main/java/com/facebook/login/WebLoginMethodHandler.java +++ b/facebook-common/src/main/java/com/facebook/login/WebLoginMethodHandler.java @@ -37,6 +37,7 @@ import com.facebook.appevents.AppEventsConstants; import com.facebook.internal.ServerProtocol; import com.facebook.internal.Utility; +import com.facebook.login.DefaultAudience; import java.util.Locale; diff --git a/facebook/src/main/java/com/facebook/login/WebViewLoginMethodHandler.java b/facebook-common/src/main/java/com/facebook/login/WebViewLoginMethodHandler.java similarity index 96% rename from facebook/src/main/java/com/facebook/login/WebViewLoginMethodHandler.java rename to facebook-common/src/main/java/com/facebook/login/WebViewLoginMethodHandler.java index e83ead459b..869f89ca3b 100644 --- a/facebook/src/main/java/com/facebook/login/WebViewLoginMethodHandler.java +++ b/facebook-common/src/main/java/com/facebook/login/WebViewLoginMethodHandler.java @@ -138,7 +138,12 @@ public WebDialog build() { ServerProtocol.DIALOG_PARAM_AUTH_TYPE, ServerProtocol.DIALOG_REREQUEST_AUTH_TYPE); - return new WebDialog(getContext(), OAUTH_DIALOG, parameters, getTheme(), getListener()); + return WebDialog.newInstance( + getContext(), + OAUTH_DIALOG, + parameters, + getTheme(), + getListener()); } } diff --git a/facebook/src/main/java/com/facebook/share/ShareBuilder.java b/facebook-common/src/main/java/com/facebook/share/ShareBuilder.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/ShareBuilder.java rename to facebook-common/src/main/java/com/facebook/share/ShareBuilder.java diff --git a/facebook/src/main/java/com/facebook/share/Sharer.java b/facebook-common/src/main/java/com/facebook/share/Sharer.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/Sharer.java rename to facebook-common/src/main/java/com/facebook/share/Sharer.java diff --git a/facebook/src/main/java/com/facebook/internal/PermissionType.java b/facebook-common/src/main/java/com/facebook/share/internal/CameraEffectFeature.java similarity index 54% rename from facebook/src/main/java/com/facebook/internal/PermissionType.java rename to facebook-common/src/main/java/com/facebook/share/internal/CameraEffectFeature.java index 0bf617f6cc..a19b8a3b74 100644 --- a/facebook/src/main/java/com/facebook/internal/PermissionType.java +++ b/facebook-common/src/main/java/com/facebook/share/internal/CameraEffectFeature.java @@ -18,14 +18,38 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -package com.facebook.internal; +package com.facebook.share.internal; + +import com.facebook.internal.DialogFeature; +import com.facebook.internal.NativeProtocol; /** - * com.facebook.internal is solely for the use of other packages within the Facebook SDK for - * Android. Use of any of the classes in this package is unsupported, and they may be modified or - * removed without warning at any time. + * com.facebook.share.internal is solely for the use of other packages within the + * Facebook SDK for Android. Use of any of the classes in this package is + * unsupported, and they may be modified or removed without warning at any time. */ -public enum PermissionType { - READ, - PUBLISH +public enum CameraEffectFeature implements DialogFeature { + SHARE_CAMERA_EFFECT(NativeProtocol.PROTOCOL_VERSION_20170417); + + private int minVersion; + + CameraEffectFeature(int minVersion) { + this.minVersion = minVersion; + } + + /** + * This method is for internal use only. + */ + @Override + public String getAction() { + return NativeProtocol.ACTION_CAMERA_EFFECT; + } + + /** + * This method is for internal use only. + */ + @Override + public int getMinVersion() { + return minVersion; + } } diff --git a/facebook-common/src/main/java/com/facebook/share/internal/CameraEffectJSONUtility.java b/facebook-common/src/main/java/com/facebook/share/internal/CameraEffectJSONUtility.java new file mode 100644 index 0000000000..26d32e753a --- /dev/null +++ b/facebook-common/src/main/java/com/facebook/share/internal/CameraEffectJSONUtility.java @@ -0,0 +1,147 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +package com.facebook.share.internal; + +import com.facebook.share.model.CameraEffectArguments; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +/** + * com.facebook.share.internal is solely for the use of other packages within the + * Facebook SDK for Android. Use of any of the classes in this package is + * unsupported, and they may be modified or removed without warning at any time. + * + * Utility methods for JSON representation of Open Graph models. + */ +public class CameraEffectJSONUtility { + private static final Map, CameraEffectJSONUtility.Setter> SETTERS = new HashMap<>(); + + static { + SETTERS.put(String.class, new CameraEffectJSONUtility.Setter() { + @Override + public void setOnArgumentsBuilder( + CameraEffectArguments.Builder builder, + String key, + Object value) + throws JSONException { + builder.putArgument(key, (String) value); + } + + @Override + public void setOnJSON(JSONObject json, String key, Object value) throws JSONException { + json.put(key, value); + } + }); + SETTERS.put(String[].class, new CameraEffectJSONUtility.Setter() { + @Override + public void setOnArgumentsBuilder( + CameraEffectArguments.Builder builder, + String key, + Object value) + throws JSONException { + throw new IllegalArgumentException("Unexpected type from JSON"); + } + + @Override + public void setOnJSON(JSONObject json, String key, Object value) throws JSONException { + JSONArray jsonArray = new JSONArray(); + for (String stringValue : (String[]) value) { + jsonArray.put(stringValue); + } + json.put(key, jsonArray); + } + }); + + SETTERS.put(JSONArray.class, new CameraEffectJSONUtility.Setter() { + @Override + public void setOnArgumentsBuilder( + CameraEffectArguments.Builder builder, + String key, + Object value) + throws JSONException { + // Only strings are supported for now + JSONArray jsonArray = (JSONArray) value; + String[] argsArray = new String[jsonArray.length()]; + for (int i = 0; i < jsonArray.length(); i++) { + Object current = jsonArray.get(i); + if (current instanceof String) { + argsArray[i] = (String) current; + } else { + throw new IllegalArgumentException( + "Unexpected type in an array: " + current.getClass()); + } + } + builder.putArgument(key, argsArray); + } + + @Override + public void setOnJSON(JSONObject json, String key, Object value) throws JSONException { + throw new IllegalArgumentException("JSONArray's are not supported in bundles."); + } + }); + } + + public interface Setter { + void setOnArgumentsBuilder(CameraEffectArguments.Builder builder, String key, Object value) + throws JSONException; + void setOnJSON(JSONObject json, String key, Object value) + throws JSONException; + } + + public static JSONObject convertToJSON(CameraEffectArguments arguments) + throws JSONException { + if (arguments == null) { + return null; + } + + JSONObject json = new JSONObject(); + + for (String key : arguments.keySet()) { + Object value = arguments.get(key); + if (value == null) { + // Null is not supported. + continue; + } + + CameraEffectJSONUtility.Setter setter = SETTERS.get(value.getClass()); + if (setter == null) { + throw new IllegalArgumentException("Unsupported type: " + value.getClass()); + } + setter.setOnJSON(json, key, value); + } + + return json; + } + + public static CameraEffectArguments convertToCameraEffectArguments(JSONObject jsonObject) + throws JSONException { + if (jsonObject == null) { + return null; + } + + CameraEffectArguments.Builder builder = new CameraEffectArguments.Builder(); + Iterator jsonIterator = jsonObject.keys(); + while (jsonIterator.hasNext()) { + String key = jsonIterator.next(); + Object value = jsonObject.get(key); + if (value == null || value == JSONObject.NULL) { + // Null is not supported. + continue; + } + + CameraEffectJSONUtility.Setter setter = SETTERS.get(value.getClass()); + if (setter == null) { + throw new IllegalArgumentException("Unsupported type: " + value.getClass()); + } + setter.setOnArgumentsBuilder(builder, key, value); + } + + return builder.build(); + } +} diff --git a/facebook/src/main/java/com/facebook/share/internal/DeviceShareDialogFragment.java b/facebook-common/src/main/java/com/facebook/share/internal/DeviceShareDialogFragment.java similarity index 99% rename from facebook/src/main/java/com/facebook/share/internal/DeviceShareDialogFragment.java rename to facebook-common/src/main/java/com/facebook/share/internal/DeviceShareDialogFragment.java index 9a974f2fc7..195de42b48 100644 --- a/facebook/src/main/java/com/facebook/share/internal/DeviceShareDialogFragment.java +++ b/facebook-common/src/main/java/com/facebook/share/internal/DeviceShareDialogFragment.java @@ -42,7 +42,7 @@ import com.facebook.GraphRequest; import com.facebook.GraphResponse; import com.facebook.HttpMethod; -import com.facebook.R; +import com.facebook.common.R; import com.facebook.devicerequests.internal.DeviceRequestsHelper; import com.facebook.internal.Validate; import com.facebook.share.model.ShareContent; diff --git a/facebook/src/main/java/com/facebook/share/internal/LegacyNativeDialogParameters.java b/facebook-common/src/main/java/com/facebook/share/internal/LegacyNativeDialogParameters.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/LegacyNativeDialogParameters.java rename to facebook-common/src/main/java/com/facebook/share/internal/LegacyNativeDialogParameters.java diff --git a/facebook/src/main/java/com/facebook/share/internal/LikeActionController.java b/facebook-common/src/main/java/com/facebook/share/internal/LikeActionController.java similarity index 99% rename from facebook/src/main/java/com/facebook/share/internal/LikeActionController.java rename to facebook-common/src/main/java/com/facebook/share/internal/LikeActionController.java index 3f0c8fd27f..b0ba9f9008 100644 --- a/facebook/src/main/java/com/facebook/share/internal/LikeActionController.java +++ b/facebook-common/src/main/java/com/facebook/share/internal/LikeActionController.java @@ -29,6 +29,16 @@ import android.util.Log; import com.facebook.*; +import com.facebook.AccessToken; +import com.facebook.FacebookException; +import com.facebook.FacebookOperationCanceledException; +import com.facebook.FacebookRequestError; +import com.facebook.FacebookSdk; +import com.facebook.GraphRequest; +import com.facebook.GraphRequestBatch; +import com.facebook.GraphResponse; +import com.facebook.HttpMethod; +import com.facebook.LoggingBehavior; import com.facebook.appevents.AppEventsLogger; import com.facebook.internal.AnalyticsEvents; import com.facebook.internal.AppCall; diff --git a/facebook/src/main/java/com/facebook/share/internal/LikeBoxCountView.java b/facebook-common/src/main/java/com/facebook/share/internal/LikeBoxCountView.java similarity index 99% rename from facebook/src/main/java/com/facebook/share/internal/LikeBoxCountView.java rename to facebook-common/src/main/java/com/facebook/share/internal/LikeBoxCountView.java index 23cf68ffe0..075fb6bf76 100644 --- a/facebook/src/main/java/com/facebook/share/internal/LikeBoxCountView.java +++ b/facebook-common/src/main/java/com/facebook/share/internal/LikeBoxCountView.java @@ -27,7 +27,7 @@ import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.TextView; -import com.facebook.R; +import com.facebook.common.R; /** * com.facebook.share.internal is solely for the use of other packages within the Facebook SDK for diff --git a/facebook/src/main/java/com/facebook/share/internal/LikeButton.java b/facebook-common/src/main/java/com/facebook/share/internal/LikeButton.java similarity index 99% rename from facebook/src/main/java/com/facebook/share/internal/LikeButton.java rename to facebook-common/src/main/java/com/facebook/share/internal/LikeButton.java index 3a4a0c5ca2..3be7415ce0 100644 --- a/facebook/src/main/java/com/facebook/share/internal/LikeButton.java +++ b/facebook-common/src/main/java/com/facebook/share/internal/LikeButton.java @@ -23,7 +23,7 @@ import android.content.Context; import android.util.AttributeSet; import com.facebook.FacebookButtonBase; -import com.facebook.R; +import com.facebook.common.R; import com.facebook.internal.AnalyticsEvents; /** diff --git a/facebook/src/main/java/com/facebook/share/internal/LikeContent.java b/facebook-common/src/main/java/com/facebook/share/internal/LikeContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/LikeContent.java rename to facebook-common/src/main/java/com/facebook/share/internal/LikeContent.java diff --git a/facebook/src/main/java/com/facebook/share/internal/LikeDialog.java b/facebook-common/src/main/java/com/facebook/share/internal/LikeDialog.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/LikeDialog.java rename to facebook-common/src/main/java/com/facebook/share/internal/LikeDialog.java diff --git a/facebook/src/main/java/com/facebook/share/internal/LikeDialogFeature.java b/facebook-common/src/main/java/com/facebook/share/internal/LikeDialogFeature.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/LikeDialogFeature.java rename to facebook-common/src/main/java/com/facebook/share/internal/LikeDialogFeature.java diff --git a/facebook/src/main/java/com/facebook/share/internal/LikeStatusClient.java b/facebook-common/src/main/java/com/facebook/share/internal/LikeStatusClient.java similarity index 97% rename from facebook/src/main/java/com/facebook/share/internal/LikeStatusClient.java rename to facebook-common/src/main/java/com/facebook/share/internal/LikeStatusClient.java index f890db8a5e..7ac26eb2b9 100644 --- a/facebook/src/main/java/com/facebook/share/internal/LikeStatusClient.java +++ b/facebook-common/src/main/java/com/facebook/share/internal/LikeStatusClient.java @@ -26,7 +26,6 @@ import com.facebook.internal.NativeProtocol; import com.facebook.internal.PlatformServiceClient; -import com.facebook.share.internal.ShareConstants; /** * com.facebook.share.internal is solely for the use of other packages within the Facebook SDK for diff --git a/facebook/src/main/java/com/facebook/share/internal/NativeDialogParameters.java b/facebook-common/src/main/java/com/facebook/share/internal/NativeDialogParameters.java similarity index 82% rename from facebook/src/main/java/com/facebook/share/internal/NativeDialogParameters.java rename to facebook-common/src/main/java/com/facebook/share/internal/NativeDialogParameters.java index 3d56d79c82..01514abadf 100644 --- a/facebook/src/main/java/com/facebook/share/internal/NativeDialogParameters.java +++ b/facebook-common/src/main/java/com/facebook/share/internal/NativeDialogParameters.java @@ -25,6 +25,7 @@ import com.facebook.FacebookException; import com.facebook.internal.Utility; import com.facebook.internal.Validate; +import com.facebook.share.model.ShareCameraEffectContent; import com.facebook.share.model.ShareContent; import com.facebook.share.model.ShareHashtag; import com.facebook.share.model.ShareLinkContent; @@ -90,11 +91,54 @@ public static Bundle create( callId); nativeParams = create(mediaContent, mediaInfos, shouldFailOnDataError); + } else if (shareContent instanceof ShareCameraEffectContent) { + final ShareCameraEffectContent cameraEffectContent = + (ShareCameraEffectContent) shareContent; + + // Put Bitmaps behind content uris. + Bundle attachmentUrlsBundle = ShareInternalUtility.getTextureUrlBundle( + cameraEffectContent, + callId); + + nativeParams = create(cameraEffectContent, attachmentUrlsBundle, shouldFailOnDataError); } return nativeParams; } + private static Bundle create( + ShareCameraEffectContent cameraEffectContent, + Bundle attachmentUrlsBundle, + boolean dataErrorsFatal) { + Bundle params = createBaseParameters(cameraEffectContent, dataErrorsFatal); + + Utility.putNonEmptyString( + params, + ShareConstants.EFFECT_ID, + cameraEffectContent.getEffectId()); + + if (attachmentUrlsBundle != null) { + params.putBundle(ShareConstants.EFFECT_TEXTURES, attachmentUrlsBundle); + } + + try { + JSONObject argsJSON = + CameraEffectJSONUtility.convertToJSON(cameraEffectContent.getArguments()); + if (argsJSON != null) { + Utility.putNonEmptyString( + params, + ShareConstants.EFFECT_ARGS, + argsJSON.toString()); + } + } catch (JSONException e) { + throw new FacebookException( + "Unable to create a JSON Object from the provided CameraEffectArguments: " + + e.getMessage()); + } + + return params; + } + private static Bundle create(ShareLinkContent linkContent, boolean dataErrorsFatal) { Bundle params = createBaseParameters(linkContent, dataErrorsFatal); diff --git a/facebook/src/main/java/com/facebook/share/internal/OpenGraphActionDialogFeature.java b/facebook-common/src/main/java/com/facebook/share/internal/OpenGraphActionDialogFeature.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/OpenGraphActionDialogFeature.java rename to facebook-common/src/main/java/com/facebook/share/internal/OpenGraphActionDialogFeature.java diff --git a/facebook/src/main/java/com/facebook/share/internal/OpenGraphJSONUtility.java b/facebook-common/src/main/java/com/facebook/share/internal/OpenGraphJSONUtility.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/OpenGraphJSONUtility.java rename to facebook-common/src/main/java/com/facebook/share/internal/OpenGraphJSONUtility.java diff --git a/facebook/src/main/java/com/facebook/share/internal/ResultProcessor.java b/facebook-common/src/main/java/com/facebook/share/internal/ResultProcessor.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/ResultProcessor.java rename to facebook-common/src/main/java/com/facebook/share/internal/ResultProcessor.java diff --git a/facebook/src/main/java/com/facebook/share/internal/ShareConstants.java b/facebook-common/src/main/java/com/facebook/share/internal/ShareConstants.java similarity index 97% rename from facebook/src/main/java/com/facebook/share/internal/ShareConstants.java rename to facebook-common/src/main/java/com/facebook/share/internal/ShareConstants.java index 550545b967..20f4119b5a 100644 --- a/facebook/src/main/java/com/facebook/share/internal/ShareConstants.java +++ b/facebook-common/src/main/java/com/facebook/share/internal/ShareConstants.java @@ -93,6 +93,11 @@ public class ShareConstants { public static final String MEDIA_TYPE = "type"; public static final String MEDIA_URI = "uri"; + // Camera-share args + public static final String EFFECT_ID = "effect_id"; + public static final String EFFECT_ARGS = "effect_arguments"; + public static final String EFFECT_TEXTURES = "effect_textures"; + // Extras supported for ACTION_OGACTIONPUBLISH_DIALOG: public static final String LEGACY_ACTION = "com.facebook.platform.extra.ACTION"; public static final String LEGACY_ACTION_TYPE = "com.facebook.platform.extra.ACTION_TYPE"; diff --git a/facebook/src/main/java/com/facebook/share/internal/ShareContentValidation.java b/facebook-common/src/main/java/com/facebook/share/internal/ShareContentValidation.java similarity index 95% rename from facebook/src/main/java/com/facebook/share/internal/ShareContentValidation.java rename to facebook-common/src/main/java/com/facebook/share/internal/ShareContentValidation.java index 728534c7e9..5a04fe5e5d 100644 --- a/facebook/src/main/java/com/facebook/share/internal/ShareContentValidation.java +++ b/facebook-common/src/main/java/com/facebook/share/internal/ShareContentValidation.java @@ -27,6 +27,7 @@ import com.facebook.FacebookSdk; import com.facebook.internal.Utility; import com.facebook.internal.Validate; +import com.facebook.share.model.ShareCameraEffectContent; import com.facebook.share.model.ShareContent; import com.facebook.share.model.ShareLinkContent; import com.facebook.share.model.ShareMedia; @@ -108,6 +109,8 @@ private static void validate(ShareContent content, Validator validator) validator.validate((ShareOpenGraphContent) content); } else if (content instanceof ShareMediaContent) { validator.validate((ShareMediaContent) content); + } else if (content instanceof ShareCameraEffectContent) { + validator.validate((ShareCameraEffectContent) content); } } @@ -232,6 +235,14 @@ public static void validateMedium(ShareMedia medium, Validator validator) { } } + private static void validateCameraEffectContent( + ShareCameraEffectContent cameraEffectContent, Validator validator) { + String effectId = cameraEffectContent.getEffectId(); + if (Utility.isNullOrEmpty(effectId)) { + throw new FacebookException("Must specify a non-empty effectId"); + } + } + private static void validateOpenGraphContent( ShareOpenGraphContent openGraphContent, Validator validator) { validator.validate(openGraphContent.getAction()); @@ -394,6 +405,10 @@ public void validate(final ShareMediaContent mediaContent) { validateMediaContent(mediaContent, this); } + public void validate(final ShareCameraEffectContent cameraEffectContent) { + validateCameraEffectContent(cameraEffectContent, this); + } + public void validate(final ShareOpenGraphContent openGraphContent) { isOpenGraphContent = true; validateOpenGraphContent(openGraphContent, this); diff --git a/facebook/src/main/java/com/facebook/share/internal/ShareDialogFeature.java b/facebook-common/src/main/java/com/facebook/share/internal/ShareDialogFeature.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/ShareDialogFeature.java rename to facebook-common/src/main/java/com/facebook/share/internal/ShareDialogFeature.java diff --git a/facebook/src/main/java/com/facebook/share/internal/ShareFeedContent.java b/facebook-common/src/main/java/com/facebook/share/internal/ShareFeedContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/ShareFeedContent.java rename to facebook-common/src/main/java/com/facebook/share/internal/ShareFeedContent.java diff --git a/facebook/src/main/java/com/facebook/share/internal/ShareInternalUtility.java b/facebook-common/src/main/java/com/facebook/share/internal/ShareInternalUtility.java similarity index 95% rename from facebook/src/main/java/com/facebook/share/internal/ShareInternalUtility.java rename to facebook-common/src/main/java/com/facebook/share/internal/ShareInternalUtility.java index 8203afd52a..edf96c202d 100644 --- a/facebook/src/main/java/com/facebook/share/internal/ShareInternalUtility.java +++ b/facebook-common/src/main/java/com/facebook/share/internal/ShareInternalUtility.java @@ -49,6 +49,8 @@ import com.facebook.internal.NativeProtocol; import com.facebook.internal.Utility; import com.facebook.share.Sharer; +import com.facebook.share.model.CameraEffectTextures; +import com.facebook.share.model.ShareCameraEffectContent; import com.facebook.share.model.ShareMedia; import com.facebook.share.model.ShareMediaContent; import com.facebook.share.model.ShareOpenGraphAction; @@ -345,6 +347,30 @@ public Bundle apply(ShareMedia item) { return mediaInfos; } + public static Bundle getTextureUrlBundle( + final ShareCameraEffectContent cameraEffectContent, + final UUID appCallId) { + CameraEffectTextures textures; + if (cameraEffectContent == null || (textures = cameraEffectContent.getTextures()) == null) { + return null; + } + + Bundle attachmentUrlsBundle = new Bundle(); + List attachments = new ArrayList<>(); + for (String key : textures.keySet()) { + NativeAppCallAttachmentStore.Attachment attachment = getAttachment( + appCallId, + textures.getTextureUri(key), + textures.getTextureBitmap(key)); + attachments.add(attachment); + attachmentUrlsBundle.putString(key, attachment.getAttachmentUrl()); + } + + NativeAppCallAttachmentStore.addAttachments(attachments); + + return attachmentUrlsBundle; + } + public static JSONObject toJSONObjectForCall( final UUID callId, final ShareOpenGraphContent content) @@ -530,6 +556,13 @@ private static NativeAppCallAttachmentStore.Attachment getAttachment( uri = video.getLocalUrl(); } + return getAttachment(callId, uri, bitmap); + } + + private static NativeAppCallAttachmentStore.Attachment getAttachment( + UUID callId, + Uri uri, + Bitmap bitmap) { NativeAppCallAttachmentStore.Attachment attachment = null; if (bitmap != null) { attachment = NativeAppCallAttachmentStore.createAttachment( diff --git a/facebook/src/main/java/com/facebook/share/internal/WebDialogParameters.java b/facebook-common/src/main/java/com/facebook/share/internal/WebDialogParameters.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/internal/WebDialogParameters.java rename to facebook-common/src/main/java/com/facebook/share/internal/WebDialogParameters.java diff --git a/facebook/src/main/java/com/facebook/share/model/AppGroupCreationContent.java b/facebook-common/src/main/java/com/facebook/share/model/AppGroupCreationContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/AppGroupCreationContent.java rename to facebook-common/src/main/java/com/facebook/share/model/AppGroupCreationContent.java diff --git a/facebook-common/src/main/java/com/facebook/share/model/CameraEffectArguments.java b/facebook-common/src/main/java/com/facebook/share/model/CameraEffectArguments.java new file mode 100644 index 0000000000..d0af04d941 --- /dev/null +++ b/facebook-common/src/main/java/com/facebook/share/model/CameraEffectArguments.java @@ -0,0 +1,187 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, + * copy, modify, and distribute this software in source code or binary form for use + * in connection with the web services and APIs provided by Facebook. + * + * As with any software that integrates with the Facebook platform, your use of + * this software is subject to the Facebook Developer Principles and Policies + * [http://developers.facebook.com/policy/]. This copyright notice shall be + * included in all copies or substantial portions of the software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.facebook.share.model; + +import android.os.Bundle; +import android.os.Parcel; +import android.support.annotation.Nullable; + +import java.util.Set; + +/** + * NOTE: This API is in a closed beta and not available for general consumption. To apply for access + * to the beta, please visit https://developers.facebook.com/products/camera-effects/ar-studio/. + * Usage of this API without admission to the beta is unsupported and WILL result in errors for + * users of your application. + * + * This class represents a set of Arguments that are used to configure an Effect in the Camera. + */ +public class CameraEffectArguments implements ShareModel { + + private final Bundle params; + + private CameraEffectArguments(final Builder builder) { + params = builder.params; + } + + CameraEffectArguments(final Parcel in) { + params = in.readBundle(getClass().getClassLoader()); + } + + /** + * Returns the value of a String argument associated with the passed in key. If the key does + * not exist, or if it points to an object that is not a String, null will be returned. + * + * @param key Key for the value desired. + * @return The String associated with the passed in key, or null if the key does not exist or if + * the value is not a String. + */ + @Nullable + public String getString(final String key) { + return params.getString(key); + } + + @Nullable + /** + * Returns the value of a String[] argument associated with the passed in key. If the key does + * not exist, or if it points to an object that is not a String[], null will be returned. + * + * @param key Key for the value desired. + * @return The String[] associated with the passed in key, or null if the key does not exist or + * if the value is not a String[]. + */ + public String[] getStringArray(final String key) { + return params.getStringArray(key); + } + + @Nullable + /** + * Returns the value of the argument associated with the passed in key. If the key does not + * exist, null will be returned + * + * @param key Key for the value desired. + * @return The value associated with the passed in key, or null if the key does not exist. + */ + public Object get(final String key) { + return this.params.get(key); + } + + /** + * The set of keys that have been set in this instance of CameraEffectArguments + * @return The set of keys that have been set in this instance of CameraEffectArguments + */ + public Set keySet() { + return this.params.keySet(); + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(final Parcel out, final int flags) { + out.writeBundle(params); + } + + public static final Creator CREATOR = + new Creator() { + public CameraEffectArguments createFromParcel(final Parcel in) { + return new CameraEffectArguments(in); + } + + public CameraEffectArguments[] newArray(final int size) { + return new CameraEffectArguments[size]; + } + }; + + /** + * NOTE: This API is in a closed beta and not available for general consumption. To apply + * for access to the beta, please visit: + * https://developers.facebook.com/products/camera-effects/ar-studio/. + * Usage of this API without admission to the beta is unsupported and WILL result in errors + * for users of your application. + * + * Builder for the {@link com.facebook.share.model.CameraEffectArguments} class. + */ + public static class Builder + implements ShareModelBuilder { + + private Bundle params = new Bundle(); + + /** + * Sets the passed in value for the passed in key. This will override any previous calls + * with the same key. + * + * @param key Key for the argument + * @param value Value of the argument + * @return This Builder instance + */ + public Builder putArgument(final String key, final String value) { + params.putString(key, value); + return this; + } + + /** + * Sets the passed in value for the passed in key. This will override any previous calls + * with the same key. + * + * @param key Key for the argument + * @param arrayValue Value of the argument + * @return This Builder instance + */ + public Builder putArgument(final String key, final String[] arrayValue) { + params.putStringArray(key, arrayValue); + return this; + } + + @Override + public Builder readFrom(final CameraEffectArguments model) { + if (model != null) { + this.params.putAll(model.params); + } + return this; + } + + public Builder readFrom(final Parcel parcel) { + return this.readFrom( + (CameraEffectArguments) parcel.readParcelable( + CameraEffectArguments.class.getClassLoader())); + } + + /** + * NOTE: This API is in a closed beta and not available for general consumption. To apply + * for access to the beta, please visit: + * https://developers.facebook.com/products/camera-effects/ar-studio/. + * Usage of this API without admission to the beta is unsupported and WILL result in errors + * for users of your application. + * + * Creates a new instance of CameraEffectArguments with the arguments that have been set + * in this Builder instance. + * + * @return A new instance of CameraEffectArguments. + */ + @Override + public CameraEffectArguments build() { + return new CameraEffectArguments(this); + } + } +} diff --git a/facebook-common/src/main/java/com/facebook/share/model/CameraEffectTextures.java b/facebook-common/src/main/java/com/facebook/share/model/CameraEffectTextures.java new file mode 100644 index 0000000000..753689684e --- /dev/null +++ b/facebook-common/src/main/java/com/facebook/share/model/CameraEffectTextures.java @@ -0,0 +1,158 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, + * copy, modify, and distribute this software in source code or binary form for use + * in connection with the web services and APIs provided by Facebook. + * + * As with any software that integrates with the Facebook platform, your use of + * this software is subject to the Facebook Developer Principles and Policies + * [http://developers.facebook.com/policy/]. This copyright notice shall be + * included in all copies or substantial portions of the software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.facebook.share.model; + +import android.graphics.Bitmap; +import android.net.Uri; +import android.os.Bundle; +import android.os.Parcel; +import android.os.Parcelable; +import android.support.annotation.Nullable; + +import com.facebook.internal.Utility; + +import java.util.Set; + +/** + * NOTE: This API is in a closed beta and not available for general consumption. To apply + * for access to the beta, please visit: + * https://developers.facebook.com/products/camera-effects/ar-studio/. + * Usage of this API without admission to the beta is unsupported and WILL result in errors + * for users of your application. + * + * This class represents the textures that are used by an Effect in the Camera. + */ +public class CameraEffectTextures implements ShareModel { + + private final Bundle textures; + + private CameraEffectTextures(final Builder builder) { + textures = builder.textures; + } + + CameraEffectTextures(final Parcel in) { + textures = in.readBundle(getClass().getClassLoader()); + } + + @Nullable + public Bitmap getTextureBitmap(final String key) { + Object value = this.textures.get(key); + if (value instanceof Bitmap) { + return (Bitmap) value; + } + return null; + } + + @Nullable + public Uri getTextureUri(final String key) { + Object value = this.textures.get(key); + if (value instanceof Uri) { + return (Uri) value; + } + return null; + } + + @Nullable + public Object get(final String key) { + return this.textures.get(key); + } + + public Set keySet() { + return this.textures.keySet(); + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(final Parcel out, final int flags) { + out.writeBundle(textures); + } + + public static final Creator CREATOR = + new Creator() { + public CameraEffectTextures createFromParcel(final Parcel in) { + return new CameraEffectTextures(in); + } + + public CameraEffectTextures[] newArray(final int size) { + return new CameraEffectTextures[size]; + } + }; + + /** + * NOTE: This API is in a closed beta and not available for general consumption. To apply + * for access to the beta, please visit: + * https://developers.facebook.com/products/camera-effects/ar-studio/. + * Usage of this API without admission to the beta is unsupported and WILL result in errors + * for users of your application. + * + * Builder for the {@link com.facebook.share.model.CameraEffectTextures} class. + */ + public static class Builder + implements ShareModelBuilder { + + private Bundle textures = new Bundle(); + + public Builder putTexture(final String key, Bitmap texture) { + return putParcelableTexture(key, texture); + } + + public Builder putTexture(final String key, Uri textureUrl) { + return putParcelableTexture(key, textureUrl); + } + + private Builder putParcelableTexture(final String key, final Parcelable parcelableTexture) { + if (!Utility.isNullOrEmpty(key) && parcelableTexture != null) { + textures.putParcelable(key, parcelableTexture); + } + return this; + } + + @Override + public Builder readFrom(final CameraEffectTextures model) { + if (model != null) { + this.textures.putAll(model.textures); + } + return this; + } + + public Builder readFrom(final Parcel parcel) { + return this.readFrom( + (CameraEffectTextures) parcel.readParcelable( + CameraEffectTextures.class.getClassLoader())); + } + + /** + * NOTE: This API is in a closed beta and not available for general consumption. To apply + * for access to the beta, please visit: + * https://developers.facebook.com/products/camera-effects/ar-studio/. + * Usage of this API without admission to the beta is unsupported and WILL result in errors + * for users of your application. + */ + @Override + public CameraEffectTextures build() { + return new CameraEffectTextures(this); + } + } +} diff --git a/facebook/src/main/java/com/facebook/share/model/GameRequestContent.java b/facebook-common/src/main/java/com/facebook/share/model/GameRequestContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/GameRequestContent.java rename to facebook-common/src/main/java/com/facebook/share/model/GameRequestContent.java diff --git a/facebook-common/src/main/java/com/facebook/share/model/ShareCameraEffectContent.java b/facebook-common/src/main/java/com/facebook/share/model/ShareCameraEffectContent.java new file mode 100644 index 0000000000..16ea83dc38 --- /dev/null +++ b/facebook-common/src/main/java/com/facebook/share/model/ShareCameraEffectContent.java @@ -0,0 +1,191 @@ +/** + * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. + * + * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, + * copy, modify, and distribute this software in source code or binary form for use + * in connection with the web services and APIs provided by Facebook. + * + * As with any software that integrates with the Facebook platform, your use of + * this software is subject to the Facebook Developer Principles and Policies + * [http://developers.facebook.com/policy/]. This copyright notice shall be + * included in all copies or substantial portions of the software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package com.facebook.share.model; + +import android.os.Parcel; + +/** + * NOTE: This API is in a closed beta and not available for general consumption. To apply + * for access to the beta, please visit: + * https://developers.facebook.com/products/camera-effects/ar-studio/. + * Usage of this API without admission to the beta is unsupported and WILL result in errors + * for users of your application. + * + * Describes the Camera Effect to be shared. + * + * Use {@link ShareCameraEffectContent.Builder} to build instances. + * + * See documentation for + * best practices. + */ +public class ShareCameraEffectContent + extends ShareContent { + + private String effectId; + private CameraEffectArguments arguments; + private CameraEffectTextures textures; + + private ShareCameraEffectContent(final Builder builder) { + super(builder); + + this.effectId = builder.effectId; + this.arguments = builder.arguments; + this.textures = builder.textures; + } + + ShareCameraEffectContent(final Parcel in) { + super(in); + + this.effectId = in.readString(); + this.arguments = new CameraEffectArguments.Builder().readFrom(in).build(); + this.textures = new CameraEffectTextures.Builder().readFrom(in).build(); + } + + @Override + public void writeToParcel(final Parcel out, final int flags) { + super.writeToParcel(out, flags); + + out.writeString(effectId); + out.writeParcelable(arguments, 0); + out.writeParcelable(textures, 0); + } + + /** + * Returns the Effect Id represented in this content instance, as set in the Builder. + * + * @return The Effect Id + */ + public String getEffectId() { + return this.effectId; + } + + /** + * Returns the Arguments for the Effect represented in this content instance, as set in the + * Builder. + * + * @return Effect Arguments + */ + public CameraEffectArguments getArguments() { + return this.arguments; + } + + /** + * Returns the Textures for the Effect represented in this content instance, as set in the + * Builder. + * + * @return Effect Textures + */ + public CameraEffectTextures getTextures() { + return this.textures; + } + + @SuppressWarnings("unused") + public static final Creator CREATOR = + new Creator() { + public ShareCameraEffectContent createFromParcel(final Parcel in) { + return new ShareCameraEffectContent(in); + } + + public ShareCameraEffectContent[] newArray(final int size) { + return new ShareCameraEffectContent[size]; + } + }; + + /** + * NOTE: This API is in a closed beta and not available for general consumption. To apply + * for access to the beta, please visit: + * https://developers.facebook.com/products/camera-effects/ar-studio/. + * Usage of this API without admission to the beta is unsupported and WILL result in errors + * for users of your application. + * + * Builder for the {@link ShareCameraEffectContent} interface. + */ + public static final class Builder + extends ShareContent.Builder { + + private String effectId; + private CameraEffectArguments arguments; + private CameraEffectTextures textures; + + /** + * Sets the Effect Id for the Effect represented by this content instance. This must be an + * Id of an effect that is published and approved. + * + * @param effectId Id of the Effect. + * @return This builder instance + */ + public Builder setEffectId(String effectId) { + this.effectId = effectId; + return this; + } + + /** + * Sets the Arguments for the Effect represented by this content instance. + * + * @param arguments Arguments for this Effect + * @return This builder instance + */ + public Builder setArguments(CameraEffectArguments arguments) { + this.arguments = arguments; + return this; + } + + /** + * Sets the Textures for the Effect represented by this content instance. + * + * @param textures Textures for this Effect + * @return This builder instance + */ + public Builder setTextures(CameraEffectTextures textures) { + this.textures = textures; + return this; + } + + /** + * NOTE: This API is in a closed beta and not available for general consumption. To apply + * for access to the beta, please visit: + * https://developers.facebook.com/products/camera-effects/ar-studio/. + * Usage of this API without admission to the beta is unsupported and WILL result in errors + * for users of your application. + * + * Creates a new instance of ShareCameraEffectContent with the properties as set on this + * Builder instance + * + * @return A new instance of ShareCameraEffectContent + */ + @Override + public ShareCameraEffectContent build() { + return new ShareCameraEffectContent(this); + } + + @Override + public ShareCameraEffectContent.Builder readFrom(final ShareCameraEffectContent model) { + if (model == null) { + return this; + } + + return super + .readFrom(model) + .setEffectId(effectId) + .setArguments(arguments); + } + } +} diff --git a/facebook/src/main/java/com/facebook/share/model/ShareContent.java b/facebook-common/src/main/java/com/facebook/share/model/ShareContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareContent.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareContent.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareHashtag.java b/facebook-common/src/main/java/com/facebook/share/model/ShareHashtag.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareHashtag.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareHashtag.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareLinkContent.java b/facebook-common/src/main/java/com/facebook/share/model/ShareLinkContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareLinkContent.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareLinkContent.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareMedia.java b/facebook-common/src/main/java/com/facebook/share/model/ShareMedia.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareMedia.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareMedia.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareMediaContent.java b/facebook-common/src/main/java/com/facebook/share/model/ShareMediaContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareMediaContent.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareMediaContent.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareModel.java b/facebook-common/src/main/java/com/facebook/share/model/ShareModel.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareModel.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareModel.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareModelBuilder.java b/facebook-common/src/main/java/com/facebook/share/model/ShareModelBuilder.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareModelBuilder.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareModelBuilder.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareOpenGraphAction.java b/facebook-common/src/main/java/com/facebook/share/model/ShareOpenGraphAction.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareOpenGraphAction.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareOpenGraphAction.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareOpenGraphContent.java b/facebook-common/src/main/java/com/facebook/share/model/ShareOpenGraphContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareOpenGraphContent.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareOpenGraphContent.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareOpenGraphObject.java b/facebook-common/src/main/java/com/facebook/share/model/ShareOpenGraphObject.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareOpenGraphObject.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareOpenGraphObject.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareOpenGraphValueContainer.java b/facebook-common/src/main/java/com/facebook/share/model/ShareOpenGraphValueContainer.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareOpenGraphValueContainer.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareOpenGraphValueContainer.java diff --git a/facebook/src/main/java/com/facebook/share/model/SharePhoto.java b/facebook-common/src/main/java/com/facebook/share/model/SharePhoto.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/SharePhoto.java rename to facebook-common/src/main/java/com/facebook/share/model/SharePhoto.java diff --git a/facebook/src/main/java/com/facebook/share/model/SharePhotoContent.java b/facebook-common/src/main/java/com/facebook/share/model/SharePhotoContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/SharePhotoContent.java rename to facebook-common/src/main/java/com/facebook/share/model/SharePhotoContent.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareVideo.java b/facebook-common/src/main/java/com/facebook/share/model/ShareVideo.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareVideo.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareVideo.java diff --git a/facebook/src/main/java/com/facebook/share/model/ShareVideoContent.java b/facebook-common/src/main/java/com/facebook/share/model/ShareVideoContent.java similarity index 100% rename from facebook/src/main/java/com/facebook/share/model/ShareVideoContent.java rename to facebook-common/src/main/java/com/facebook/share/model/ShareVideoContent.java diff --git a/facebook/src/main/java/com/facebook/share/widget/LikeView.java b/facebook-common/src/main/java/com/facebook/share/widget/LikeView.java similarity index 99% rename from facebook/src/main/java/com/facebook/share/widget/LikeView.java rename to facebook-common/src/main/java/com/facebook/share/widget/LikeView.java index b23d39ebb3..eaf07ba569 100644 --- a/facebook/src/main/java/com/facebook/share/widget/LikeView.java +++ b/facebook-common/src/main/java/com/facebook/share/widget/LikeView.java @@ -40,8 +40,10 @@ import android.widget.TextView; import com.facebook.FacebookException; -import com.facebook.R; +import com.facebook.common.R; import com.facebook.internal.*; +import com.facebook.internal.AnalyticsEvents; +import com.facebook.internal.FragmentWrapper; import com.facebook.share.internal.LikeActionController; import com.facebook.share.internal.LikeBoxCountView; import com.facebook.share.internal.LikeButton; diff --git a/facebook/src/main/java/com/facebook/share/widget/ShareDialog.java b/facebook-common/src/main/java/com/facebook/share/widget/ShareDialog.java similarity index 91% rename from facebook/src/main/java/com/facebook/share/widget/ShareDialog.java rename to facebook-common/src/main/java/com/facebook/share/widget/ShareDialog.java index abe9f0baef..5b0c3773ca 100644 --- a/facebook/src/main/java/com/facebook/share/widget/ShareDialog.java +++ b/facebook-common/src/main/java/com/facebook/share/widget/ShareDialog.java @@ -41,6 +41,7 @@ import com.facebook.internal.NativeAppCallAttachmentStore; import com.facebook.internal.Utility; import com.facebook.share.Sharer; +import com.facebook.share.internal.CameraEffectFeature; import com.facebook.share.internal.LegacyNativeDialogParameters; import com.facebook.share.internal.NativeDialogParameters; import com.facebook.share.internal.OpenGraphActionDialogFeature; @@ -49,6 +50,7 @@ import com.facebook.share.internal.ShareFeedContent; import com.facebook.share.internal.ShareInternalUtility; import com.facebook.share.internal.WebDialogParameters; +import com.facebook.share.model.ShareCameraEffectContent; import com.facebook.share.model.ShareContent; import com.facebook.share.model.ShareLinkContent; import com.facebook.share.model.ShareMediaContent; @@ -308,6 +310,7 @@ protected List getOrderedModeHandlers() { handlers.add(new NativeHandler()); handlers.add(new FeedHandler()); // Feed takes precedence for link-shares for Mode.AUTOMATIC handlers.add(new WebShareHandler()); + handlers.add(new CameraEffectHandler()); return handlers; } @@ -320,7 +323,7 @@ public Object getMode() { @Override public boolean canShow(final ShareContent content, boolean isBestEffort) { - if (content == null) { + if (content == null || (content instanceof ShareCameraEffectContent)) { return false; } @@ -492,6 +495,51 @@ public AppCall createAppCall(final ShareContent content) { } } + private class CameraEffectHandler extends ModeHandler { + @Override + public Object getMode() { + return Mode.NATIVE; + } + + @Override + public boolean canShow(final ShareContent content, boolean isBestEffort) { + boolean canShowResult = (content instanceof ShareCameraEffectContent); + + return canShowResult && ShareDialog.canShowNative(content.getClass()); + } + + @Override + public AppCall createAppCall(final ShareContent content) { + ShareContentValidation.validateForNativeShare(content); + + final AppCall appCall = createBaseAppCall(); + final boolean shouldFailOnDataError = getShouldFailOnDataError(); + + DialogPresenter.setupAppCallForNativeDialog( + appCall, + new DialogPresenter.ParameterProvider() { + @Override + public Bundle getParameters() { + return NativeDialogParameters.create( + appCall.getCallId(), + content, + shouldFailOnDataError); + } + + @Override + public Bundle getLegacyParameters() { + return LegacyNativeDialogParameters.create( + appCall.getCallId(), + content, + shouldFailOnDataError); + } + }, + getFeature(content.getClass())); + + return appCall; + } + } + private static DialogFeature getFeature( Class contentType) { if (ShareLinkContent.class.isAssignableFrom(contentType)) { @@ -504,6 +552,8 @@ private static DialogFeature getFeature( return OpenGraphActionDialogFeature.OG_ACTION_DIALOG; } else if (ShareMediaContent.class.isAssignableFrom(contentType)) { return ShareDialogFeature.MULTIMEDIA; + } else if (ShareCameraEffectContent.class.isAssignableFrom(contentType)) { + return CameraEffectFeature.SHARE_CAMERA_EFFECT; } return null; } diff --git a/facebook/src/main/res/color/com_facebook_button_text_color.xml b/facebook-common/src/main/res/color/com_facebook_button_text_color.xml similarity index 100% rename from facebook/src/main/res/color/com_facebook_button_text_color.xml rename to facebook-common/src/main/res/color/com_facebook_button_text_color.xml diff --git a/facebook-common/src/main/res/drawable-hdpi/com_facebook_button_icon_blue.png b/facebook-common/src/main/res/drawable-hdpi/com_facebook_button_icon_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..0b9da859856d6777d82d4cba0115a07a875de27b GIT binary patch literal 626 zcmV-&0*(ENP)aPR&z zJbd&5PoBNTzC#z0v&l>=B;tV+sJL9bl^ad_gz@0v3;eMNJX!r2Hk5aAqOxxHpt!tg z$0>n)|8B_HG)*~QzxfF18pHyPDy2HpapTq_rS2)aJ>IneLnf@oz+p>KuANuekWOW- zt^w5R5tK~dd+=OAckMe5N<9`OT6<8ig(OM~6<{^4!7Pntg33+?>au2TXHq2kXA0wx%MWGgM zu}KhGyITNMeliXoy$s!Q`1lo2$w|@_tTsN-)fNo>`Oig zSbIc^0c-Anxzn~_k5Yoa{>4i`Xgqi8Jx(beOS7kKd*BGpB;OY9Rf-^hu`~GgJ63{` zv6-}2fDOEa`4p@<^p@FcTS%HZt+i7d5(N2m1 R+A#nC002ovPDHLkV1jRb*%JT& literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..dce68511a428dd382f843fcc0b816e67c297ef57 GIT binary patch literal 1448 zcmV;Z1y}lsP)-Xs986ave~kLvdA+sfbH zUt9V%c}4!;fB#*GdT_iVHVJ)vd}>8RMEHQ@cDvPo|NW=NjT`5#RjXE%gx#jn$4{I* zBr-D6hk6Uo3&OZ(&z^w4=s(zz7k9-gDV{pLxCGpIeGg%AQ;K76Q z%K8LTc;(8KsC@bJ#n{2ilqsV!XU?oLWy*xreS17_-n=o?Q4bDy;DZ0dI?4`ABsS60 zr%%^OKI;`_2di4Osw!Esq;6-=k^QU9{?!&MT1?fbQNvEI>%jpJT=3!fev}EeZ{43JVK+LQ=hY^$dzqrc9|^30xXr>(;H-kw9L*er>g7Nz}G& z+jO4O>C|({Su5DyOze_W|jrBd){KAC%Nj#QH-O{!)XMhE~kYu41Hi4!MQNs}hE z)^7d!_3F!)FUl_TH*VZ$DbP?AbG;ILgSGx=hlvY13lt8=`5` zrW)9k(9lpN_bXtQk9gz8jg`F)9AeL(KfeS%Jn-pPWbD|n>BSbjeEITrlFpw$uXk_Z z!i5z!ARxfRW>ctDt5#|M%9SgXY(6Vyp5sD=3TX=tesIBu2R=ySwQSikrP%x#k*IvW5^YUAh#XrAwA9fmrY0ojZ40e(J#i4_xp)Je(GNH6`iXxpQu@ z)nruvd8RAc4!&W-2DN(iYTb4?9Qq8qTrT?BziHDZ+Llre4tU^#50CvSbXBNRA%oab z6)RTkE0@Fz3QnIs4Y6SdOPemO%8?@nJ679t>C*l1+MGOjQWMJG#Y^zO1s@(!OBix8 z*)aLUR$s7S!Q4<03gupn5x?Qh)7Gq6GlP8Us9(5n;XLrb1z+>ngdywm+Mq#$5@H)I z7m>e$cL2P9|6UzCcFgG5v7?bZd2+}trH`LDc?fl~$(Dly9=PCZp6?`{XrgS{vSpUn zqO7!=3>`Xj=B?Ye{JC1qohv_M`tChx+`M_yM=p=ITt=b>3|RX3iIYb@b<~3c9=O&he?jaZQ4VpYCQX_YWlcm| ziVl$9ky-LKu9u^+=a2}NK7Qilkxw1<;DGld;jc%`l%$qxE0;XttV>nV`l8K6+lscw z(#KDnJo2fd{)Z8ILChLB`C0)>Bby~#n>KCo$;(j`@RA}}`uK^H$78MQsE?gk{ZiX=SMm>S4xF=M=@8))Sw)g zsvBkyp#Q6<;~x(CwM-JeFPVrROC{mAvPlrn{ZL{tQdzH7mP$TNm@OLYkD>UM!|2%` z<&yDvu>^d?BY3A!9)YCY z`-S6Ct>tiBzH$R3ilS)8iGRRP?fC3?e-W6*8TR5a}}773XP;C6chG@P?=3mSA7jZXb1Yq?po z^$0D%O!o>TkX1zG52X^Zeb-TtIGrANJQ9M%E6HSL%1bSBr_I@*RiOW>rTIb#WJY>Ma`oCxwC*{9YAtn>djyK0p_i#zP%1>H&P9(Q(~vWEng8di04`p>16>AA zK@``lSJZUmtC7yzRI(`CI?{su7Yk;J(n7y_s}Yp=0a2PUa)~eTjZsu*cT<4~kdrsg+O08B?|`&;;wG;P&meAr4uB~7$10n-ok zx26~J#Zo|o1ClvuQvrU2U(84-u#aj)@Nr7%(P!#ULy{7+}C4EJZx( e>i`Cf`nLd9b+1tZZ=;j|0000+^`1d_y*lE=GS#BohX=iFIw>&t>K|o@$9BGT=4vir%MAoKx6zKpb;)W zGdxFgyr5n9z_!d<@Ux%|ctIQRHniZ^<=1-yZOpY=JMNdE00000NkvXXu0mjfZkkg` literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..35b63356e91cfc1fb3bc2660bc3bc3f58716d6f3 GIT binary patch literal 1045 zcmV+w1nT>VP)?2v2EK+t`g46>PQb{ADu=1vZn!O%E_28_q1aN_b zTI7z=%RDhgYUEN6j96k5UyoX9`+WFf5B|1)K$--7UJ=*AclSeF;c!BAvH|C z9{e@LqhH~=$xay70j#ihmTqn!*37a$jLZF$LAm^wE&4J`G`%-MOaiOg2K}9 zk;5U}D1S%KTIx}TlwSMbn}aAUsYX{85Sjw<$d^n5Yd{$~-b@Vo8sBdTKyxz;qm498 z2koSPBE%D4VYC&XgHCz!{PB)>bm#tX2=NibsBhU*DHa}Xp6X0U z`}a{6604ofJ0d2lUC`RPdaQYA3+|lmjLECNvrVhzo){}Ne2Idz5HvEjC8)yv=igea zdT}%Ekf0-MU_7V9>+~fiq=75frpjS_F!ZUC0Ky7V( z#KT{5LYZ6j9Cx?NeBwCF z$SOg8VFkT{+=2>Z<(A@)KmS2{#yl=4s+7MiLvDUKvUAH&Tv~(8yFwsFe4`4<C{v9mR>mg#+QynH`SMSsQ-f-ihm{IN<_$<_sC~yJm1}a<}iSXXEEh_{{Bz z|1_gwvpXE2ob`7~Fs9G{L+GVLzuuNChfYCqC^Q4nzfpqEp+Em8Vr!HPdWS|1T8I7^ zJPsWVQOfaXh>kjRH0t4#4TII8Ft?#h-weK}M@-)!Pl){kVY-JXkrQG7ZX!gb29?zJ P00000NkvXXu0mjf;pzJV literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..617169c758447bfb9674899ef79ac6bf5d8d1fc8 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^xA}`jyMiqko^9jN)Thk4miSg{4z}o!%W!R!!TXXI2oQo=5 z8Tb34+?fYrJWwRV^MIe - - - - - - - - - - - - - - - - - - - - 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 0000000000000000000000000000000000000000..8dbcf03a7b882ce83a3218fcd73f5e91c91e6cc2 GIT binary patch literal 1634 zcmV-o2A%ndP)VH6rZ5nzD6sCiq$?ynZ#ufS6F6d#^v4P>74C33fL)2@A-+|mO!50G^sW;SX z@Fv=X9JsWKEn!#4`*Z3G)%U1xRG*5zUs5j zP1D?e?X}m=Uv$w$vvYHEb&N3_XNgEyUS2-?(@#G?|J`@rzH>AhJq++mi1Y+AWGjg- zWP%M3)R)(F{nV|u-g?@pr=HqNDQ%xjQU~>M)Fhbdy3%?Te*gXVjhA13`FDkWyEcD> z6qAgFJdrd!cP6@L)%RX;`Q`Hq3k$vV_4S~Oh6!}&*aEMrN}<F#{mf2{y*|)K!cCJ#8`p zHpwzz0*)}H69S&woiKEQUDSY0f-80MBD`YAY@5U3A_8upS3bvlgjd#1gcljuz-+8-^L+kxK?&QVNMcI}C+^vlw=43mmH)ybgYGh7EgzN$ySs zZjlTQPjXlho(JEwh#9z~6qij#S>QBL0p5bqPJluh4 zmH2xt=jM(1?-n*g34jRzOuphC(*4{e|aAA0bh z(|PR~^gz%{4lg;pr~og(JD>u*0FP?f@s1f~`~TkD-C%yW<^O*rpYy@*!x_4W_Y!>4 zK5VQ6<79GNGMg^UgE>)RGP@T>fjI?jI2vtZW1b{*4CWJajwzXQz)UzuTZfIAY0 zTNZd8dVAmnHUW>B$?Sw9b=o!Xh}r1x9aI7nVP3o4hYP%^{&!J)_19mQ zmzI{^(CVA&W%VXJGEQoN{dasIfs-lM)Gz-0^UpWxn_T_jaM%k|sFjtK4P~%2W&tJ! zEbNGZ3zu+$H`L#yl%DwX(@*a@>#VcpPCohM*S$v`X6|jfuzIw*Kf&s@4g5@CF#C5L%`oAdGy`0@*A5M$X;s$y|+bV9RGX%Wu zIPj4L4sYPv*HD57U|Z*bQ{ILNc8!G%NR9+Q!jCX~$wasszyaOV8M-*mMmR5AVbKV4 zG;BK24R=C*DkbPJZv_+FDy4`z(xQ=UVQ-la)HG)Q9y^{=#6a9KLA7OJ+X#pKn`S=3 z2|D$oy)n^Ubu+sCYbWRw?I?G7)8uVoGz&wN+x=JPVn@GuCC;`Ow(tpd272S96T5iw z{`KLCU`Ldlg6#(!-OEstlQDyqw$HorbLPHH~;_u07*qoM6N<$f|w~BG5`Po literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..5226a21e389d5939787f6c5c5ededde0b02f276e GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rhe4o?@ykP61u3yf^ch9WHw=k31j zd&#$Y!JG|m4;vhPa=d@Wj}Lj-x~6q|-};{Q%6GS$YVhJxePUmQzSEQqQt!Sh=qS8e zBWU3E#;wEl@U=fTIs}zC4BS{4**F}MnSGl=&U+k_I2p_NYW8d!4&^1Ul@ojZl&h^d r#w>Vj*0JV^9j5yyZfNXCbXuh^v)!?mO~m;h&`k`Uu6{1-oD!M<`)Nv2 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ce8d5fcb4e423ed83c16261feff1b8c14f2d8aa2 GIT binary patch literal 2188 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..6f39f036a9f795275734028e8a28f08cf2631960 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rhec25__kP6168GG3SIAk*nBn}6N z)V(kD-Cb7wZrwpur+>}OJH9S-KYLsM&XsQ^?oTQXEm->fkkO)jElalX>)Uhn2wbgY z>6!S!y`#44?4@*Owhn~@5`rue3Jho2GlZA8^8t>+%-ylU)}67;ufW#!`1<1L@XXicw#C__w$HP| z*Z%(gwZz%_`~C9u_}Aa+yUE<5wa)zf{qy$u&)DXyz0~#h`n1E?#nIv4G8?b&VmM)ZOXC(BQep+S=mm(c0(3&)~q# z-tO`Cy2#t`^Y@>#&DGxNs=L#{&EKuQ)bH~5{r #@giS@vgtstGv^uxY1@5H}wDj z1jh9_7>*ucq1`$cY(D2A8|1=gLdXink1N^&G8c~zU=JNcf zQ~}Xa9G~ES$WJ0lg6tIk+ccu1Fp~@Ue`XOC#kmsS(T8X#SNMS{BA}Y$hem7e|BNwy zM!f;26)XItuoLbo4A=R2^949+VUb@l&(}9B6g-K3o3QWJmoUDA2DD&b zg9Z%vlC!5^-x3YT!M+R)xPyHG4LE{*NgB`#1*4QV3k8dmcL)Uol(z~6Daz}Df*j=~ zpx}=3GM=>F7(hWU(j3S>8HGpkf+k) zMf^h?I}_88rxF5h`tsF!fI~)PmS6Nu@cS0vkWo)g_I;U|Iek|$qu2U|WNM81vNCHt z`sUbo8gOu!la4(_!o3=Yh?bd30MkSvj293LkU675PgAn)O#N&6-`3lOzBLM5fSBBTTd zi_}!m4 zN=R2NE)U{!HV;~KTDa1Mk5&7cbl>YifcFH)_l$_2nzQzum300000NkvXXu0mjf DzfU}s literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..a01e0ba5c8cc4a5a2487ef0ddcea81a0246f2bc7 GIT binary patch literal 1476 zcmV;#1v~nQP)8O(&Fgt^X~EX+2QNN(BQGb)}^=5ow3Za!q@ou`}+I+;^^?n)Z?_n z*q^h_@ACK2+UK~&+Mcq_>F)HWxzVJz(DL>8&)DXwyVKX->a)Vv)7 zw9fJL_`=TLztzao;`aFZ(%b0j?)1UU-{0l#wZz%L&ECw{ z<@NXa&DiCpxY66=?C0$AxyRbd)#LN_`PJU(sk+j-$lK=Y^5Ew0(Anm_%iX-9^mzaP z1bsc~PHY$}X0e`RJ z!9HK(ll+sZ9BfmqP4lnvu!~=x;oq8tP3GpO_zxOQSYshw_1>Gv7h*3$V2^st;s!2hHc`BOpAwhqOs%9aN9qp(NI*MHZ$V zQV*E6NIjY`EKNQ7FzkW~{{KY;f3$p8f*q#iUHL^WsYM9W%C1!QI<;7ZX;Es?fN5V` zY2y>rVi~5DT=|B0MY=KA@~Fi%j4M)yeHeE`9d2P<&yfKgW~jp*jJu}}OE7MQI#gj? znmXiQ+=Cm_pvYp6I_%80VA9usqzi3hoBBM;$i3=LV9*BjS%5)t>f^(pCu%bZlM>YC z9wzmv%{+{HrY=zly{`lPZ`_Tf1=QV0TEHFY#;Ea%n#5t)6!oaXumbhC1Dr@(LC%rg zK?g9+>pHUW4ABOa-7I?$AWKy#h;T2X&l0frENnuAH7e>rhJHXbmk=UDHER$ePbGl| zA-+&a0aAEdR8fW)FI16)78>Zs6F$ zD+HS4;5H$TC+KLEf@=MRLztXjYeAB_xM943ch>LTrs z=4DboRQRb3h3GCOF|1O&OGyg1Eex)CTc9{o`6>pJJHDYzABlmw!jN)JMDaP*bU@j9 zQT(^7bdmBMyy4$9_e0vDvWxRD4z5d@MxxsD30}h7NwG|4e(u)ZeF(A)Lc6u8Oo-UVXh^hOm#Hcv;%* z2|wARN`nfhyXyA_DcbHqyrWKywL#@0N&|< e5I~zQnEMVMZW`vcdIrM)0000IKAMnM@iP!g2eEwnr62D*ugyNkDgipz}RvZ$O30sHh!^hx>^op+<; zMY40{BmJHXcyd0^KMtmr!_w}ek3Rb7qmR7BnA}ko3+fw#=b+3{dq-fkw77jexI$Hw z54qlOJ?FZZx*31E-gCX{`Wo2gYVgAl8eq!%tE#&4R`0g{#^?&DpVMt)4^B9=8=}Ej5>2fcJOxoWxp$ zSTmB(uq^iTntXDm*VLl)$PK?#E%AUN8!O5zIcK``rqBF|zEU&U0@xe#OL!y(Yrbe4yZ)L?CQp~|tHP-qhC^bL8 zjsX2HUS(wz@KtCu=Sm(Y0HuAz`Be+Qlar^zkt5)Tu(ZjF57goOuz mfA>25fAH&LyVbMP#`Qn7k(&_swgrd)0000hgLyTH)H+}J$nX~eBL!7|-(=7oAr+fU~^2K|WL-t=&RhsJDoMX!K;ww$V3(LW~Z z?Vl{5P$CwSRwQn9=7g@a*or$Wp7WeiCtXVX;eB9IhJ5*nqG(N<-p@b_89ZJ6T-G@y GGywp`Wj1^O literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..3939bbd267532e7630d7e35589a250db033046d2 GIT binary patch literal 1321 zcmV+^1=jkBP)j3X(2Ur`2i&um^nYyP7#<|xX(kXYq~fc_ z#4Q@c%*Jm9GTj)Bj&z&i(!VYW=%An{Poq`wy4rS#Wro3FdKLMMp&r5v|GA zuEDAb%32bvtn4g<(c|C0fBX6L!7Y;`d)7D!{`;H%{@%8mAaPtN0MiqQB+U%MY~1p} z#&&+na>@oWzkuQQ{tj?jQPn?hSjM6GTUc$Lh- z|36VBV{r2fTAdyD1Ykg(YfP=_@n!+Qm_eaWbKDn;npYi50xl7N)0MT=LI0h*`3TKKg3qzWbi`|+^9gb; zhs+soF9Hw3EF&NOBX}|>Xjw?-fD9*%*=xkQMy)Qf7##3cU;Fb3T2sPh0a^sC0G`ZS zeWO_RUbv#;2Fn@oTddafI7U$|9rc}nYx7#RisMxh$F(Pe+ChCEXoWh#e3e!JhaqS6 z#AE*dJ+vO8tH&G`;LiKLg5v-z1F=W3FJWEhAqe4GpM{(YtN>p5&(h-~Y?Gjd1^P${ zyk}d%aZ8qw|NAH2SWh38jsur40LwOM3(o}~2YQG#DAobbIVX!gkdzbA)nz?MN5Hra z=2tq%`A37Z9AE$v0FkqjIPfdv%;P9Cx=~0l^SXR?(>hFhfRzymY&D+`ggxTm^JaQx z~mNJ+E2x=7UpS+)#T#qn;1d{a5{Q=*E?tlOCr&n+7ox{!TvabC~w%;C~3Hb7;HA;Jw4v3N3DL2QIFA{^8)Aw0jIL zce5j?kuJ~>xNQUu>CDc7rw;ABot0^cNPZ$1j_sKAT=@sEy@TLvVvj(pxf8(r=-(iZrQ f0#fEHhnv3u6&~ud1w9J*00000NkvXXu0mjfOt+v4 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..95d84ce605355668dae3410a9c504abac419c322 GIT binary patch literal 329 zcmV-P0k-~$P)$;w%EUT_EfD*-5PPPCVbc>Q;62J$;|#SyaADxvCUg zkW^uH$6`~{%+@xdXO{Bagr~w-DpD%0Y*}b+nqI&1AOCBJo*5ntY$n_~6o`e=il+IF z#_6?d-_gHz@f{UJ&kPR+Rv&B?SYF;R)73b&dh0v-(@sC5a`cuEJ;8V|uu3KDl4162 zo>Nv{KiShbwQ}b>{0*FbMC9--B6}|p*;k@x=2adHtlFu_x^ce#mZjwlLtTxN%Madz z-@plhuPX2vh0|h&2LoGHH{P4PagpW!0-wBx<={0eyU*srgMrO+Q^#*1_0*8;KG_Qf b)+{3i)YPv!-iyFS00000NkvXXu0mjf&IFYW literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..430a907482ae24d2b2807506299215e919209c63 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a)4G*1`DkP6168GG3SUPvrp;5ck> zp+5WeO8)uWItq_n9waQWoTm59@tk=fk5m5i-z`fj?m9ab8)$0Gj#l&v*k{wJsuBHT zvfq7A4uMImdb6WiTO_xpoOP=nV!Y9a*r#{m`=r;3Q)*0N&rF%PpHZpj+`njxg HN@xNAb-K5f+%o;2p%oCvzFbiMjOi;_@DmAi9d~J z5jGRo`>1Unu>SwMqqcD{ZUC*;0b|a;qvLyNDyWgI1ElhRr6&>{71T2I2K6cRhxy%< zL6LvuXRHNv;A~6OW&-T@dT$R74sOlo^SvmFE&$+{!Kx)#@WskCkTQk*-s|;Vo}Hbx zcXoCPgTbIYolYMxESqA!U6(nKf+5QW`Hhe-j*pMqLI@1Q5USOx91e%&*=&|zFWF>~ z6@1__CsH!xS3*8NIy!0#DKH2EAQ;4P4E1{5V(%O5@9dq;4CaN3C6jDXzYy{nA?+kJ zQYrPXwOUP%Mxz9Kk71Pu7#Y+XS)f)7@-rcy8l;{iO;O{LSSTe6`-iOok8)qV`?@*u zNg5dul4QV>fxVl7bp_Kht z+1N}tGANs*3(0oU6=Le+HMUl>57?a)Hp~RF)sTFe3~I0YQ@7iFl(mx{VLQ7N8@r|| zm+WSdTBCNUZ}@{_uRCuvmRhUVQ&|0GQ-h5xn4=Lq^6J&A7!e4`uRC8b`49+FN+=eK zuvjdD@pxPUj}$zQz~K5CBH!zF?5m3ZuffjFP7zqvf?i)=>7CqAG&BsuT<`f8bzwE* Tm*#Gp00000NkvXXu0mjf&$$N3 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..e4cce170845eb15a12a5a6d5079b00773f9fd2a2 GIT binary patch literal 204 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 KMNUMnLSTXudxp^f literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..47bf2c0c128367348b748dc7e6feac3718a31177 GIT binary patch literal 973 zcmV;;12X)HP)Ga%PRZ^he(5`_oUdbV6Uf=`o?Vg zfuIz&ByZQR@ZA}JiYS0Y5FFACB9bdYzKril-fnD4YJr+IQC62H$%+*C!_qZJe8*wv zWbR9F>)k_m6a-R$#hlv!yAUcpoETB6YWQB#2pRG@dFhEQ2I)vHd2$HP>|r;s-*zUp~U42tdV~M6|yFGBVF3 z7+e#E6ge?;ttzhClwt=X<4PfLbvOL$P&a_rLE(k^xjO zgb~c}@c*rWr^HE}W|6MWFS5luYW2-HGRE(pKlxk#3+AGw*@ED-Kgt`xSp9=xO}jkb zhUnJmFY&T*<%4+vpb2`tb)N=6u@gKyqlSfEG2xOAhtq9G4Rvq(Y>g-e+>(3053hG% zGEQLLVdDb8{0I;b!~Gu+Z}<#60TBSRc|@%tLTO$tBvS!V0B#*})Snm|!aSiv91xeQ z&~?01|7!=b@1x^XoM=}ZNw~!Yq zeNzVxW{wvZ8TWY%laN3#9N0BDnX1=cq!DW;D?e9r-Efyk?m&*8FZWGl3YlZYMGD9^ zPz<05s8Fbbod9e-MR?5k{qX@}wUVT6p-hov3XrAUlLrdfW2GL_M5Mrn1cQ;lt^vR{ z8i0)g_F*qs4KS6U+DH#npo2_~pDXrFX7ZV1r3J>kp0)`{)7iVg3PQ3w0o!OaQ-Vi2 z*cZ|?(AZZIsxjO)a_nreZz`LE;Rd8nLP}8l5VEmJ!NSJxPc~L}ALsu`li@p;kZC|( z2V^#Lw7Ae2ZUg7!lJ2Oj6&PHwyTHa%jb;n5A;3Obf>pq&1XU-A$ZLSiSV*rmCrwvp zr-dCrtOt_)*u}OLKp`b6r|Ezq@(j$$Z1#X^xHXz75E}w)|3p%O6{=LZVs3h&LQoqM zqo*(RPv!CljuhuvcXbO~-FUUGmf}5xI zywD?uC_GSKKfU>K>&EuD&V3%ervtK$`y`R0q{_8`*Ev>~5R?eRdXFYH#qf`{f&Rte oMu)~imHv~i?|d^%e5Pjm2Uuhj$6Ra?8vpsSBb5$gQIQ@-SrbZ5^8p5Bmi z6HgtU#k|}85L@NXbBf&!HqOgDo<2Q0L6PYbix8t$euI)i{sHBw&JIcw*?0b{@n@T! zeB`M_p`}~MzgJO?JJ*YX`7@opp9)m&s`I?(@l^KHtK`Nvr=%sOojQEE{11DMPD0a3 Tv5FR;gBd(s{an^LB{Ts5)OcAP literal 0 HcmV?d00001 diff --git a/facebook/src/main/res/drawable/com_facebook_button_login_background.xml b/facebook-login/src/main/res/drawable/com_facebook_button_login_background.xml similarity index 100% rename from facebook/src/main/res/drawable/com_facebook_button_login_background.xml rename to facebook-login/src/main/res/drawable/com_facebook_button_login_background.xml diff --git a/facebook/src/main/res/drawable/com_facebook_button_login_logo.xml b/facebook-login/src/main/res/drawable/com_facebook_button_login_logo.xml similarity index 100% rename from facebook/src/main/res/drawable/com_facebook_button_login_logo.xml rename to facebook-login/src/main/res/drawable/com_facebook_button_login_logo.xml diff --git a/facebook/src/main/res/drawable/com_facebook_button_login_silver_background.xml b/facebook-login/src/main/res/drawable/com_facebook_button_login_silver_background.xml similarity index 100% rename from facebook/src/main/res/drawable/com_facebook_button_login_silver_background.xml rename to facebook-login/src/main/res/drawable/com_facebook_button_login_silver_background.xml diff --git a/facebook/src/main/res/layout/com_facebook_tooltip_bubble.xml b/facebook-login/src/main/res/layout/com_facebook_tooltip_bubble.xml similarity index 100% rename from facebook/src/main/res/layout/com_facebook_tooltip_bubble.xml rename to facebook-login/src/main/res/layout/com_facebook_tooltip_bubble.xml diff --git a/facebook-login/src/main/res/values-af/strings.xml b/facebook-login/src/main/res/values-af/strings.xml new file mode 100644 index 0000000000..32cc264729 --- /dev/null +++ b/facebook-login/src/main/res/values-af/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Hou van + Hou van + Teken uit + Teken aan + Meld aan met Facebook + Gaan voort met Facebook + Aangemeld as: %1$s + Aangemeld met Facebook + Teken uit + Kanselleer + Laai tans … + AndroidManifest-fout + WebView-aanmelding vereis INTERNET-toestemming + Jy is in beheer – kies watter inligting jy met toepassings wil deel. + Onvoorsiene fout terwyl die prent afgelaai is. + Deel + Stuur + Besoek <b>facebook.com/device</b> en voer die kode wat hierbo gewys word, in. + Maak die Facebook-toepassing op jou mobiele toestel oop en soek kennisgewings om jou rekening te koppel. + - OF - + Bevestig aanmelding + Gaan voort as %1$s + Nie jy nie? + diff --git a/facebook-login/src/main/res/values-ar/strings.xml b/facebook-login/src/main/res/values-ar/strings.xml new file mode 100644 index 0000000000..3389c2cb75 --- /dev/null +++ b/facebook-login/src/main/res/values-ar/strings.xml @@ -0,0 +1,30 @@ + + + + + + + أعجبني + أعجبك + تسجيل الخروج + تسجيل الدخول + تسجيل الدخول بحساب فيسبوك + متابعة بحساب فيسبوك + تم تسجيل الدخول باسم: %1$s + تم تسجيل الدخول باستخدام حساب فيسبوك + تسجيل الخروج + إلغاء + جارٍ التحميل… + خطأ AndroidManifest + يتطلب تسجيل دخول WebView الحصول إلى إذن INTERNET + أنت المتحكم في الأمر - يمكنك اختيار المعلومات التي تود مشاركتها مع التطبيقات. + حدث خطأ غير متوقع أثناء تنزيل صورة. + مشاركة + إرسال + تفضل بزيارة <b>facebook.com/device</b> وإدخال الرمز الموضح أعلاه. + لربط حسابك، افتح تطبيق فيسبوك على جهازك المحمول وراجع الإشعارات. + - أو - + تأكيد تسجيل الدخول + متابعة باسم %1$s + لست أنت؟ + diff --git a/facebook-login/src/main/res/values-bn/strings.xml b/facebook-login/src/main/res/values-bn/strings.xml new file mode 100644 index 0000000000..b6537c710f --- /dev/null +++ b/facebook-login/src/main/res/values-bn/strings.xml @@ -0,0 +1,30 @@ + + + + + + + লাইক + পছন্দ করেছে + লগ আউট করুন + লগ ইন করুন + Facebook দিয়ে লগইন করুন + Facebook এর সাথে চালিয়ে যান + %1$s হিসাবে লগ ইন করা হয়েছে। + Facebook ব্যবহার করার মাধ্যমে লগ ইন করা হয়েছে + লগ আউট করুন + বাতিল করুন + লোড হচ্ছে… + AndroidManifest ত্রুটি + WebView লগ ইনের ইন্টারনেটের অনুমতি প্রয়োজন + আপনার নিয়ন্ত্রণ রয়েছে - আপনি অ্যাপগুলির সাথে কোন তথ্য শেয়ার করতে চান সেটি বেছে নিন। + একটি ছবি ডাউনলোড করার সময় অপ্রত্যাশিত ত্রুটি ঘটেছে৷ + শেয়ার করুন + পাঠান + <b>facebook.com/device</b> দেখুন এবং উপরে দেখানো কোডটিকে প্রবেশ করান৷ + আপনার অ্যাকাউন্ট সংযুক্ত করতে, আপনার মোবাইল ডিভাইসে Facebook অ্যাপ খুলুন এবং বিজ্ঞপ্তিগুলির জন্য পরীক্ষা করুন। + - বা - + লগ ইন নিশ্চিত করুন + %1$s হিসাবে চালিয়ে যান + আপনি নন? + diff --git a/facebook-login/src/main/res/values-cs/strings.xml b/facebook-login/src/main/res/values-cs/strings.xml new file mode 100644 index 0000000000..b07e05acc3 --- /dev/null +++ b/facebook-login/src/main/res/values-cs/strings.xml @@ -0,0 +1,30 @@ + + + + + + + To se mi líbí + To se mi už líbí + Odhlásit se + Přihlášení + Přihlásit se přes Facebook + Pokračovat přes Facebook + Přihlášen(a) jako: %1$s + Přihlášení přes Facebook + Odhlásit se + Zrušit + Načítání... + Chyba AndroidManifest + WebView vyžaduje oprávnění pro INTERNET + Je to jen na vás – nastavte si, které informace chcete s aplikacemi sdílet. + Neočekávaná chyba při stahování obrázku. + Sdílet + Odeslat + Přejděte na <b>facebook.com/device</b> a zadejte nahoře uvedený kód. + Pokud chcete připojit svůj účet, spusťte aplikaci Facebook ve svém mobilním zařízení a zkontrolujte upozornění. + - NEBO - + Potvrďte přihlášení + Pokračovat jako %1$s + Nejste to vy? + diff --git a/facebook-login/src/main/res/values-da/strings.xml b/facebook-login/src/main/res/values-da/strings.xml new file mode 100644 index 0000000000..8f987fe029 --- /dev/null +++ b/facebook-login/src/main/res/values-da/strings.xml @@ -0,0 +1,29 @@ + + + + + + + Synes godt om + Synes godt om + Log af + Log på + Log på med Facebook + Fortsæt med Facebook + Logget på som %1$s + Logget på med Facebook + Log af + Annuller + Indlæser … + Fejl i AndroidManifest + WebView-login kræver INTERNET-tilladelse + Du har kontrollen – Vælg, hvilke informationer du vil dele med apps. + Uventet fejl under download af billede. + Del + Gå til <b>facebook.com/device</b> og indtast koden, som er vist ovenfor. + For at tilslutte din konto skal du åbne Facebook-appen på din mobilenhed og se efter, om der er notifikationer. + - ELLER - + Bekræft login + Fortsæt som %1$s + Ikke dig? + diff --git a/facebook-login/src/main/res/values-de/strings.xml b/facebook-login/src/main/res/values-de/strings.xml new file mode 100644 index 0000000000..222c68ff96 --- /dev/null +++ b/facebook-login/src/main/res/values-de/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Gefällt mir + Gefällt dir + Abmelden + Melde dich an + Mit Facebook anmelden + Weiter mit Facebook + Angemeldet als: %1$s + Mit Facebook angemeldet + Abmelden + Abbrechen + Wird geladen ... + AndroidOffensichtlicher Fehler + WebView-Anmeldung erfordert INTERNET-Berechtigung + Du bestimmst, welche Informationen du mit Apps teilen möchtest. + Unerwarteter Fehler beim Herunterladen eines Bildes. + Teilen + Senden + Gehe zu <b>facebook.com/device</b> und gib den oben angezeigten Code ein. + Öffne die Facebook-App auf deinem Mobilgerät, um dich mit deinem Konto zu verbinden und nach Benachrichtigungen zu suchen. + - ODER - + Anmeldung bestätigen + Weiter als %1$s + Das bist du nicht? + diff --git a/facebook-login/src/main/res/values-el/strings.xml b/facebook-login/src/main/res/values-el/strings.xml new file mode 100644 index 0000000000..b68cf0ab32 --- /dev/null +++ b/facebook-login/src/main/res/values-el/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Μου αρέσει! + Σας αρέσει + Αποσύνδεση + Σύνδεση + Συνδεθείτε μέσω Facebook + Συνέχεια με το Facebook + Έχετε συνδεθεί ως: %1$s + Έγινε σύνδεση μέσω Facebook + Αποσύνδεση + Ακύρωση + Φόρτωση... + Σφάλμα AndroidManifest + Για σύνδεση στην εφαρμογή WebView απαιτείται άδεια INTERNET + Εσείς έχετε τον έλεγχο - επιλέξτε ποιες πληροφορίες θέλετε να κοινοποιείτε στις εφαρμογές. + Παρουσιάστηκε μη αναμενόμενο σφάλμα κατά τη λήψη μιας εικόνας. + Κοινοποιήστε + Αποστολή + Πηγαίνετε στη διεύθυνση <b>facebook.com/device</b> και εισαγάγετε τον παραπάνω κωδικό. + Για να συνδέσετε το λογαριασμό σας, ανοίξτε την εφαρμογή Facebook στη φορητή συσκευή σας και ελέγξτε για ειδοποιήσεις. + - Ή - + Επιβεβαίωση σύνδεσης + Συνέχεια ως %1$s + Δεν είστε εσείς; + diff --git a/facebook-login/src/main/res/values-en-rGB/strings.xml b/facebook-login/src/main/res/values-en-rGB/strings.xml new file mode 100644 index 0000000000..22bbe4865c --- /dev/null +++ b/facebook-login/src/main/res/values-en-rGB/strings.xml @@ -0,0 +1,11 @@ + + + + + + + Loading… + AndroidManifest error + WebView login requires Internet permission + You\'re in control – choose what information you want to share with apps. + diff --git a/facebook-login/src/main/res/values-es-rES/strings.xml b/facebook-login/src/main/res/values-es-rES/strings.xml new file mode 100644 index 0000000000..d9faad9f01 --- /dev/null +++ b/facebook-login/src/main/res/values-es-rES/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Me gusta + Te gusta + Salir + Entrar + Inicia sesión con Facebook + Continuar con Facebook + Sesión iniciada como: %1$s + Has iniciado sesión con Facebook + Salir + Cancelar + Cargando… + Error de AndroidManifest + El inicio de sesión en WebView requiere permisos de INTERNET + Tú decides qué información quieres compartir con las aplicaciones. + Se ha producido un error inesperado al descargar una imagen. + Compartir + Enviar + Visita <b>facebook.com/device</b> e introduce el código que se muestra más arriba. + Para conectar tu cuenta, abre la aplicación de Facebook en tu dispositivo móvil y comprueba las notificaciones. + - O - + Confirmar inicio de sesión + Continuar como %1$s + ¿No eres tú? + diff --git a/facebook-login/src/main/res/values-es/strings.xml b/facebook-login/src/main/res/values-es/strings.xml new file mode 100644 index 0000000000..e8e0019856 --- /dev/null +++ b/facebook-login/src/main/res/values-es/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Me gusta + Te gusta + Salir + Entrar + Iniciar sesión con Facebook + Continuar con Facebook + Sesión iniciada como: %1$s + Iniciaste sesión con Facebook + Salir + Cancelar + Cargando... + Error de AndroidManifest + El inicio de sesión de WebView requiere permisos de INTERNET + Tú decides qué información quieres compartir con las aplicaciones. + Se produjo un error inesperado al descargar una imagen. + Compartir + Enviar + Ve a <b>facebook.com/device</b> e ingresa el código que se muestra arriba. + Para conectar tu cuenta, abre la aplicación de Facebook en tu dispositivo móvil y comprueba las notificaciones. + o + Confirmar inicio de sesión + Continuar como %1$s + ¿No eres tú? + diff --git a/facebook-login/src/main/res/values-fi/strings.xml b/facebook-login/src/main/res/values-fi/strings.xml new file mode 100644 index 0000000000..f2bffab231 --- /dev/null +++ b/facebook-login/src/main/res/values-fi/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Tykkää + Tykätty + Kirjaudu ulos + Kirjaudu sisään + Kirjaudu Facebook-tunnuksilla + Jatka Facebookissa + Kirjautunut sisään nimellä %1$s + Kirjauduttu sisään Facebook-tunnuksilla + Kirjaudu ulos + Peruuta + Ladataan... + AndroidManifest-virhe + WebView-sisäänkirjautuminen edellyttää Internet-lupaa + Sinä päätät - valitse mitkä tiedot haluat jakaa sovelluksille + Kuvaa ladattaessa tapahtui yllättävä virhe. + Jaa + Lähetä + Siirry osoitteeseen <b>facebook.com/device</b> ja anna oheinen koodi. + Liitä tilisi avaamalla Facebook-sovellus matkapuhelimellasi ja tarkistamalla ilmoitukset. + - TAI - + Vahvista sisäänkirjautuminen + Jatka nimellä %1$s + Etkö ole tämä henkilö? + diff --git a/facebook-login/src/main/res/values-fr/strings.xml b/facebook-login/src/main/res/values-fr/strings.xml new file mode 100644 index 0000000000..5c84a76dfb --- /dev/null +++ b/facebook-login/src/main/res/values-fr/strings.xml @@ -0,0 +1,30 @@ + + + + + + + J’aime + J’aime déjà + Déconnexion + Connectez-vous + Se connecter avec Facebook + Continuer avec Facebook + Connecté(e) en tant que : %1$s + Connecté(e) avec Facebook + Déconnexion + Annuler + Chargement... + Erreur AndroidManifest + La connexion à WebView nécessite une autorisation INTERNET + Vous avez le contrôle - choisissez les informations que vous voulez partager avec les apps. + Une erreur inattendue s’est produite lors du téléchargement d’une image. + Publier + Envoyer + Consultez <b>facebook.com/device</b> et entrez le code affiché ci-dessus. + Pour associer votre compte, ouvrez l’app Facebook sur votre appareil mobile et vérifiez les notifications. + - OU - + Confirmer la connexion + Continuer en tant que %1$s + Ce n’est pas vous ? + diff --git a/facebook-login/src/main/res/values-gu/strings.xml b/facebook-login/src/main/res/values-gu/strings.xml new file mode 100644 index 0000000000..c91af5459c --- /dev/null +++ b/facebook-login/src/main/res/values-gu/strings.xml @@ -0,0 +1,30 @@ + + + + + + + પસંદ કરો + ગમ્યું + લૉગ આઉટ કરો + લૉગ ઇન કરો + Facebook થી લૉગિન કરો + Facebook સાથે ચાલુ રાખો + %1$s: તરીકે લૉગ ઇન છે + તમે Facebook નો ઉપયોગ કરીને લોગ ઇન કર્યું છે + લૉગ આઉટ કરો + રદ કરો + લોડ થઈ રહ્યું છે… + AndroidManifest ભૂલ + WebView લૉગિનને ઇન્ટરનેટ પરવાનગીની જરૂર છે + તમે નિયંત્રણમાં છો - તમે એપ્લિકેશન્સ સાથે શું માહિતી શેર કરવા માંગો પસંદ કરો. + છબી ડાઉનલોડ કરતી વખતે એક અનપેક્ષિત ભૂલ આવી. + શેર કરો + મોકલો + <b>facebook.com/device</b&gt ની મુલકાત લો; અને ઉપર આપેલો કોડ દાખલ કરો. + તમારા એકાઉન્ટ સાથે કનેક્ટ કરવા માટે, તમારા મોબાઇલ ઉપકરણ પર Facebook એપ્લિકેશન ખોલો અને સૂચનાઓ માટે તપાસો. + - અથવા - + લૉગિનની પુષ્ટિ કરો + %1$s તરીકે ચાલુ રાખો + તમે નથી? + diff --git a/facebook-login/src/main/res/values-hi/strings.xml b/facebook-login/src/main/res/values-hi/strings.xml new file mode 100644 index 0000000000..65b19888cc --- /dev/null +++ b/facebook-login/src/main/res/values-hi/strings.xml @@ -0,0 +1,30 @@ + + + + + + + पसंद करें + पसंद किया + लॉग आउट करें + लॉग इन + Facebook से लॉग इन करें + Facebook के साथ जारी रखें + इस रूप में लॉग इन हैं: %1$s + Facebook का उपयोग करके लॉग इन किया है + लॉग आउट करें + रद्द करें + लोड हो रहा है... + AndroidManifest गलती + WebView लॉग इन के लिए इंटरनेट अनुमति आवश्यक है + नियंत्रण आपके पास है - चुनें कि आप एप्लिकेशन के साथ कौन सी जानकारी साझा करना चाहते हैं. + चित्र डाउनलोड करते समय अनपेक्षित त्रुटि हुई. + साझा करें + भेजें + <b>facebook.com/device</b> पर विज़िट करें और ऊपर दिखाया गया कोड डालें. + अपने खाते से कनेक्ट करने के लिए, अपने मोबाइल डिवाइस पर Facebook एप्लिकेशन खोलें और सूचनाएँ जाँचें. + - या - + लॉग इन कन्फ़र्म करें + %1$s के रूप में जारी रखें + आप नहीं हैं? + diff --git a/facebook-login/src/main/res/values-hr/strings.xml b/facebook-login/src/main/res/values-hr/strings.xml new file mode 100644 index 0000000000..016cdf9479 --- /dev/null +++ b/facebook-login/src/main/res/values-hr/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Sviđa mi se + Označeno sa \"sviđa mi se\" + Odjava + Prijava + Prijavi se putem Facebooka + Nastavak uz Facebook + Prijavljeni ste kao: %1$s + Prijavljeni ste putem Facebooka + Odjava + Odustani + Učitavanje... + Pogreška AndroidManifest + Prijava WebView zahtijeva dopuštenje za INTERNET + Vi odlučujete – odaberite koje informacije želite podijeliti s aplikacijama. + Neočekivana pogreška prilikom preuzimanja slike. + Podijeli + Pošalji + Posjetitw <b>facebook.com/device</b> i unesite gore prikazani kôd. + Za povezivanje svog računa otvorite aplikaciju Facebook na mobilnom uređaju i pročitajte obavijesti. + - ILI - + Potvrdi prijavu + Nastavite kao %1$s + Ovo niste vi? + diff --git a/facebook-login/src/main/res/values-hu/strings.xml b/facebook-login/src/main/res/values-hu/strings.xml new file mode 100644 index 0000000000..6dc9c20f22 --- /dev/null +++ b/facebook-login/src/main/res/values-hu/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Tetszik + Kedvelt + Kijelentkezés + Belépés + Bejelentkezés Facebookkal + Folytatás a Facebookkal + Bejelentkezve %1$s néven + Bejelentkezve a Facebook használatával + Kijelentkezés + Mégsem + Betöltés… + AndroidManifest hiba + A WebView-bejelentkezéshez „INTERNET” jogosultság szükséges. + Te irányítasz – válaszd ki, milyen adatokat szeretnél megosztani az alkalmazásokkal. + Váratlan hiba történt a kép letöltésekor. + Megosztás + Küldés + Keresd fel a <b>facebook.com/device</b> címet, és írd be a fent megjelenített kódot. + A fiók hozzákapcsolásához nyisd meg a mobilkészülékeden a Facebook alkalmazást, és nézd meg az értesítéseket. + - VAGY - + Bejelentkezés megerősítése + Folytatás mint %1$s + Nem te vagy az? + diff --git a/facebook-login/src/main/res/values-in/strings.xml b/facebook-login/src/main/res/values-in/strings.xml new file mode 100644 index 0000000000..04ea86a53a --- /dev/null +++ b/facebook-login/src/main/res/values-in/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Suka + Suka + Keluar + Masuk + Masuk dengan Facebook + Lanjutkan dengan Facebook + Masuk sebagai: %1$s + Masuk menggunakan Facebook + Keluar + Batalkan + Memuat… + Terjadi Kesalahan AndroidManifest + Masuk Tampilan Web memerlukan izin INTERNET + Anda memegang kendali - pilih info apa yang ingin Anda bagikan dengan aplikasi. + Kesalahan tak terduga ketika mengunduh gambar. + Bagikan + Kirim + Kunjungi <b>facebook.com/device</b> dan masukkan kode yang ditampilkan di bawah ini. + Untuk menghubungkan akun Anda, buka aplikasi Facebook di perangkat seluler Anda dan lihat pemberitahuan. + - ATAU - + Konfirmasikan Masuk + Lanjutkan sebagai %1$s + Bukan Anda? + diff --git a/facebook-login/src/main/res/values-it/strings.xml b/facebook-login/src/main/res/values-it/strings.xml new file mode 100644 index 0000000000..06e864c95c --- /dev/null +++ b/facebook-login/src/main/res/values-it/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Mi piace + Ti piace + Esci + Accedi + Accedi con Facebook + Continua con Facebook + Accesso effettuato come %1$s + Accesso effettuato tramite Facebook + Esci + Annulla + Caricamento in corso... + Errore AndroidManifest + L\'accesso alla visualizzazione Web richiede le autorizzazioni Internet + Il controllo è nelle tue mani: scegli quali informazioni condividere con le app. + Errore imprevisto durante il download dell\'immagine. + Condividi + Invia + Visita <b>facebook.com/device</b> e inserisci il codice mostrato qui sotto. + Per connettere il tuo account, apri l\'app Facebook dal tuo dispositivo mobile e controlla le notifiche. + - oppure - + Conferma accesso + Continua come %1$s + Non sei tu? + diff --git a/facebook-login/src/main/res/values-iw/strings.xml b/facebook-login/src/main/res/values-iw/strings.xml new file mode 100644 index 0000000000..f04525a690 --- /dev/null +++ b/facebook-login/src/main/res/values-iw/strings.xml @@ -0,0 +1,30 @@ + + + + + + + אהבתי + אהבתי + התנתק/י + התחבר + התחברות באמצעות פייסבוק + המשך/המשיכי עם פייסבוק + מחובר/ת בתור: %1$s + מחובר/ת כמשתמש בפייסבוק + התנתק/י + בטל + טוען... + שגיאת AndroidManifest + התחברות WebView דורשת הרשאת אינטרנט + את/ה בשליטה - בחר/י אילו פרטים ברצונך לשתף עם אפליקציות. + שגיאה לא צפויה במהלך הורדת תמונה. + שתף/שתפי + שלח/י + יש לבקר בכתובת facebook.com/device</b&gt ולהזין את הקוד המוצג למעלה + כדי לחבר את חשבונך, יש לפתוח את אפליקציית פייסבוק במכשיר הנייד ולבדוק אם יש התראות. + - או - + אשר/י את ההתחברות + המשך/המשיכי בתור %1$s + לא את/ה? + diff --git a/facebook-login/src/main/res/values-ja/strings.xml b/facebook-login/src/main/res/values-ja/strings.xml new file mode 100644 index 0000000000..c4ff47cc57 --- /dev/null +++ b/facebook-login/src/main/res/values-ja/strings.xml @@ -0,0 +1,30 @@ + + + + + + + いいね! + 「いいね!」しました + ログアウト + ログイン + Facebookでログイン + Facebookでログイン + %1$sとしてログイン中 + Facebookでログイン中 + ログアウト + キャンセル + 読み込み中です… + AndroidManifestエラー + WebViewにログインするには、インターネットへのアクセスが必要です + アプリと共有する情報をコントロールすることができます。 + 画像のダウンロードで何らかのエラーが発生しました。 + シェアする + 送信 + <b>facebook.com/device</b>にアクセスして、上のコードを入力してください。 + アカウントをリンクするには、モバイル機器でFacebookアプリを開いて、お知らせをご確認ください。 + - または - + ログインを実行 + %1$sとしてログイン + 別のアカウントでログイン + diff --git a/facebook-login/src/main/res/values-kn/strings.xml b/facebook-login/src/main/res/values-kn/strings.xml new file mode 100644 index 0000000000..d6ac550b0f --- /dev/null +++ b/facebook-login/src/main/res/values-kn/strings.xml @@ -0,0 +1,30 @@ + + + + + + + ಇಷ್ಟ + ಇಷ್ಟಪಟ್ಟಿದ್ದಾರೆ + ಲಾಗ್ ಔಟ್ + ಲಾಗ್ ಇನ್ + Facebook ನೊಂದಿಗೆ ಲಾಗ್ ಇನ್ ಮಾಡಿ + Facebook ನೊಂದಿಗೆ ಮುಂದುವರಿಸಿ + %1$s ಎಂದು ಲಾಗಿನ್ ಮಾಡಲಾಗಿದೆ + Facebook ಬಳಸಿ ಲಾಗಿನ್ ಮಾಡಲಾಗಿದೆ + ಲಾಗ್ ಔಟ್ + ರದ್ದುಮಾಡು + ಲೋಡ್ ಆಗುತ್ತಿದೆ... + Android ಮ್ಯಾನಿಫೆಸ್ಟ್ ದೋಷ + ವೆಬ್ ವೀಕ್ಷಣೆ ಲಾಗಿನ್‌ಗೆ ಇಂಟರ್ನೆಟ್ ಅನುಮತಿಯ ಅಗತ್ಯವಿದೆ + ನೀವು ನಿಯಂತ್ರಣದಲ್ಲಿದ್ದಿರಿ- ಅಪ್ಲಿಕೇಶನ್‌ಗಳೊಂದಿಗೆ ನೀವು ಯಾವ ಮಾಹಿತಿಯನ್ನು ಹಂಚಿಕೊಳ್ಳಬೇಕೆಂದು ಆಯ್ಕೆಮಾಡಿ. + ಚಿತ್ರವನ್ನು ಡೌನ್‌ಲೋಡ್ ಮಾಡುವಾಗ ಅನಿರೀಕ್ಷಿತ ದೋಷ. + ಹಂಚಿರಿ + ಕಳುಹಿಸಿ + <b>facebook.com/device</b> ಗೆ ಭೇಟಿ ನೀಡಿ ಮತ್ತು ಮೇಲೆ ತೋರಿಸಿದ ಕೋಡ್ ಅನ್ನು ನಮೂದಿಸಿ. + ನಿಮ್ಮ ಖಾತೆಯನ್ನು ಸಂಪರ್ಕಿಸಲು, ನಿಮ್ಮ ಮೊಬೈಲ್ ಸಾಧನದಲ್ಲಿ Facebook ಅಪ್ಲಿಕೇಶನ್ ತೆರೆಯಿರಿ ಮತ್ತು ಅಧಿಸೂಚನೆಗಳಿಗಾಗಿ ಪರಿಶೀಲಿಸಿ. + - ಅಥವಾ - + ಲಾಗಿನ್ ಖಚಿತಪಡಿಸಿ + %1$s ಎಂದು ಮುಂದುವರಿಸಿ + ನೀವಲ್ಲವೇ? + diff --git a/facebook-login/src/main/res/values-ko/strings.xml b/facebook-login/src/main/res/values-ko/strings.xml new file mode 100644 index 0000000000..1e2b9b85b1 --- /dev/null +++ b/facebook-login/src/main/res/values-ko/strings.xml @@ -0,0 +1,30 @@ + + + + + + + 좋아요 + 좋아요 + 로그아웃 + 로그인 + Facebook으로 로그인 + Facebook으로 계속하기 + 로그인 사용자: %1$s + Facebook을 사용하여 로그인함 + 로그아웃 + 취소 + 읽어들이는 중... + AndroidManifest 오류 + WebView 로그인에 인터넷 권한이 필요합니다 + 앱과 공유할 정보를 자유롭게 선택할 수 있습니다. + 이미지를 다운로드하는 중 예기치 않은 오류가 발생했습니다. + 공유하기 + 보내기 + <b>facebook.com/device</b>에 방문하여 위 코드를 입력하세요. + 계정에 연결하려면 모바일 기기에서 Facebook 앱을 열고 알림을 확인하세요. + - 또는 - + 로그인 확인 + %1$s님으로 계속 + 회원님이 아닌가요? + diff --git a/facebook-login/src/main/res/values-ml/strings.xml b/facebook-login/src/main/res/values-ml/strings.xml new file mode 100644 index 0000000000..17c55e1ea1 --- /dev/null +++ b/facebook-login/src/main/res/values-ml/strings.xml @@ -0,0 +1,30 @@ + + + + + + + ലൈക്കുചെയ്യുക + ലൈക്കുചെയ്തു + ലോഗൗട്ട് ചെയ്യുക + ലോഗിന് ചെയ്യുക + Facebook ഉപയോഗിച്ച് ലോഗിൻ ചെയ്യുക + Facebook ഉപയോഗിച്ച് തുടരുക + എന്നയാളായി ലോഗ് ഇൻ ചെയ്‌തു: %1$s + Facebook ഉപയോഗിച്ച് ലോഗിൻ ചെയ്‌തു + ലോഗൗട്ട് ചെയ്യുക + റദ്ദാക്കുക + ലോഡ് ചെയ്യുന്നു… + AndroidManifest പിശക് + WebView ലോഗിൻ ചെയ്യാൻ ഇന്റർനെറ്റ് അനുമതി ആവശ്യമാണ് + നിങ്ങൾ നിയന്ത്രണത്തിലാണ് - ആപ്പുകൾ ഉപയോഗിച്ച് നിങ്ങൾക്ക് എന്ത് വിവരമാണ് പങ്കിടേണ്ടതെന്ന് തിരഞ്ഞെടുക്കുക. + ഒരു ചിത്രം ഡൗൺലോഡുചെയ്യുമ്പോൾ അജ്ഞാതമായ പിശക് സംഭവിച്ചു. + പങ്കിടുക + അയയ്ക്കുക + <b>facebook.com/device</b> സന്ദർശിച്ച് മുകളിൽ കാണിച്ചിരിക്കുന്ന കോഡ് നൽകുക. + നിങ്ങളുടെ അക്കൗണ്ട് കണക്‌റ്റ്ചെയ്യാൻ, നിങ്ങളുടെ മൊബൈൽ ഉപകരണത്തിലെ Facebook ആപ്പ് തുറന്ന് അറിയിപ്പുകൾ പരിശോധിക്കുക. + - അല്ലെങ്കിൽ - + ലോഗിൻ സ്ഥിരീകരിക്കുക + %1$s എന്നയാളായി തുടരുക + നിങ്ങള്‍ അല്ലേ? + diff --git a/facebook-login/src/main/res/values-mr/strings.xml b/facebook-login/src/main/res/values-mr/strings.xml new file mode 100644 index 0000000000..d01142746f --- /dev/null +++ b/facebook-login/src/main/res/values-mr/strings.xml @@ -0,0 +1,30 @@ + + + + + + + आवडले + पसंत केले + लॉग आउट करा + लॉग इन करा + Facebook सह लॉग इन करा + Facebook सह चालू ठेवा + %1$s म्हणून लॉग इन केले + Facebook वापरून लॉग इन केले + लॉग आउट करा + रद्द करा + लोड करत आहे… + AndroidManifest त्रुटी + WebView लॉग इन ला इंटरनेट परवानगीची आवश्यकता आहे + तुम्ही नियंत्रणात आहात - तुम्ही अॅपसह कोणती माहिती सामायिक करू इच्छिता ते निवडा. + प्रतिमा डाउनलोड करत असताना अनपेक्षित त्रुटी आली. + शेअर करा + पाठवा + <b>facebook.com/device</b> भेट द्या आणि वरील कोड प्रविष्ट करा. + तुमचे खाते कनेक्ट करण्यासाठी, तुमच्या मोबाईल उपकरणावर Facebook अॅप उघडा आणि सूचना तपासा. + - किंवा - + लॉग इन पुष्टी करा + %1$s म्हणून चालू ठेवा + आपण नाही? + diff --git a/facebook-login/src/main/res/values-ms/strings.xml b/facebook-login/src/main/res/values-ms/strings.xml new file mode 100644 index 0000000000..203791a315 --- /dev/null +++ b/facebook-login/src/main/res/values-ms/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Suka + Disukai + Log keluar + Log masuk + Log masuk dengan Facebook + Teruskan dengan Facebook + Dilog masuk sebagai %1$s + Log masuk menggunakan Facebook + Log keluar + Batal + Memuatkan... + Ralat AndroidManifest + Log masuk WebView memerlukan kebenaran INTERNET + Anda berada dalam kawalan - pilih maklumat yang anda mahu berkongsi dengan aplikasi. + Ralat tidak dijangka semasa memuat turun imej. + Kongsi + Hantar + Lawati <b>facebook.com/device</b> dan masukkan kod yang ditunjukkan di atas. + Untuk menyambungkan akaun anda, buka aplikasi Facebook pada peranti mudah alih anda, dan semak untuk pemberitahuan. + - ATAU - + Sahkan Log Masuk + Teruskan sebagai %1$s + Bukan anda? + diff --git a/facebook-login/src/main/res/values-nb/strings.xml b/facebook-login/src/main/res/values-nb/strings.xml new file mode 100644 index 0000000000..014e5d8232 --- /dev/null +++ b/facebook-login/src/main/res/values-nb/strings.xml @@ -0,0 +1,29 @@ + + + + + + + Liker + Likt + Logg av + Logg inn + Logg inn med Facebook + Fortsett med Facebook + Logget inn som %1$s + Innlogget med Facebook + Logg av + Avbryt + Laster inn ... + AndroidManifest-feil + WebView-innlogging krever INTERNETT-tillatelse + Du bestemmer – velg hvilke opplysninger du vil dele med apper. + Det oppstod en uvented feil under nedlasting av et bilde. + Del + Gå til <b>facebook.com/device</b> og skriv inn koden som vises over. + Koble til kontoen din ved å åpne Facebook-appen på mobilenheten din og se etter varsler. + – ELLER – + Bekreft innlogging + Fortsett som %1$s + Ikke deg? + diff --git a/facebook-login/src/main/res/values-nl/strings.xml b/facebook-login/src/main/res/values-nl/strings.xml new file mode 100644 index 0000000000..32ebcc1481 --- /dev/null +++ b/facebook-login/src/main/res/values-nl/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Vind ik leuk + Vind ik leuk + Afmelden + Aanmelden + Aanmelden met Facebook + Doorgaan met Facebook + Aangemeld als: %1$s + Aangemeld via Facebook + Afmelden + Annuleren + Laden... + AndroidManifest-fout + Voor WebView-aanmelding is INTERNET-toestemming vereist + Jij hebt de controle: bepaal welke informatie je met apps wilt delen. + Onverwachte fout bij downloaden van afbeelding. + Delen + Verzenden + Ga naar <b>facebook.com/device</b> en voer de bovenstaande code in. + Als je je account wilt koppelen, open je de Facebook-app op je mobiele apparaat en controleer je je meldingen. + - OF - + Aanmelding bevestigen + Doorgaan als %1$s + Ben jij dit niet? + diff --git a/facebook-login/src/main/res/values-pa/strings.xml b/facebook-login/src/main/res/values-pa/strings.xml new file mode 100644 index 0000000000..1c52a62c58 --- /dev/null +++ b/facebook-login/src/main/res/values-pa/strings.xml @@ -0,0 +1,30 @@ + + + + + + + ਪਸੰਦ ਕਰੋ + ਪਸੰਦ ਕੀਤਾ + ਲੌਗ ਆਉਟ ਕਰੋ + ਲਾਗ ਇਨ + Facebook ਦੇ ਨਾਲ ਲੌਗ ਇਨ ਕਰੋ + Facebook ਨਾਲ ਜਾਰੀ ਰੱਖੋ + ਇਸ ਵੱਜੋਂ ਲੌਗ ਇਨ ਕੀਤਾ ਗਿਆ: %1$s + Facebook ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਲੌਗ ਇਨ ਕਰੋ + ਲੌਗ ਆਉਟ ਕਰੋ + ਰੱਦ ਕਰੋ + ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ... + AndroidManifest ਤਰੁੱਟੀ + WebView ਵਿੱਚ ਲੌਗ ਇਨ ਕਰਨ ਲਈ ਇੰਟਰਨੈੱਟ ਦੀ ਇਜਾਜ਼ਤ ਦੀ ਲੋੜ ਹੈ + ਤੁਸੀਂ ਨਿਯੰਤਰਣ ਵਿੱਚ ਹੋ - ਇਹ ਚੁਣੋ ਕਿ ਐਪਾਂ ਨਾਲ ਤੁਸੀਂ ਕਿਹੜੀ ਜਾਣਕਾਰੀ ਨੂੰ ਸਾਂਝਾ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ। + ਇੱਕ ਚਿੱਤਰ ਡਾਉਨਲੋਡ ਕਰਨ ਦੌਰਾਨ ਅਕਲਪਿਤ ਤਰੁੱਟੀ। + ਸਾਂਝਾ ਕਰੋ + ਭੇਜੋ + <b>facebook.com/device</b> \'ਤੇ ਵਿਜਿਟ ਕਰੋ ਅਤੇ ਉੱਪਰ ਦਿੱਤੇ ਕੋਡ ਨੂੰ ਦਾਖ਼ਲ ਕਰੋ। + ਆਪਣੇ ਖਾਤੇ ਨੂੰ ਕਨੈਕਟ ਕਰਨ ਲਈ, ਮੋਬਾਈਲ ਡਿਵਾਈਸ \'ਤੇ Facebook ਐਪ ਖੋਲ੍ਹੋ ਅਤੇ ਸੂਚਨਾਵਾਂ ਦੀ ਜਾਂਚ ਕਰੋ। + - ਜਾਂ - + ਲੌਗ ਇਨ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ + %1$s ਵਜੋਂ ਜਾਰੀ ਰੱਖੋ + ਇਹ ਤੁਸੀਂ ਨਹੀਂ ਹੋ? + diff --git a/facebook-login/src/main/res/values-pl/strings.xml b/facebook-login/src/main/res/values-pl/strings.xml new file mode 100644 index 0000000000..7f09f3e1b7 --- /dev/null +++ b/facebook-login/src/main/res/values-pl/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Lubię to! + Lubisz to + Wyloguj się + Logowanie się + Zaloguj się przez Facebooka + Kontynuuj za pośrednictwem Facebooka + Zalogowano jako: %1$s + Zalogowano przy użyciu Facebooka + Wyloguj się + Anuluj + Ładowanie… + Błąd AndroidManifest + Logowanie WebView wymaga uprawnienia INTERNET + Zachowujesz kontrolę — wybierz informacje, które chcesz udostępniać w aplikacjach. + Nieoczekiwany błąd podczas pobierania obrazu. + Udostępnij + Wyślij + Odwiedź stronę <b>facebook.com/device</b> i wprowadź powyższy kod. + Aby połączyć konto, otwórz aplikację Facebook na urządzeniu mobilnym i sprawdź powiadomienia. + - LUB - + Potwierdź logowanie + Kontynuuj jako %1$s + To nie Ty? + diff --git a/facebook-login/src/main/res/values-pt-rPT/strings.xml b/facebook-login/src/main/res/values-pt-rPT/strings.xml new file mode 100644 index 0000000000..c4c84ff99d --- /dev/null +++ b/facebook-login/src/main/res/values-pt-rPT/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Gosto + Gostaste + Terminar a sessão + Iniciar sessão + Iniciar sessão com o Facebook + Continuar com o Facebook + Com sessão iniciada como %1$s + Com sessão iniciada com o Facebook + Terminar a sessão + Cancelar + A carregar... + Erro AndroidManifest + O início de sessão WebView requer a permissão INTERNET + Tens o controlo. Escolhe as informações que queres partilhar com as apps. + Ocorreu um erro inesperado ao descarregar uma imagem. + Partilhar + Enviar + Visita <b>facebook.com/device</b> e insere o código apresentado abaixo. + Para associares a tua conta, abre a app Facebook no teu dispositivo móvel e consulta as notificações. + - OU - + Confirmar início de sessão + Continuar como %1$s + Não és tu? + diff --git a/facebook-login/src/main/res/values-pt/strings.xml b/facebook-login/src/main/res/values-pt/strings.xml new file mode 100644 index 0000000000..129a4baa7a --- /dev/null +++ b/facebook-login/src/main/res/values-pt/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Curtir + Curtiu + Sair + Entrar + Entrar com o Facebook + Continuar com o Facebook + Conectado como: %1$s + Conectado usando o Facebook + Sair + Cancelar + Carregando... + Erro AndroidManifest + O login do WebView exige permissão da INTERNET + Você está no controle — escolha quais informações você quer compartilhar com os aplicativos. + Erro inesperado ao baixar uma imagem. + Compartilhar + Enviar + Acesse <b>facebook.com/device</b> e insira o código mostrado acima. + Para conectar sua conta, abra o aplicativo do Facebook no seu dispositivo móvel e verifique se há notificações. + - OU - + Confirmar login + Continuar como %1$s + Não é você? + diff --git a/facebook-login/src/main/res/values-ru/strings.xml b/facebook-login/src/main/res/values-ru/strings.xml new file mode 100644 index 0000000000..a3a7568a6f --- /dev/null +++ b/facebook-login/src/main/res/values-ru/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Нравится + Нравится + Выйти + Войти + Вход через Facebook + Продолжить с Facebook + Вы вошли как %1$s + Выполнен вход через Facebook + Выйти + Отмена + Загрузка... + Ошибка AndroidManifest + Для входа через WebView необходимо разрешение INTERNET + Контроль над данными — выберите, какой информацией вы хотите делиться с приложениями. + Неожиданная ошибка при скачивании изображения. + Поделиться + Отправить + Откройте <b>facebook.com/device</b> и введите код, показанный выше. + Чтобы привязать ваш аккаунт, откройте приложение Facebook на своем мобильном устройстве и проверьте уведомления. + - ИЛИ - + Подтвердите вход + Продолжить как %1$s + Не Вы? + diff --git a/facebook-login/src/main/res/values-sk/strings.xml b/facebook-login/src/main/res/values-sk/strings.xml new file mode 100644 index 0000000000..3c03ba9828 --- /dev/null +++ b/facebook-login/src/main/res/values-sk/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Páči sa mi to + Páčilo sa mi to + Odhlásiť sa + Prihlásiť sa + Prihlásiť sa cez Facebook + Pokračovať s Facebookom + Prihlásený/-á ako: %1$s + Prihlásený/-á cez Facebook + Odhlásiť sa + Zrušiť + Načítava sa… + Chyba AndroidManifest + Na prihlásenie cez WebView sa vyžaduje povolenie internetu + Máte to pod kontrolou: vy určujete, ktoré informácie chcete zdieľať s aplikáciami. + Pri sťahovaní obrázka sa vyskytla neočakávaná chyba. + Zdieľať + Poslať + Navštívte stránku <b>facebook.com/device</b> a zadajte kód zobrazený vyššie. + Ak si chcete pripojiť účet, vo svojom mobilnom zariadení otvorte aplikáciu Facebook a pozrite si upozornenia. + - ALEBO - + Potvrdiť prihlásenie + Pokračovať ako %1$s + Nie ste to vy? + diff --git a/facebook-login/src/main/res/values-sv/strings.xml b/facebook-login/src/main/res/values-sv/strings.xml new file mode 100644 index 0000000000..cf95c35ad3 --- /dev/null +++ b/facebook-login/src/main/res/values-sv/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Gilla + Gillat + Logga ut + Logga in + Logga in med Facebook + Fortsätt med Facebook + Inloggad som: %1$s + Inloggad med Facebook + Logga ut + Avbryt + Laddar ... + AndroidManifest-fel + WebView-inloggning kräver INTERNET-åtkomst + Du bestämmer – välj vilken information du vill dela med appar. + Ett oväntat fel inträffade när en bild skulle laddas ned. + Dela + Skicka + Gå till <b>facebook.com/device</b> och skriv in koden som visas ovan. + Koppla ditt konto genom att öppna Facebook-appen på din mobila enhet och leta efter aviseringar. + - ELLER - + Bekräfta inloggning + Fortsätt som %1$s + Inte du? + diff --git a/facebook-login/src/main/res/values-ta/strings.xml b/facebook-login/src/main/res/values-ta/strings.xml new file mode 100644 index 0000000000..7508b4d257 --- /dev/null +++ b/facebook-login/src/main/res/values-ta/strings.xml @@ -0,0 +1,30 @@ + + + + + + + பிடித்திருக்கிறது + விரும்பியவை + வெளியேறு + உள்நுழையவும் + Facebook மூலம் உள்நுழையவும் + Facebook மூலம் தொடரவும் + %1$s ஆக உள்நுழைந்துள்ளீர்கள் + Facebook ஐப் பயன்படுத்தி உள்நுழைந்துள்ளீர்கள் + வெளியேறு + ரத்துசெய் + ஏற்றுகிறது… + AndroidManifest பிழை + WebView உள்நுழைவுக்கு இணைய அனுமதித் தேவை + கட்டுப்பாடு உங்களிடம் உள்ளது. பயன்பாடுகளுடன் நீங்கள் பகிர விரும்பும் தகவல்களைத் தேர்வுசெய்யவும். + படத்தைப் பதிவிறக்கும்போது எதிர்பாராத பிழை ஏற்பட்டது. + பகிர் + அனுப்பு + <b>facebook.com/device</b> ஐப் பார்வையிட்டு, மேலே காட்டப்பட்ட குறியீட்டை உள்ளிடவும். + உங்கள் கணக்கை இணைக்க, உங்கள் மொபைல் சாதனத்தில் Facebook பயன்பாட்டைத் திறந்து, அறிவிப்புகளைப் பார்க்கவும். + - அல்லது - + உள்நுழைதலை உறுதிப்படுத்தவும் + %1$s ஆகத் தொடர் + நீங்கள் அல்ல? + diff --git a/facebook-login/src/main/res/values-te/strings.xml b/facebook-login/src/main/res/values-te/strings.xml new file mode 100644 index 0000000000..d8546f72cb --- /dev/null +++ b/facebook-login/src/main/res/values-te/strings.xml @@ -0,0 +1,30 @@ + + + + + + + ఇష్టం + ఇష్టపడ్డారు + లాగ్ అవుట్ చేయండి + లాగిన్ + Facebookతో లాగిన్ చేయండి + Facebookతో కొనసాగించు + వీరి వలె లాగిన్ చేసారు: %1$s + Facebookని ఉపయోగించి లాగిన్ చేసారు + లాగ్ అవుట్ చేయండి + రద్దు చేయి + లోడ్ చేస్తోంది… + AndroidManifest లోపం + WebView లాగిన్ కోసం ఇంటర్నెట్ అనుమతి అవసరమవుతుంది + మీరు నియంత్రణలో ఉన్నారు - మీరు ఏ సమాచారాన్ని అనువర్తనాలతో పంచుకోవాలనుకుంటున్నారో ఎంచుకోండి. + ఒక చిత్రాన్ని డౌన్‌లోడ్ చేయడంలో అనుకోని లోపం సంభవించింది. + భాగస్వామ్యం చేయి + పంపండి + <b>facebook.com/device</b>ని సందర్శించి ఎగువన చూపిన కోడ్‌ను నమోదు చేయండి. + మీ ఖాతాను అనుసంధానించేందుకు, మీ మొబైల్ పరికరంలో Facebook అనువర్తనాన్ని తెరిచి నోటిఫికేషన్‌లను తనిఖీ చేయండి. + - లేదా - + లాగిన్‌ను నిర్ధారించండి + %1$sగా కొనసాగండి + మీరు కాదా? + diff --git a/facebook-login/src/main/res/values-th/strings.xml b/facebook-login/src/main/res/values-th/strings.xml new file mode 100644 index 0000000000..d39dedcabe --- /dev/null +++ b/facebook-login/src/main/res/values-th/strings.xml @@ -0,0 +1,30 @@ + + + + + + + ถูกใจ + ถูกใจแล้ว + ออกจากระบบ + เข้าสู่ระบบ + เข้าสู่ระบบด้วย Facebook + ดำเนินการต่อด้วย Facebook + เข้าสู่ระบบแล้วในชื่อ %1$s + เข้าสู่ระบบแล้วโดยใช้ Facebook + ออกจากระบบ + ยกเลิก + กำลังโหลด... + ข้อผิดพลาด AndroidManifest + การเข้าสู่ระบบ WebView ต้องได้รับสิทธิ์การอนุญาตอินเทอร์เน็ต + คุณควบคุมได้ เลือกว่าคุณต้องการแชร์ข้อมูลใดกับแอพ + เกิดข้อผิดพลาดที่ไม่คาดคิดขณะดาวน์โหลดภาพ + แชร์ + ส่ง + ไปที่ <b>facebook.com/device</b> แล้วป้อนรหัสที่ปรากฏด้านล่าง + หากต้องการเชื่อมต่อกับบัญชีผู้ใช้ของคุณ ให้เปิดแอพ Facebook บนอุปกรณ์มือถือของคุณแล้วตรวจสอบการแจ้งเตือน + - หรือ - + ยืนยันการเข้าสู่ระบบ + ดำเนินการต่อในชื่อ %1$s + ไม่ใช่คุณใช่ไหม + diff --git a/facebook-login/src/main/res/values-tl/strings.xml b/facebook-login/src/main/res/values-tl/strings.xml new file mode 100644 index 0000000000..a276ac020c --- /dev/null +++ b/facebook-login/src/main/res/values-tl/strings.xml @@ -0,0 +1,29 @@ + + + + + + + Gusto ko ito + Nagustuhan + Mag-log out + Mag-log in + Mag-log in sa Facebook + Magpatuloy gamit ang Facebook + Mag-log-in bilang: %1$s. + Naka-log in gamit ang Facebook + Mag-log out + Kanselahin + Naglo-load... + Ang pag-log in sa WebView ay nangangailangan ng pahintulot sa INTERNET + Ikaw ang may kontrol - piliin anong impormasyon ang gusto mong i-share sa mga app. + Hindi inaasahang error habang dina-download ang larawan. + I-share + Ipadala + Puntahan ang <b>facebook.com/device</b> at ilagay ang code na ipinapakita sa itaas. + Para ikonekta ang iyong account, buksan ang Facebook app sa iyong cellphone at tumingin ng mga notification. + - O - + I-confirm ang Pag-log in + Magpatuloy bilang %1$s + Hindi ikaw? + diff --git a/facebook-login/src/main/res/values-tr/strings.xml b/facebook-login/src/main/res/values-tr/strings.xml new file mode 100644 index 0000000000..c77ce01e4c --- /dev/null +++ b/facebook-login/src/main/res/values-tr/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Beğen + Beğendin + Çıkış Yap + Giriş yap + Facebook ile Giriş Yap + Facebook ile Devam Et + %1$s olarak giriş yapıldı + Facebook ile giriş yapıldı + Çıkış Yap + İptal + Yükleniyor... + AndroidManifest Hatası + WebView girişi için İNTERNET izni gerekiyor + Kontrol sende - uygulamalarla paylaşmak istediğin bilgileri seç. + Görüntü indirilirken beklenmedik bir hata oluştu. + Paylaş + Gönder + <b>facebook.com/device</b> adresine git ve yukarıda gösterilen kodu gir. + Hesabını bağlamak için, mobil cihazında Facebook uygulamasını aç ve bildirimleri kontrol et. + - VEYA - + Girişi Onayla + %1$s olarak devam et + Siz değil misiniz? + diff --git a/facebook-login/src/main/res/values-vi/strings.xml b/facebook-login/src/main/res/values-vi/strings.xml new file mode 100644 index 0000000000..90901c711b --- /dev/null +++ b/facebook-login/src/main/res/values-vi/strings.xml @@ -0,0 +1,30 @@ + + + + + + + Thích + Đã thích + Đăng xuất + Đăng nhập + Đăng nhập bằng Facebook + Tiếp tục với Facebook + Đã đăng nhập với tên: %1$s + Đã đăng nhập bằng Facebook + Đăng xuất + Hủy + Đang tải… + Lỗi AndroidManifest + Đăng nhập chế độ xem web yêu cầu quyền INTERNET + Bạn nắm quyền kiểm soát - chọn thông tin bạn muốn chia sẻ với ứng dụng. + Lỗi không mong muốn khi tải hình ảnh xuống. + Chia sẻ + Gửi + Truy cập <b>facebook.com/device</b> và nhập mã được hiển thị bên trên. + Để kết nối tài khoản của bạn, hãy mở ứng dụng Facebook trên thiết bị di động và kiểm tra thông báo. + - HOẶC - + Xác nhận đăng nhập + Tiếp tục với tư cách %1$s + Không phải bạn? + diff --git a/facebook-login/src/main/res/values-zh-rCN/strings.xml b/facebook-login/src/main/res/values-zh-rCN/strings.xml new file mode 100644 index 0000000000..125758e720 --- /dev/null +++ b/facebook-login/src/main/res/values-zh-rCN/strings.xml @@ -0,0 +1,30 @@ + + + + + + + + 赞了 + 注销 + 登录 + 使用 Facebook 登录 + 前往 Facebook + 登录身份:%1$s + 已通过 Facebook 登录 + 注销 + 取消 + 正在加载... + AndroidManifest 错误 + WebView 登录需要访问网络 + 应用分享内容由你掌控。 + 下载图片时出现意外错误。 + 分享 + 发送 + 请访问<b>facebook.com/device</b>并输入以上验证码。 + 要关联帐户,请在移动设备上打开 Facebook 应用并查看通知。 + - 或 - + 确认登录 + 以%1$s的身份继续 + 不是你? + diff --git a/facebook-login/src/main/res/values-zh-rHK/strings.xml b/facebook-login/src/main/res/values-zh-rHK/strings.xml new file mode 100644 index 0000000000..13d2ecfcfc --- /dev/null +++ b/facebook-login/src/main/res/values-zh-rHK/strings.xml @@ -0,0 +1,30 @@ + + + + + + + 讚好 + 已讚好 + 登出 + 登入 + 使用 Facebook 登入 + 繼續使用 Facebook 帳戶 + 以%1$s身分登入 + 已使用 Facebook 登入 + 登出 + 取消 + 載入中...... + AndroidManifest 錯誤 + WebView 登入需要網絡使用權限 + 一切由你掌握:自行選擇要分享給應用程式的資訊種類。 + 下載圖像時發生沒有預期的錯誤。 + 分享 + 送出 + 前往<b>facebook.com/device</b&gt,並輸入上方顯示的代碼。 + 若要連結帳戶,請在流動裝置上開啟 Facebook 應用程式,然後查看通知。 + - 或 - + 確認登入 + 以%1$s的身分繼續 + 不是你嗎? + diff --git a/facebook-login/src/main/res/values-zh-rTW/strings.xml b/facebook-login/src/main/res/values-zh-rTW/strings.xml new file mode 100644 index 0000000000..8f08dc11e9 --- /dev/null +++ b/facebook-login/src/main/res/values-zh-rTW/strings.xml @@ -0,0 +1,30 @@ + + + + + + + + 已說讚 + 登出 + 登入 + 使用 Facebook 帳號登入 + 繼續使用 Facebook 帳號 + 以%1$s身分登入 + 已使用 Facebook 登入 + 登出 + 取消 + 載入中...... + AndroidManifest 錯誤 + WebView 登入需要網路使用權限 + 一切操之在你:自行選擇要分享給應用程式的資訊種類。 + 下載圖像時無預警發生錯誤。 + 分享 + 送出 + 前往<b>facebook.com/device</b&gt,並輸入上方顯示的代碼。 + 若要連結帳號,請在行動裝置上開啟 Facebook 應用程式,然後查看通知。 + - 或 - + 確認登入 + 以%1$s的身分繼續 + 不是你? + diff --git a/facebook-login/src/main/res/values/attrs.xml b/facebook-login/src/main/res/values/attrs.xml new file mode 100644 index 0000000000..de33f5492e --- /dev/null +++ b/facebook-login/src/main/res/values/attrs.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/facebook/src/main/res/values/dimens.xml b/facebook-login/src/main/res/values/dimens.xml similarity index 79% rename from facebook/src/main/res/values/dimens.xml rename to facebook-login/src/main/res/values/dimens.xml index 0739a3225e..8f968aaf75 100644 --- a/facebook/src/main/res/values/dimens.xml +++ b/facebook-login/src/main/res/values/dimens.xml @@ -20,10 +20,10 @@ --> - 2dp - - 4dp - 2dp 3dp + + 50dp + 100dp + 180dp + diff --git a/facebook-login/src/main/res/values/strings.xml b/facebook-login/src/main/res/values/strings.xml new file mode 100644 index 0000000000..af7262eaad --- /dev/null +++ b/facebook-login/src/main/res/values/strings.xml @@ -0,0 +1,45 @@ + + + + Like + Liked + Log out + Log in + Log in with Facebook + Continue with Facebook + Logged in as: %1$s + Logged in using Facebook + Log out + Cancel + Loading… + AndroidManifest Error + WebView login requires INTERNET permission + You\'re in control - choose what info you want to share with apps. + Unexpected error while downloading an image. + Share + Send + Visit <b>facebook.com/device</b> and enter the code shown above. + To connect your account, open the Facebook app on your mobile device and check for notifications. + - OR - + Confirm Login + Continue as %1$s + Not you? + diff --git a/facebook-login/src/main/res/values/styles.xml b/facebook-login/src/main/res/values/styles.xml new file mode 100644 index 0000000000..b930e2c1f7 --- /dev/null +++ b/facebook-login/src/main/res/values/styles.xml @@ -0,0 +1,50 @@ + + + + + #4267b2 + #f4f6f8 + #e9eaf0 + + + + + + + + diff --git a/facebook-messenger/.gitignore b/facebook-messenger/.gitignore new file mode 100644 index 0000000000..796b96d1c4 --- /dev/null +++ b/facebook-messenger/.gitignore @@ -0,0 +1 @@ +/build diff --git a/facebook-messenger/build.gradle b/facebook-messenger/build.gradle new file mode 100644 index 0000000000..cfb6a4346d --- /dev/null +++ b/facebook-messenger/build.gradle @@ -0,0 +1,47 @@ +apply plugin: 'com.android.library' + +project.group 'com.facebook.android' + +project.ext.name = 'Facebook-Messenger-Android-SDK' +project.ext.artifactId = "facebook-messenger" +project.ext.description = 'Facebook Messenger Android SDK' +project.ext.url = 'https://github.com/facebook/facebook-android-sdk/facebook-messenger' + +dependencies { + // Facebook Dependencies + compile project(':facebook-core') +} + +android { + compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION) + buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION + + defaultConfig { + minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION) + targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION) + consumerProguardFiles 'proguard-rules.pro' + vectorDrawables.useSupportLibrary = true + } + + aaptOptions { + additionalParameters "--no-version-vectors" + } + + lintOptions { + abortOnError false + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_7 + targetCompatibility JavaVersion.VERSION_1_7 + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +apply from: "${rootDir}/maven.gradle" diff --git a/facebook-messenger/proguard-rules.pro b/facebook-messenger/proguard-rules.pro new file mode 100644 index 0000000000..b19a92289b --- /dev/null +++ b/facebook-messenger/proguard-rules.pro @@ -0,0 +1,33 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +-keepclassmembers class * implements java.io.Serializable { + private static final java.io.ObjectStreamField[] serialPersistentFields; + private void writeObject(java.io.ObjectOutputStream); + private void readObject(java.io.ObjectInputStream); + java.lang.Object writeReplace(); + java.lang.Object readResolve(); +} + +-keepnames class com.facebook.FacebookActivity +-keepnames class com.facebook.CustomTabActivity + +-keep class com.facebook.messenger.Messenger diff --git a/facebook-messenger/src/main/AndroidManifest.xml b/facebook-messenger/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..54dc913867 --- /dev/null +++ b/facebook-messenger/src/main/AndroidManifest.xml @@ -0,0 +1,29 @@ + + + + + + + + + + diff --git a/facebook-messenger/src/main/java/com/facebook/messenger/Messenger.java b/facebook-messenger/src/main/java/com/facebook/messenger/Messenger.java new file mode 100644 index 0000000000..9c3becd91b --- /dev/null +++ b/facebook-messenger/src/main/java/com/facebook/messenger/Messenger.java @@ -0,0 +1,5 @@ +// Copyright 2004-present Facebook. All Rights Reserved. + +package com.facebook.messenger; + +public class Messenger { } diff --git a/facebook/src/main/java/com/facebook/messenger/MessengerThreadParams.java b/facebook-messenger/src/main/java/com/facebook/messenger/MessengerThreadParams.java similarity index 99% rename from facebook/src/main/java/com/facebook/messenger/MessengerThreadParams.java rename to facebook-messenger/src/main/java/com/facebook/messenger/MessengerThreadParams.java index dcc1ff52a6..3f7bd0a0b1 100644 --- a/facebook/src/main/java/com/facebook/messenger/MessengerThreadParams.java +++ b/facebook-messenger/src/main/java/com/facebook/messenger/MessengerThreadParams.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, diff --git a/facebook/src/main/java/com/facebook/messenger/MessengerUtils.java b/facebook-messenger/src/main/java/com/facebook/messenger/MessengerUtils.java similarity index 99% rename from facebook/src/main/java/com/facebook/messenger/MessengerUtils.java rename to facebook-messenger/src/main/java/com/facebook/messenger/MessengerUtils.java index a5b63ee247..38f16166ac 100644 --- a/facebook/src/main/java/com/facebook/messenger/MessengerUtils.java +++ b/facebook-messenger/src/main/java/com/facebook/messenger/MessengerUtils.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, @@ -25,7 +25,6 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; -import android.content.pm.PackageManager; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; diff --git a/facebook/src/main/java/com/facebook/messenger/ShareToMessengerParams.java b/facebook-messenger/src/main/java/com/facebook/messenger/ShareToMessengerParams.java similarity index 99% rename from facebook/src/main/java/com/facebook/messenger/ShareToMessengerParams.java rename to facebook-messenger/src/main/java/com/facebook/messenger/ShareToMessengerParams.java index 9bb4133843..a7dfe04edb 100644 --- a/facebook/src/main/java/com/facebook/messenger/ShareToMessengerParams.java +++ b/facebook-messenger/src/main/java/com/facebook/messenger/ShareToMessengerParams.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, diff --git a/facebook/src/main/java/com/facebook/messenger/ShareToMessengerParamsBuilder.java b/facebook-messenger/src/main/java/com/facebook/messenger/ShareToMessengerParamsBuilder.java similarity index 99% rename from facebook/src/main/java/com/facebook/messenger/ShareToMessengerParamsBuilder.java rename to facebook-messenger/src/main/java/com/facebook/messenger/ShareToMessengerParamsBuilder.java index ad42d6c28c..a204fe65e2 100644 --- a/facebook/src/main/java/com/facebook/messenger/ShareToMessengerParamsBuilder.java +++ b/facebook-messenger/src/main/java/com/facebook/messenger/ShareToMessengerParamsBuilder.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014-present, Facebook, Inc. All rights reserved. * * You are hereby granted a non-exclusive, worldwide, royalty-free license to use, diff --git a/facebook-messenger/src/main/res/drawable-hdpi/messenger_bubble_large_blue.png b/facebook-messenger/src/main/res/drawable-hdpi/messenger_bubble_large_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..4281f5bb22b3cb11fd2801b05cbaf781922322ef GIT binary patch literal 636 zcmV-?0)zdDP)bj&#Q zh=>?Xg=Yf7K|O|{8HKDNNJxx10wT;@^$t3W-X}mbQ175ZF%}DmGK(o7IcTc`ETD7w zxm1~n@zPcxoy$cQUzciv0Lx4uqedYGF
    %p3FK$!Hvc**D=*5dEKM0MFlz>l0%^ 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 VfoGC_w1@xz002ovPDHLkV1j0Du@V3P literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..88da066694d02ad21cf9a6358e87498e71724cf7 GIT binary patch literal 406 zcmV;H0crk;P)5XIlxwq0$rwm0fir;FOKifx;HA6rd~F1BrFa?gwY{8%RUoZrWpJM+Yjq+ZE% ziuuwX=0_eN82~)v8~>+RF?0q-j$j;+5ypTckCi1adWys*KoV)< zxne?K9w3F}Ga;e#|2$9)@DS=gO=Lkk41C`LeH!m+LIv84n9qPu;0ZeH*XXticY83V z5!)kFVA+8ABJ-i&Y)^so65mRJC4cs(L7n(@p#l>+!K*k>7T^_(B3KYz(b#PddAIrv zO$aS=jYi-GjBW5OiWl0O5-&Q>0_c{p>Es^91VeX?;6^ZQz@!+o05S+Xgbvwb1T6tl z$TIg3IcTmb3b-;+5go%kCMY;yNjz7Q5QwB~iRMd~cNfX#8dH_2bI^19ut;e zfj(e`g*y(TJ2-G}!E0>O8%(WW^qob}IdL@{IWxa@=lid|Qr$~; zcX#g*0xim(X%T|=Y7T!yDz;#&O{C(Z+~Y17h15pjBK7z`EI@9H_$Otc5lU+kJ01?T zg$oT-ihQBdFz*(N&{ZikFbQkzBM{D5g05a9KacC07aBN&c_#=qdd34Ch=m7MVBD3^ zz&4D#Kny&QkDo@*I$$2=Z3_+bL)SGDQ20Eg`$)dvx4_5QFEpTmt`Y3Pyf%!(RvMuJ zC!9iQXK)hxFJwY#nNt4AuTc!SmE!d)k~&fcDV-w2?6{rvm_$ehy;`f@yOA0000 zwYRsQGiOe0Z0xdS%gV~ifLx$m$BrEX>II5SojP^OlqvJ)&zF*ta&~sk$;nx_ZXM7i z$;rule0<&A-Hwiq2?+^iW@g&j+M1f0KoV#;kO3rtRs)R!x==<&2I34YEiIN%t{p(< z`jrIv1v4lvDwG0ExLyLo$ys5uF#Te)*s=!tqsTHBeZ8jG6>>4>OX zx^fDL%gRf*T51S8>9~s-tD0EbndwBVLdT}fq`+0r;B4q1>=%ykCT`k z8CV{8@@+J3zp?7>jmrP#tL|RT+jl>k?@r61u2q?P*p^>!&LGF~Ve# z@`RpgXP16%Rk9c1{#l~8I`x5i%8bnJ{}Gv&ISx*a)e3*HB1rFMLHOBgS|yDYfJfBj;*P^HKRH@~((ozxqLRZi59m|$v-wC+Ho2U8m+l;vP8ZY0?5VcE+ zcm6)5NS;Yf<0<0-<)t=E62Ye=8tfLfboPk{d(C)sHN!1&^Tmzt4W1cu%{u#0Z_9!O zt{n1jI9q*kY9hP-uJ^84y-p(`^eF#CQ|4&*58la#8_anBT;z%`R9HJ*gKP0h!y z*(>Ks7l_>SeUZ7Td&l#Ke|y%Y{mv16m-E@6cx8n_?)^9W=YE)f@|yW?d;VLG3(CGb ze6g^(GuP3U@6m6|d2#pb_U*H~7dLOmFH4ax>ln5hyu7~k&)-5|%3$zx^>bP0l+XkK DoKQc} literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..02d034cd3717d57b3508042a12fdc9805a34c556 GIT binary patch literal 834 zcmV-I1HJr-P)to~5%3Y95c7z0+mfF$1y&Z9c#a}6Tb=U>5#Tl;m$}VeOm9ej+QR{40A9>(fL?0N z9c2QZjE;Uxba)0xGM=$FUHNGccaW38+UCbmgus$1DNn>GiX?t3oEia1PIavU<~Wex zE9e1ETI|1D`01d=_j5D~aAe)@#<2!bJd;J717*Qr-F-n-11Pow>$NW^W>S29NvGd^ z&;o7$6<+FTC=a}GKACJYpzCQ}VYmkuRUx=2gl@0dx35qIH_} z(=Da#7cdhf`DyU#nz|Ult6BjSEROt2v5fvPcqCth_L)@jem0r6qS^*l+Cl+aFh%|k znu@uMUJsSa{|D1~;Z^P2pWkGl{V*Rn=;*ywNia#b2oL2&+c$vB!d`==EPG^-BVq`} zP=2I|@qPyQ5;RJ~G>$7-?A$ZhtE#Z183=He1MnT02H^c`jkbQ3X_En;KeTF|J!*{1 zLY>Z6Knk>Lg8z37ChQ>;DSdC*T&@>t?ZmaUc0ka^;t`<(->Q^N%_eoV?gEiD=H^|S z=cAhrn19I|pQijYiW|!aycxOBBntd6CF3=FGbA7NlCXeYW}Zs?%WJ(nQ|B;yG9^6A zN9V^)Z2qdoBNM3$I3v8&lpm@=ZWV9=95r|~{H(Mcj+i;^8?#ry1JEk4$>4uH-p#w8NTB-_GP<(x4`e385;$B0rNmI@yE$WxrB$Z3TG9rZ)!&wh-64Zp8x;= M07*qoM6N<$f-EhA0ssI2 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..d15e747c1aff6d7ba1cd7c757a15f018c14ade49 GIT binary patch literal 713 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..a9c23b5355e70a6f992f56dd0440cd151cca3fc1 GIT binary patch literal 1043 zcmV+u1nm2XP)`wpmOJ3Hy)wQaw8c8G) zi9{liNF)-`a3B*%&Z^?rLp@!+MLhTG=~Jei=N9!;$=Ov;SFy(oXzPGJOb?4W+8QnR0_JJ@SRLC(^pJ~82a zSv<=~W62n?_>K8PrAz)Po}=YhMrvAe#uvwZDh=^Ii>VPD#Ps5LL#1K9VX<`;$5i5Z zPfuy07F)*D-75CR6US>R4fi#RwWD0haN@XKB@%D9m^+5Ut3;;nRB{$ne^-gj-!1l9 zfnmh)m`bERW^1U8oYloa%-R}i!||+2*{rY5K*i1P9sl&F9cx!9U~Nsoa6A*Z7TI}__Q|Iz z1Ngk;tSkk^gyc7s3O*e&K_9CG@_-U0#T+Z5s^7Pb%%p zrG3^N8Dp1ETKV6plKvbrK_9BL>5Y;xVvod(ERJ2&uPS}*igF-OoA*NrhUdXHgSh8^ zlTR2%TC63Gw|d;~pt3XlfNkD~Bp8k}+W0|!R1Rh=DUcRR4b)4rVss!f#tz&~I3r{w zy?w%%SXsbM_U-w{34jT5RyoK@gs6YDmrp5**KwgS_zP>JjSuK{m22 z*3;ATRci1k2~LaIO0+JBL0d~LIPO%5+&iTa|ik8B>bm8NgXWbdNi*}qj|DVpeA@@mPMMtYDEhajaY7-zmBT{iYsged+=`0zPMXbz5;9rk4tRyI~nBoc{4B9Ul5e*wi;n1e8jNGSjS N002ovPDHLkV1nV`@fZLA literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7180963f70b1aa513e810d01213e86d79c63a9bd GIT binary patch literal 890 zcmV-=1BLvFP)2x}sPFGY^^bAU(4JKeMcHr=JJFphx&=Mu^OsJ3Y75d=>3L#n{PM|-&3YAeFKwX@H z?9QMb9#nCdd(Z@NFuFK2!9A*s^E=KU*qy;2RvzYF^g{v6st`kPpVh{B8rxx&w&Q85 zjPo`w!fIW_+h&jR8p2@J!tlCT<2;4)uzKh5RItan3mc$H8*o=J2kHsc>KUwYzC}J% zD<9t)JK!v`oL>+s{bIyGlMyOSHsWzlB8(^lXCSLM z#K2pLxJ%|hKf;J|Py)|McvPN=KIjF1`cdXU?IF8-l(qX9FXIA4E5J0ohPndBx$R^Q zG#@f6L@f^|17YyDjri*N+m;u606SmiKu007=01*3V&Sb5_}}hrN+J&;9g#UuG-TD) zkB|3>hmj&t3wPVS?w`npXfZMe%7u)E2z<=1k&GfrM;AQo^g7=m9f6c5b08T_5`7+Y zeSpz;!NX5k5&}-TvRk+vb{oRiiNWu`o&*f!F z$Gnj;2ik=|+KLCAj!VknGVJRua83U_WVBo6KocR_K0IdkK7R9Ymek(I=kU1X(}amK z2WkwFj^ml@Z~H!$!Jk@s`1lWD4`kL@=0KkcUPX8r&tbIS1Gqxeb^6%%VIySssqAO; z5%5(QK1D~QB9IDE#qK7ErI1~O5$8dJ;H`KJM7X3UvXw9cMl{%nfj;tmbfHWi8FlQs z397fr$V2;|pn5+UeQj(hRBc%>uB^U_6sT4TUJcge=NeG0n!&!qV**rZf*JP*-G?2p zdOLBSSvOHVhCQ%qd+eVun>o^ESgp-?%u2TaPl8pNgnO-cuXHlZEDbfSd^33x%xVeV zu(_lM+JirB4(WliFi)9b1O`gRVuV4oFw90p;r~tw43vlAc*gE^U&r5Qi2fLfDc6le zKQzSO;&;odHP8~gXVbY1v=6`9bS?v3MmhJFl=VRMaKBBb)9G|NozD6d19zOV07*qoM6N<$f~eV|dH?_b literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..49117bc6e4f4cb1f0e74a520bcc274c65ab0b445 GIT binary patch literal 5226 zcmV-w6qW0VP)6u-mFwsOW(dhpF@3}}4F*r$}klmT?zSqSDniyCm?D@LhV@banrWt48 zF^VH(OcC1REsrU({; zb*D&de7l;vQ8jH@ue1kg@W$RZ@Z#&fl3ob+na&=tZt@nW0eb>I6e%txNn(H!>eE>) z8PkU(XJW@r2W%rKt5svwx~vmyi{79?{G)NN`KjCFm%Pb=8ha?(an4BuqyoyM$+)G4 ztqiBB^g%|@#eH_Wph`XcnWGCw`IM)S>+xOlF zDnrJ(Nq~-0xu%-F^2CIS;k?sqIA!PN7RWrT2H@fzK#d(qf6&Vv^STSvr}BdC`(aT; zgv3+LK{}*CzCij3bFaMxb7^d(s#W{rYIv-7?Xd3bs7>%tZd$eNV2wOsStukqo;TYryK|7Y9@Hg3DvFN?5vt~po_a!hoV zENrPkTpBmms;k4zF>pTzo;7awkDaq%ZXC(u=)ct{S+Xa|F)cHv=$P+=A79a;Q@i1K z;)x-)99ygwT(_qxjCKZ+==l@m)vI5`c%460yUxZUHYo+16Ny6_;t<1g$I8`D(i~@y zODUp8{8su@?^_AvcW85&vCdnn+I1y&WCbQ6CCzb60umC5;Dtd;E30K9!#R>!R*M$G zSL9pi+e)$$T-=G1hz?&@T6MJtmTPITl4!9WftLbjDwt+k@M8EVoYt#;klec5Z{Rjr z!t1=rwc4(EP$N`}4XIB;3@;T{ZfBO93YL$8A4OX4hlw7Dmv$D0e1+>V*fhs>$`DOy zOeS;&vCm0xU5bp!QnIw+zY*zy_#nB>e#sDShaVd&LO0vwfjzJg&6QY>dIVlt^gmW7 zbFd(i?9-BWe0?JRA^sqS;-%VLS4q`sTUO65c|l|9(J_TPK|?xHNJFCJhyE*}o`(+; zNN=TF7v|*^)Z{B%%N;p`njQn6jj2R%M;OzPG>DBE?oi2wp1$b$fuRJKbIW~Y?#tZ& z6HWfP*fRH>RFpJe(=oVHNHk!H;b6-c8Xk?jA@;Q37>XBqvD_z3v7*%O+ieFi-Ry|v za2N4NNEWb-0kNyYCkV^#jkl5H4 z1*#bv4Fi4twBG2Mm&?Tel-k`#J5J6$KIA#vS0vJU9ayWU2o3;#S>ALU2%BMR_aE)l zGd|%12KSmA`n*7Ow1WhEe!xn-z0a&%#{V}}``!Ildx-uk>+oG2;PY}?Z}LpaHpz7M}wzmEQE)a`|d4s#>k~;owrEtZThxvtZ>f z3&?J@T-(rU_v)*SNX#?{_h1}Qxe7$dwToYdP+Uu{4Oio!|A`gecGemb;T@`dXnKtj zV68!lmBJ~089{jsxei>7zE-GVe`~d! zb}g75*FIG8sopkN8O>C?1*CJAyJ-A_uZmuM!-<&7C4vWxM6S}i;aK@cVTtHL9+#Kl%t zS9*V+Lo#!@OZXqWEw-Iq%RjtcTj5et>{<=U)0JFJLwFn!9Fr?bk#qLL5@n zuGtFyiXlHC_pMXi2BNLx`UEPjjjx8GZT?iKcB2c+{Sb9XU+rx~s%~%AZZzH9PWU$j zGdUhj_%h zJSI>vGci%^@*zI;Nq}YJ3G1^Vov+)f-68F>nEg6};@B*>#ODJ(s2*6Fi`W>j0r$B} zAU*a;fFbU4m--Yc=EA2g?eif%F$;kbdpq4$?fNvJ5KZL<0Pv~tZ|>3|OE6T-MS_RS zr2+qqp;woDI$hj=4ETiPP%$4lOq9uhOjq~m=6Z(9d>mk?n419m*kzt^_@xk^dbcZ^<|`g@QR?T6#B%Za(r;U$}_iHlpSd#06_0Qy27ojEUV#oc(-E`WCIy75yDIf~(_ z8}AD6ANtjuGZ(jNdoDLgcC~`Azd+&;J_frQv^eRf#w=WRWzCdJQ*M%fi&gnIT_P+-qn$&d^v{% z1yeMiTmor|#N^E>SVKN}k*18a5*jQ%TZI8REd$1DUO@ zc`{u{LFrJ;ar`BI{9-~mpZI)aMQfnus5p|BAR$yAo8 zVL%uJX-(E8)0?=Y6+B?NE^9JK0Z0IlQpt2fQIoikQ-PX>Vw%do*l_;>0D%l-8!Ng9 zH@}K*qs{aG=S0*@8<}SMnGZP?Y>sWL8OV?t0JK$2c168-kjTx0y6TFWY^xW)v)oj% zE$uKw9^_PvLR(hxlm9gL6R>KM$sSfrzHkc_(?cd}5-d9lR!8?lO9t|ZpTfEd4g|6# zd!nOXIfSFF0?`p&JS?w&$51GnE_Os9+UnJFA`Hbowk6Z+hg)E}E&E9EBLfzYkHE6S z&=Omss+={4q2NGOZHboX=r_*h8OkXi@D4tu>s{0eHQm7hZ}Oph^Mn&kv5i~eex(R^ z-BH*QZ957Y;FVdhhUy_7awe&d4y>p^QznPJ%ZKXNvw4Q{X3`gZe745fX9cGE*cU7r z%45R?-IBemyZ6e^SHGwgcerZEd%PvT(8r&iYKI}-Np4kV{tlKn=3wYGRD9ggXX!AswnG@m_Mb%2s%VQ((HP_L6?q+b_~n4pkoE z4ZfZ1CZS)1yS%#EO}3LVAK~ezO6ie&67N>OuP{=?yKHZn+)bMCNZ!zAoQF2T?~vQg+RM)Etg%z0=yO~#9RW#P?8 z3Wd`+(2&C{tsuFM085;Q267~i7MIHp%PmR~hg;)H}vEz8qkWFzZsz+H;8eqxhzUXe8 zO~Zopyf>$z&_jmfML*g{+uK!|YngpKOn5k>#WWm03A@SVu%BcpnG?f3gcFI0_cYqe zra`)~SKKwcK+_g7+>2__L_8C4BJvEZlczzm&!i#5C!4(8WiOu~w@ zVCe(#)XS#9SDthq`%uVqWgU0oy>Odn>F86#eG1m8)36x(GooGT*ySzOwu#MT95xm& zCSk2vunzcBFPUHQW72Yjo49bHRZI&j;!4z>Ps9O-Gmrx~gPDlPUCgg|H{HH-SVrd} zURhF8Mw{MRDutpUi_Tni7}&{ZTM_rN&!%Ni~w4+bI-JB#h`SMh-e5za(HIGgQm z6mc*1v^#Jv=6!>cMa!_ocjlvLA|?WsKqjz+^nizM7;0C#0LHn9PizBhhz7qh+YS#z zmPQJYzqv1#mq#wnwfi-s4!}i=cMF@M%CF4^^NGlkFt8L7!IIQl9G!4})%n(Kf_5&_ zU2jh|MM+$p2U)aP3JR7)5SE62aD?*_Ty<~OJK&`c=*4L*&7$qh-r|4Y0%2)HzzW1$ z4#1y}uEEWE69694^!#7O&_;W0-a2}VXRTc+F7J<^SNH>J2--PPp0n^M_z;ux9Ippk z!bZCn_OfW-<-lPj1Xjgudp|nz)7$k1c-hwP% z(CM_%FmC#&l(^^dLANgg;mXmhGq=$~0xKi1j^u-srXQuA`DY^lH+@de+bf->YGDnj zxHKDvHd^4Y20~#i{6Fn=&G&WJkkn7l&*y;-bY&AOqQv*+gT<=R=5MaWKS)dI7sluZ z4KSYZ%@c~wd05&m){%-T-!%^}Uw=cuNKrVzqPUeHew)YGDg$#qETHTa% znLhK;`6caaTiVWoY%GFsBC=q!e~>~>B!Jw~3AgQK=7zq9k6F3o>x!EBzl;yA9B9dg ztV&O&q8IJN`)I=joI-wN3LAkRs*djH8~O|6?5G;(k`C0*e<17_R1}p)*5h(C5&QUJ z4)SxJz~&s5zASx5Z_qoHh-nJG@DuX6_OxG2YRJjsmebG&>qwVaz01X@D+=oqjTDp<7_d7cE zXVs|c6XPRENJxGj9|1VfP=Tr_8?00;Zp0&Lquoakuwl;Uuz5rGMrrEXftdP7RavnC zE6)b})BdD7O_{R65^aO^?dMI>jzRXnSbk@7Z*G3*-6+}iPW>BnQNc3(SNry{-9`^X z0T_kksQ$gK(%=7;?2UVG(vSoY;*65W%QTgfTnw(g{tn!&h+IPE$N0dHY#YDVsmx?r zlEi9~OIl7B?;5IK?U#Qt*!-u3b>Qf{!`zLYCW(nP7UR_8-@i_%Iy@zu(qv`p&vUfsr&A7A{n2$pw3I<}V}dG}=glMva0-)wD`h?7RN| z>eFu4JA=R`;-7OjmpL9Z;1kCUm+ZZannH-gjA(2q)CMaRQp~7WQG5_U;Zw*l%_kUH zY8y2u8!IasikV2!S}Bi;bN(sb|FwOY!C+&-d)RdD`M6#06+5u+72ohviSgzt_!Q?q<`79oB&#=(4@_UQh`d z0w*FMWQT4~i`UQw9vdDrQ8k6ERj9@~)<0#|*4tqnc%AhJ!5xz5s@<+5-;?v+(*q6N z;{yo_DJdEuR0>D{pinKS0V)|OE89%Fw*GrLZ>OEBqc++K3R?_bz)qwgJMTJe#vb!( zdW2``EUm`hTjzD!b=04@A2Y{$Y`i?sdJnL - - প্রেরণ করুন - + + + + + + + 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 0000000000000000000000000000000000000000..68ac4fdd2d2b156728a4de77d41c8b90edc3e73f GIT binary patch literal 659 zcmV;E0&M+>P)LnF7s3C`LpFDlh48aIK`w_4-{W}L#8p7gQ-gR2PeAk-_F7Fk9pP`T zNRn=o33^0Z**FyYz-H@UGyR`nvxD{;Hq|kferlNU1QV92$hiw;yc-VNONq-U_^x7U z^?Aug%?#B*C+Z?pL0%K>LUOl@pL#MFn?Io-WYzC2wk-^ut{{=yP0?S=;%M5ddP$Gm z3nG{8CkNggWORIwKP0c$(USbdY8=SU}#}yUz z{#2w5MxQl;%Z!i11Lj^ZehW|O-=f`5J4}Po2*E318U)e~<2N|%CaMbV5B7hp|BXQD t8A$8E#ECBTLG=*OKo8s+5aRgiCjfW;7LwvA!YKd%002ovPDHLkV1i)LG0p%0 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..26ce8e230aaefe8a4e6ba9b0f347c193233585a2 GIT binary patch literal 348 zcmV-i0i*tjP)+va8cKR({93mJuWSc)^aj%T=p zlbC^8@nj8fK;GVAElTGV_QVtMiJ@^$VQ0LNm@B9j4NKvco;Ik-71oV-;$ta3x zXcEZ>;G^u74`?llc^HPvfSYLWE9{E5viB-{hoX22fU~%Os4EzZmvVM0{DzGnd1L=g z>*1B;#85c=3lk;oH9CasV3zp3M4yloR2H9eXdZHdDgcP#I9>t(?qf5)&K+4VA(#Gx u7QP%%F-9O3hUOw}a;gwsAa-S-5C8xq+n{l@c%Od&0000k7Ymr4gWb*i{90};|gF#G|VFerIf>j>}}cbmk8&jZ1INkSN- z*kK#uHrH|Y{Bkh!9la?TUNpca*rE}$nQIJ?q-K97(-N=mB}*%N^q`P>BExO zSx&aocF`c2Ss&nhJxwX@Uts@ILTy^K%d3)f z%las{br0rl7}ECrTP5mtxWV;p-6t%G9n&KCi-LqJdjPI9PfRAOci>v&mB`aLaTmyUqM2u&z$iKvzUM~MI$Nc%bcempzZ|nbSmRzHJ zu;j}@sW_9n$?J5jF2Chw4{WzREaI{1go=@G>gn%&7adl;l+r%I(7%J}K+*#VhJyBw zKN>@G62(;+%9z?2Dh`<4D+oC{TZ4f?x>41kFP-54YY~G(=gI>d^LWbT_8WBb|BW*g zE4^|3t&s3X@t~SVOK$Pz6?U~|G^d_9?r=XjOjF>)k~dR;zG3im^>bP0l+XkK%UNIa literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..3466887adfdf703e8874bf53ef81d7f4a1edf70a GIT binary patch literal 460 zcmV;-0W_aPDd!wK|23NNAL7>|z-m#(9Zn^;!tg81+klbpoT<2WQB z^X!5bl=qissnp7;;u zwuwDQk@!oU7R`@LarYbIC&b`{x`w8udW$khhbj1o#TKVjb$o?Huvh)SBg6Sq89gmt zU#NVxqQh(MN;S9*qWF%vI0rG9fs%L)aiFIfYzt9*hB)AKn*2l-HJAp^AtBjdbuH}} zQtUJGnJ(blL!B0ed3Z3u*lZ_5I0Nqa4E@5WWKRElPW>~e?6_qJ-o}53!FTLO3&#yZ z@Hv_)6QV6fU@oSjAL=8Wmy90VhMYYtH+^XScJ_k0zq-K{3(ueeTA>@d zpfP^Oy}63qiFQ~gv9p+tzj1XYp{r022c&Nq-cKiX2S&=y88l2Kb`z$_owmt>!{uI? zc(LE*$3Z+08M_gi?j~me#2hb^qfVXf&Vq?M^Y>e~%yoP^bEbkE7_LUUBxjn+c zp$I#MHkd2E=6D9Xq~@P+@CSq)l9~fja{{-AgV$r5{OKP=!Y}gU5FQL-!7#a3CfWaR zg4}5pB!io=R(4LJW{|2Z|N67>T9QQ4;3}LG-!Y8C*Qr-x2e;vi&>!LlR7V>$L0No+ n8-pU*1c&0Dpb+p@kSFH>0qgykjIuRg00000NkvXXu0mjfBZbZO literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..34423ab98eb1d12864eda5d28ec787c7fff4d529 GIT binary patch literal 640 zcmV-`0)PF9P)ZnB2?(rO&nSXvOPyO%?Vxr zt4^XE>Ra4+_liRsLZ-LKuk+ks1@yX$MhJr{_zJTgi$nXuX&+J2;QAg8tMIQk=!3|A ze_s+GVU>yq+5^v!cy3w6;;t?N)?hl~Ykr;|Z(+Ao+Ji22cq^^1^8_Z0jYqv~cn&9J z*B)Rb?4+Wp=Kqpn0e)bn#mIDc2&cu<9;6NI)amcvN5?Ro`@e|>Ba`D6oc2jPP*qqp z0O8OYk73jZ;n)dq88TfLhbF@h7&Q(xaM8*0NJ=jD4ULJ92rNxg#KcFaK+p@sH5(cpXW;MJ*?G-W5I^9r_92|z7kI6q!q;6y zT&J(?+rgJTKuXznOS;1soj_WJWQS&fx0{1V3I*1or%^)@3q(Utq7K3+Gb- z38$gLs5e-T_R`lwiJ=FPPUr6;A{p|a0*WCWqAT)A4gH3J2&V+5grS#_UkS`HFgl_t afuNtddUVmU;CBuH0000 + + + + #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 dd8e61a620a989df365b4de70f3c4a5bfe166ffd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2797 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 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 5e8ac3c99e1fd6aa8b5130ab230e726f9629150c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^;y^6K!2%?u-u2D^Qca#Njv*C{Q_n5rWeOB%d8j_Y zU!gF!u@yRQNjIAHwd}t)IA7n?m4>spk4CE+z(zi_OM9KwmxxV n58JVs)*UzQ9GtYVvRMA1)Q>Z_IHY=ju3_+W^>bP0l+XkK*i%dC 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 361e6387475070972bdfbda1b0427395486f67b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1386 zcmeAS@N?(olHy`uVBq!ia0vp^q9Dw{1|(OCFP#RYSkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=d3-BeIx*fm;}a85w5H zkzin8jLZy)D2ed(u}aR*)k{ptPfFFR$SnY>W?-j zfNYSkzLEl1NlCV?QiN}Sf^&XRs)DJWiJpOy9hZWFf=y9MnpKdC8&o@xXRDM^Qc_^0 zuU}qXu2*iXmtT~wZ)j<0sc&GUZ)BtkRH0j3nOBlnp_^B%3^4>|j!SBBa#3bMNoIbY z0?6FNr2NtnTO}osMQ{LdXGvxn!lt}psJDO~)CbAv8|oS8!_5Y2wE>A*`4?rT0&NDF zZ)a!&R*518wZ}#uWI2*!AU*|)0=;U-Wup%dHajk#L+X(X49wM@E{-7SZq8D}P*(x{ThT*sz<>A(1ELg9pu zGqY?1mc~cMUs+c$`C^~qr5hXPF!ma%^#5Mu=w|pQh`H+e9L6B2wRf|gUH&!srsUTW zfdlRN%;^`HZuGtmuwh!>T6K2KF%|21h4W%r4n(WCs63Hk*>~++!EOe2-s54X0?q3f z4}0!i{GFlX98bu_|Ld=2xGc)d^fLdMccJgY?ndM0zl9xdy;LnI+e@^DdCw$D3iMxbbAePNgEQtQ(jZ0?=9#d(;W%)5rvHPCyrOq0JLbi|{A(t#ZqFs71rM9|HU9N{+i%ZM;JWx>`rO|8 zOQYT$Gkqh^UZB7@jYE0Tic>!G8}bCiJq~#GzqfGE?|i^@$4>c5b;D$)yb0NsFGNDP z7I;2o7X7*Y>!F9g((WjJsNtD-TlTBv>)-~d4g4RHrl>RA>G`AaX{Sf5rs^rFnYU$Y zm;B!O?%3l*xt`o#>>L~425{EpQ74Zp1%5@a?)d`-(YC4jdlIKgmsVJ9)raX*?M;6SZqI<@a^r!JDZfYUykd_ zj`E-Q?utjnwV2?z<)6y>j^E8Glb*)6aSPLvQav;4@Df&PbSMNDIVweMefUXiEm z##;kB_s4aUls(R-3#G;VRcc%K*~?l)Jg7VV@9xCr|5?*^i|>xK%4c}6!v50P9`2{0 O63x@q&t;ucLK6U8M@>us 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 dbc69dccc10f823310f1df4ade905289d9be4629..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 478 zcmV<40U`d0P)Px$m`OxIR5%f}luau{Q5eVXl|(}nvQcKrl!dZWwk9+SD@s;mVWliBlrLbzO4iCk z78Z(p0GcmgH&R%T#=>~X+x2^H_uS4sbFP_t%cXBt4&T&G_ygxf^C6S$onSXl;VsCUrt0rYR!;MzRnPHDTC7}o7iZyFB`o$VxEO!;T}wln z)RHbbfI>BmiZ&ykYjY?n4vA&0A*uVqz-UBJ1r*Hpt`Tv$$3>-4V=4ADqN4R&;1AUZ z=?NNowE?+DCtyD9dvbd)rO(FtG|EZkOOij|R%yh#&<$D0#16+580vtDxO$`cU$aL+ Uuu*BZ>Hq)$07*qoM6N<$f^dP>fdBvi 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 2c5b1bbad1eefdef0459e5de5f538ba6686e4216..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1645 zcmV-z29o)SP)5RaI40RaI4071uuh zdP>5IYS)CzZSfidmQ^A8K&dqA)0a4PF1ga^SiLJvy*0xJkXE zzNy|tJu&Y>bKP&sqd=~(YMXY>fhDhs=rkK zqMoal=yRYuz!@~0)cfjB+P3}l-o1PKM@L7u_V)Htj4^DpL?oP_pZAX+|2%*A@P`+D z-+uw{FA(Y30Y69#-~<~+3OPFMI+ z4xeBnak8;jo(7<3|0Vau3NQC7w;9~5#8Fs6l zshb!9`Wi~G?uaY{Cg2Dg>BNh00B7g~yQ&473^zk*MR>!I*#+w(oGLIW}BfKeH zBiv8{o1D?V)M zcuCNexNVLIHYB6Q7ORUJ{c}iC^bl;gVCVpkTrzk{DOCj8U?^TnVc2mzaGquJ+VJEI z8@3N-SvwVYoMe(efUO056!><0%)m9J*lZlRz-gcgd?ce)fk&y})om<3q4O>Rh zmZ1ocsAI9Al2<22DY`?%4P%UtzE=aG4IiUCz!c7-<9WA=zM@0WfVJT`>mm_NUOsRi zHdKN{T>ujQFb^~cZTW<^TeQG(AUfBV2p@0m25C{wG~7BKdb`dI9A8xxcm;l?Re?vf z_J1;*J^R8b5EYc`$Bn*}qrX>)Gf& z9MDl(55Z^c!^TQ*oZ!5Wi%l2C!I&s9Sh*KQfiVSbI2&z)F-{gb2jfZc8FMZ^14hD! zMTz4D>k(T2h9exM{X;KS3~aPjmO%d&od$FW4JhoNex>L{wXE>@^f`D9li7z?Rp1qP z1uj%aS%Eveh?@)ChrR;v3Y&mOXRva>UY*wl9x)pIJwatK5#qJ>K3w2VeYRLEdh?d7 z@HS5D+v!Cq#$8r{Swi#Ea3tE8a!txQ|4B>1SYU7lCIY)^Ex6Lm$M@mBD;q;XlFV0fz{-6u`fE`t<32eUj_O?(Xg^Ttm(0^Mx{aF|Ys= z8#E~u^@y@TJ)zG3|8plI%jeIZA8B27c6Qp7QWLgaNF&dlJv)E$ zKx$d4d&=#(7~(VQxy-ikOnn31#ba`>sozq6png}qk8`(K0=Pe_Pt?Dv|3KSI^#!~D zc({yyJEd^`?%^c{J;Sr+zXA3xzL1?u9>Itc1e;;3IdoX}UjTfDa%k%dXD_X^{-iWH zpaW!&4>1Gm5_p<8@V*2NFR*q*GUW0m^cuJ81;<5;; zCBa_8l*cg^$%}A?&iy^c=m_?-qT63PpmVgNT=SwS^i9WNV(8M`p1dczCLkf`v}u4# z_ypU7-WutooIG3KKHL!Oh;mx6?SK=4PVmuY=WiK*Kimi21Fj8wx)B}-U}keQaG}R)9~4>qer1l1Za3P#14WkY6xE zLu+$WOI2-SU42dUuh$>FfD$pDE{-7;w|vhz@--OnFgs2c@ml!vf4S%46KVR>o~1Cn zWiUQ0RvuNpUH78r&9X|VqwE<%x8@o%&U8_m==mu+ZPIb=$s7Jn|2ZvCuECAb?WWd3 j--N(JL5HLqxPLPEG;)}EU0osxw1>gd)z4*}Q$iB}`e$5x 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 a42b3cd92ebbb9d204b40ee08e77b2a8e3200251..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2207 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 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 2d292f2cad08bef5deea16b3080cb2db342719a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 785 zcmV+s1Md8ZP)X1^@s6S>%lC0008mNklAyn0fQ_UISz=-IP~#3aU|hZ?~q2x=N@(%nR= zg|zI(COfk);}iB#h9Qi>Km2%@nUMYQpW$T5+sE2Xk78juGr z0at;W$HzwxgCJZluWuGXijqH}fJ!G-*n@cn38tRt?$t(v4^OXsuHHZEx1MBy^T0WT z0}P<^H^dMMa03cN!MJ;n@O)_|WclKi%>reblr1Q;zgKrA-`_v?1}~q%mInwR0hGo( zifb}VgCi?ANihC0P&`+hiLh7(DXl4sj4yian(L2RRsXQ|0=9kuA6wc*^SSr;$ zOxRj6kWt}ZQerOCsk{F0UEOyYRg@7Zf*4{bMD0>2hEn2W-%03dA&@ahZKT(y@DbtT znP1b_PQ&%w-R8u7Rfo+9%0vdKjE3HjRZ2To;-oiB*lIqINxpY&)MP>vvmsLmV-Z8N z-^U>3KvOvp#)a&Ka;E>WIRcs278wbImTObokRcX9lmXHxAOfjxQ7F9A@lkyCqYc-z z^G18XQWHT;sl|^PSR6x0kHS9-rSCe^pY4|Poj$Cmnv68sG52Cai16R7)xin_F$@FI z|NrErOo9}+=mCUWDl2d#VrP%*wTqWs&9oHwzCxL9zqs=O~j zIzX|V6Zw{A5_=reLEa7;N=$@+{6-ANL44@M03|Rv*Jkz&jjfGI1R%sr2ML5t0V4?j zAUJb6sAIIL2>>&)rui2r$52xs2HU?OLV9bxl_jYEXf6@62RUpxg!udbQx<@0IMtby P00000NkvXXu0mjf9O+{! 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 b2dcc40899ac6cc095c4a5d5878e9cd699bf335d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 607 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 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 b368abbaae3269d9bf941d1fbe5b8347b2f85b50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 700 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 U_g|X?^LGG1Y8hx&Ane2c4|ngBLI3~& 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 fa21c2e8177f1b05a028a0a4d74f651729303d44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1780 zcmY*aeO%Jl9zLcb>2)h#vN1Ix70Ur4+LREr>kv&)3}1RvkuVfr5K+kKCd#UtX_=dm zkXmY%W!*4EX_hNYO^vNUr)s&(%@pU*kxd!F-rpXYqf`Q!X6nC@q4 zj4%cOnEF$FL!kLHU0(r%#-RS^N1;hCHNA{6Uj918iKBIJ3ZB51+LeE-n~|fl1w)BxH#( zNvZ2Ti2SYN%SmMm;`qY2*_WP=I!clHn^sQ*cma7z73cy+JD>e09>gwSr}?QVYJwHeDB=Vg`uW7 z#qhItzq8mB&D|mOXosp_Z+vUwTX>lQWt?x!FxAud;aE=bTTGE=2n)>}{u}aVznr@p zyybZARnRM~GZleU7pALr8&AJ)|4rQD#>oTs+ zQrFkrY!8+g1X5+~ets|IMa%Y;-yt;_T8)HO{J1p%C+2T+q>+|)4|6|%1uH+C9OS+! z8eKDJ1q^ftRv+(Vj1KI82g3wqecCd!~oT4> zWmNVMHMKc{rf2#%N2VW{zUP+{=jk)kTY8_$8!TUsQg8MDyt7=$^=Xq@%t)$lAbM7| z_Z3eqp=ORDOY9hEi#7MET3~c;MrWXeJ_19WtdsZW7LGKy*2`=R-f`8cCNyF`yy3WL z9}U()lNA%;+oQBX(kW zbmD5bqnAq&#;BG4<`9X#^y`>?rpfNu>PUYvwX`@3wwTVERW_V$DX3cL?W;8?ncN<; z7^Oc*Nj`KOv<~u%c`rwd)uVn+hFV{%?c9P~BMs6L{*%jZwUDd`D1FPN{97z@6nWJ^6L%kEJ88 z5+rj%#*NMiOE+&)Z{X+Po6I>?_t<&b(z$?chs+3Ln zgEpXM*seQku;6Qc7@ilyaPVVWz4$k3ARyh0TRTbQwS%RFR*5Fv{7n3&^jS+7d2QP! zySiobO^5RCf4SIMc16~l_4V04H=ZW#Ki?spRvfdXfQ-nE8TNXe@F=g%M%NFZ3VzMn zU^rWc!|ORal>B68CtlU4yxgO~@6ODXZ+!UdfmavxW^1%Zez2$}wcFDB;0vtvYmY2? zN-vj39o&hvcl0JHXMh?;@v$rnVwp-U)-bH^iI$5dL@N|`**H`oktTDU$+tJFU|Kso zvAPvAaVob)dueKqq9sl%iONs#7jX*A(c^W@YeDPp1)`TCNRsT|!uwOk(F3p_LMl6J z+N*0%gzZ0BpXWR&ZDBJoPUBu-`g zUTx)_W8As?lKH~LuiXT5^0Yd9eV0JiGqyVC`V)5t;>fzobi0a@HvVl!bw$j4EV{}k zjl#PltSo%E^%kxqU3#AkJq17PLQ>ZsgahLHyv)qlo@=oQma?$o2JK 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 5d58986ab9b78b4deedafb7756d8d0006f985051..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 980 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xamUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5l;AAzh%9Dc;1&j9Muu5) zBp4VNBQrxHN+NuHtdjF{^%7I^lT!66atnZ}85nFTtboki)RIJnirk#MVyg;UC9n!B zAR8pCucQE0Qj%?}6yY17;GAESs$i;TqGzCF$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkLMfuL^+7WFhI$72aI=A0Z9t+{{zaLoK$}74 z+Zoz`RicPN?Xl4ZS&rlwh)=)usK@bA$Uf|I;4N*As1C-}0tN!kzgiqN z2)Hn5sqO!F(1|5UyBlEJ%hJAS5uzil4u z)u!=Fqg>8a7_aea-?ipr4}W>V+$UGHbeMnjm0EkeRal!`pT_xVMcr$+KFgYmZ9%y~ ze=e?C_hMn%TOQNzR}`OR`Q$I!xB6wK$>SF>962vtqElio>%Yx5-1|iDb%X!Z*SRG( zQ>(8A&6P0%yOz_7Z1O{7vl$CMPdV7<wT_ehKrV{yCFghQ7KS{JSak z$ebvST;&~}r=#BF{$YFHX}0kGl3Nqif|alH$JEzcv70b2>;`*8vf`EJYPFYyZ$Ftb z`O8HwdG|jVEC2EaZfD40fAIh8e~$B>p%Eny^&jf2b9#G~6`XlIUHx3vIVCg!0Fj?~ ATL1t6 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 5964bc945caf5ead358e25a5b28ff470534f2d9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 346 zcmV-g0j2(lP)Px$6iGxuR45gNkh^LEQ4ogD@zMx(5J!mbW{duINbf6wk{6%odm5^@oCFx6VmBE~!kg9G0X zjse28H|fi0Jcg%3^_IHnvnYk|5E_ar|7qMF%_MnPMojKwv|sdO0(TuUflpAXNA1AM z)yJIgpy3iKDIT&tfAlHt*`$2M9eED2&;=Vsxp8hQ&JjGrC#DwW4{`$?klSo5WHD8c z*ud8@^Bym*?kUE|zZb-)VdC$c$)D`CVlKnq8H2QcAh<|`hICHEE4>SQn{3s_nq&iQ sSGeL#!xY|F)X>#~2XCvvO;C-m4j(j%e>}~&t^fc407*qoM6N<$g2lO&8~^|S 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 4ffc94cdce33c29d343d16d218633f5e465475ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1470 zcmV;v1ws0WP)tT0s#O&63p! z_M#TltH8GwYRvpoNnwg_oU>UP;h)kTeeTZZ^tRA+m5J&u?|08qBu3x{N)ZgD28gTV6grRnYMHCX}6&Edm`1BHc!Z)7-Nl|FvPi9@ER zr`yT5c%cw3Zf$n@c=mBy_dMQwwAr{RaaN1$^LYc zc<1tTvb)2 zD_p&LwOO}roq721p?UD&fd#b_K((m4ySvTCjT=o$N{agS?b|miVnoNl1^=DZI5?7^E6<)iGgf3v%;n3MHO}kxlBezB;$p4j z*RNj>e*QBma4Rvc$v$K@<T4t&r8xc3Mh9@fjru9`lp)3KbK z9OKFZ$C6GQJb17W9{4P2oSZwq%zDs%Uc1t`xHx-cxG0Q#4dWL2_!%dT`0$8uZExMW zHRznzKV;&5c$7~Lx3{vg@?&x2$(d>+=;+a-v+jb}v15k#dyX?RGqH+;A6)R^v9C~ASy@?(*o*@Q4tyhb<`kc-qN2jywNxg1sD!6apH`pM zQ>RWrtQCCa$`$L^d~m=67kr0@)1p_?vhwosRI!_6RgKQ)nsI|)xNyOoJ9kdo9*;-Q zu+OK*N&O8C4erTkJ~-fk3qCyVtI)T;X#GcG*KXLb;cK}ho|16q&YhXLugl8Vl_ohk znTk~#8yh?CwP|WUk zgT#|Z{>hUkkAnv;_{!rFmaONsq@?6iv7et2k-vgb0A9R!VQ$>G5!|z9PcS+<8gi@j z)z3I_2zgRuXTSjuT+x60iwF}9PfScqkk{ffX_wa2)YLxdebU9%YAaWM#`NxOX=%aI zS3g1=@#K*Y4tU@?`1543v;1Xpv#gTCo+s@R(W;+BdU|@=C*C!%Gd-^%aEck(vY%hCAdR}n0I{ERzse)7n72tD%& z-@jr$$#S{2Qsfb5UkXHvMZXaJQuHe<{9 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 27a6f7a741a6f91f986117ddd0c34ac5bff49e90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1568 zcmV+*2H*LKP)8t>+%-ylU)}67;ufW#!`1<1L@XXicw#C__w$HP| z*Z%(gwZz%_`~C9u_}Aa+yUE<5wa)zf{qy$u&)DXyz0~#h`n1E?#nIv4G8?b&VmM)ZOXC(BQep+S=mm(c0(3&)~q# z-tO`Cy2#t`^Y@>#&DGxNs=L#{&EKuQ)bH~5{r #@giS@vgtstGv^uxY1@5H}wDj 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 Iol`;+05+^l0RR91 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 bf60245bb753efbb5f12d23c292726b1ea099a75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1336 zcmV-81;_e{P)~0d$A6lx0YHDJtgn}q2^`Rmt^idzoAL9QZ_~gGK2#P*f-xPcke}PS{ zO%-fy3~f`BY%;rZzuv*KaQHeo+YD1?EqlW0ojLd3Gxsy!Gqau9OwpWl#wp%9EVrnR```?fmhGu?Z@-YvKk;tXJ9#1Q&P}A;p}3EH=i8#c z`SG1=pI%kia2R~&5a@ISeth}O<=NBcKfHKp?fIpZ^9$YXOlK0o`~AIxKWRIW%`DfQ&dE=dxvnww@lZPbP--k}0tUFbf&dn^Iduj2t z0`k>of33yn`_T(^U9qots-Bho+3aJlKfUzgnPGvX2$OqT8^$KY_Nm3yg|v6#f?-o= zQ}zTdrp?s5BH3Kl>2->L1mM$TQu%SV`r{o75v^Qnx#n{1e6zDh>ga~B;@a0MgDC&1 z)P_w(aUaOfBb3MF@^Zq&b?ret^%UppyZi5C5rm*&ZQ#RekX9oE;lOh)i5Q1R!#nk}_5UL83W4zs(0T9c;(Bl->$)q^I zoCFHL9)-7EbLM$@L=3Q_IGY8RL=fns5O6rfhllBh^I65D;NzQq&LatdlR4n#$Xx0$ z|5lxRxMCuK_SqcJEjt$p_k+e-qdu|A^S~Vw2?!7V5DXQ?DOphEzzA+~R35|6E2h-d zYJ&q>>P>$>fn!W~G=rH0GytB6mU>H8<6hW|;sOZ){w@nb1sVWP^|7?Rxn<(SaD@D@!^<@{ptvLw5FY*;Z#0)5lGFlc697kBqGAKF%c**Gje(}Bj<2RG>e0T3HdI*E=4{4Zq1>nObpq5BZg zIDK}Tc>wgV5?ds&Qrq!>TO$fyEv9-v81(aly zd;13k55(h^I?SZ7d+WO|ep_F@n5L4RdUEMx+U;fb0%c|R1qJv81{>g9$p4)K9;Z1< zrSERu*xva0o7?@ZpDtSlf*z}Q5q+3%U;F*uFQ0sHWqadN_t=?LiR8%y8p0qS?A*N4 z-~93N{+;z-%e5;*mEs~)a~*vxI}?32`h4_b(N9D_uG@3k*E28l+OR_5^62}~`_Xrz z{~i6lZtrT}LG*!+hgF=*yigzLr2P?~iFb8=+QRqb&~*++YgF((0#yz!cOQJ9uo**> z+Ugsz6o>RH|;B+=~167y84ie$3NVX uw`m{`+|sz|&%GY`ANWnJrh0hPxc&hZ9_q6@5QGx|0000UtP)S6h;%Rwo?(b2@0j?#*Op`T)B1M_y+!guB&a@f?GxLC9I8#k5T&^>7z91cn<~{ zVpAG8aJk=^kC|8*pS={ze1^P|u)0}3aoxuC4KTAa^2Oyw8HaMh+Q!cDu3Nu)IPH!@ zU}i^#gKLy$mLhQ=Uv!VkPW|%H^T*-+*GvO5J2D*H%;Hp`Ql&=4sa-sI{&(2_oM}J! zg_&Y999&^NIcv{*HqR-j?dqOWJAd{%qe=fG)}0{Mw{Nk&6PVdGCBwm$GezUZcKVii zRXV6R)w7podo<}$IF!NxM1Qa&!@(_V9quPL&Sm~zs2*6U($#04wO56fxB)K_nJ&LgbN~PV 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 85699f8ec238c05be0861b482407bf0edad7c409..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$3?vg*uel1O6a#!hTxak3j~`usvTHq1F;_{D zUob;;T}^F6eREUeHS4|_ps1^-i(^Q|E!VS-d<_m9EC1~(ezuszZs9LU~YPKVZ=V>`-@KNTgbxapnCOYZ^4P@|i L^>bP0l+XkKr&dtq 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 89ec1d6a1dabfa07fe59faebee27cc5378253f17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 700 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 P00000NkvXXu0mjfefY&Z 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 d5ebd1854ec69a62366f2538035272f0710c7754..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1751 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 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 ccb98d5e3ae796b552c8019b51f57cdae2456835..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^azHG>!2%@R6IxAx)D%w_$B+ufr56nO4mk)oUwnC@ z_Ykj{th=i09i7{?Tb!n{UREa{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq^j~z$e5NsDPp6|0tqP z2rw|*sp4A-4AQ)kAirP+jg-2n{pH~z0!{b+9*<^XEc$TGo`1uiQqE(I>k>YSb3B?8 z{OjNE@4PF{DP24;H|oiCQ8C|`Y0USfrS81Q@Za=IS(3-)#~bZlt1p`$nza~AU-PZu zZ1t;vPke0iLL}Di;kx@X_w=o;-X7T%iB7^FH)Kr*+RT{b?e4vL>4nJ za0`JjFiB@#NE!Cyqs2T@k9Er#MVH#j%g8XW^=8 z)0eMfoN}e*bY|vj2Z>!(3PJK3nGBPSO_B`ESbknQ5+ZuUJUPKYy!}*U1XE~Kiw`<5x( z>Tf(KFL#R3;iQ9ttcVPgAV(@sv-Ld@4N1Nw$`6z}ZWQ*ic)3|7@Gs0LxN$6DYIjF# zOO4FDh{Op!$EPH>9WQfIniUdc6lCS-&84}ICu7peRRS{?Y$>_YqB-^Xgo6n(^Cag? pox8YUUe;2k;zIQ@|2KyiL}ndqf0DU-Auv1{JYD@<);T3K0RZMDh5G;i 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 a751b5fe8e169d7cb51ee5bfde3f174fd5334dae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 645 zcmV;00($+4P)Px%KS@MER7efImc36?Q5c7N(HJzSO-PI2=+eZ6#SV=L3nL9AKpbEoPA)DchJl2L zadm}-;6H$bXhIlZa48AKkTB@LheC{^>7c~eT0iRZ)}GtblXEV&y_Pq5xbNrroqKyf zh{aCXys&!ZaydosP3VCxD8UiDgLTjI@*JZXB5`;K`w(QmDQ>_Rv^A{CkO%kR3p8r4 z8R!cwO7mq{ZdAqS|3!TNL{XZ~L(UkE63zsQvhq@t)g7}FR#BR7IR>Jpzp{Yb)iop0 z4u?@!4w#>>so~K$9MEi*N@l_m{~`BN%NOu3il};KM(cLq4z?)C3t-#b5_>`I37pk> z+VQh~jQV?RH!k-Lg@g=oOoGI^$@7L226=&08E@r&THjmj8R*_mrsd1}`|?&3+1 zSKVV>v?`V%{|$odxj#qOfu&QPpESsCV%8t2VQRe)=AApIX5>;Wf^Odl9>6O-Y4}sb zDfn#UUE#PcIAnAk8?h@4b7nFtzwISm@Ei%bIa*~4zL;`Q8flT5T&*igr|wAMX$wRr z>O}MaG5H>@{YTMheSNEs*ag^&DEfo>yH){PlIAF1{g=$AZR<)-eJxydmEXZBtH5$B zkXwNP{$0EQo0gtRO8t|JI*FeFd5OzcqX?hi0CMz5+?-V}sl0tUn_Hp5 fDTL%qT4H|z*O@f@pQ(}X00000NkvXXu0mjfkfAL; 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 4d3f58f6ed6bdb0caefa548d412d78fa792391c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 589 zcmV-T0T-71Ba8hZXEtE$f}zUO$vd1+ zjC^U3u9F6-wf>tpj%hlb8tg-X)d64>&|qYbbJHR}GV;MD6=GvdUYG3Tv(a7-t|OUx`MPLflsx!J~IO9z%{gn(MF*A*f#Qfzn2Li48( zhzO!6g8hDbp>VccKhd5SO3O*{bg9A~ntGEjaP bTix>yhXFLfU(Ome00000NkvXXu0mjffeQ(% 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 6cd7bc8d9652f2d004b30f68b20d585eace40a0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMbn3GfMV-G~Dm>e>y`z+MvM7tB!C zP+e1ByD8^I7Emb3)5S5Q;#TRUXs!kW9+!)1c4_~uw@Ew{I{an%mlzh$-QT(*a-RlP zdt8jMvR~iy{!^9co>NQ1CMmPZx0}rWKc^{pS@4IzWuGta>J2V9Rp9mAgUinCQCr6G iJpEI#YwLNw{j@pG!`}9Pa`PRaZ492SelF{r5}E+I{#kqg 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 7614b95c341d32373021496ce79668caebed3563..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3350 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 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 d2dc678ee972b82f3bfa023792390ca738d3bef4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 720 zcmV;>0x$iEP)uM806bJCRZ0`4s_LDYgi`ZNcY#u<(Zc|ZH#k+!Tw0`lsPvR5!R$dX?O{55#q6o%j zcRWdkg*~v-35kauHYK|=KmIe5rDQp!8b>U9g5}?@F7ZDmrb|GJMZk2<@2TQ5m(8HP zprb)z9x&HLQbjZ91a!V|?v|CWT-l4~EBw#*w}%Ky@fFXp5HuPWbR4>5)*ipuxM26} z-QFeFbt@!h9*=&!+m~1ofhD?Fz5tR3$jyg))#l}EotsW8moI0}tk+HVVE+^`isRAn z{TGSFDXMX5s1nH#GBHCwcwTL`uUflKi}ASO`Gh1>ndIt5!*tz)vcv|-;&FA)4WARq zL&)0wXVs>)V|ASt1?1QRjQ|aFIz7SG0qdHC=e^PJgT!hjN#}*Kh$Kxw_9~6`j@|7A zNM9m_93+*>CRZohpx*~<4zM4CWHrDPLA8+vbQ0Pu)$TdfhSjmUy)DLK#@Gj>AD&&v zPC>F~0o(5nOu@4g>;c*axP*G?70Vq$Zr*jOO?w-b8<25~L{KQX4J5WCSjHP2g|Mok zAt*|d$ty?5G9aG<(zb3mTXb@8fS?&^V~*J9Pi#KhKwAYSuqU_7Jb|EOK)I00005IoLT`K?%_NTf{UTdv00 z(`-+cPPo44LzK$0Wp^(vUbD@wVoJfBn0m%}^_&Xpr%AsA+RWhT>gTe~DWM4fD?Vn^ 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 7bf06cc29dc584a6c850a245306d7cca7935b6cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1499 zcmV<11tj{3P)Px)l}SWFRA>e5S!;+@RTTdAotcCw%B;{Fdx>R1ipEq#Kc50(;A|fe>9z;;~5;W`unPo396C0znnhMiVuURv*`_{Sldd|M*eeTS? z1G!+|v-jF-t^KXN*I9e-bAe-YYzC^D0acZDrLv_nn1r)2jG0h48KXGf7RlfcH2y*( z25}UTcEF0Hfj@HUi^b|OkXa86%ExQ}p@`H4n~7XFHk+>LwH`_ZC~M0^J< zeFB;YT;onheOzj58CuI3S_k7;kLN(Yo`n&-NrM-}F**h^+tGk_bf}$CwxS*A(U&5F zw`l0pC}U&X|0lE9Vsxv`VRpkE=+$!>G9S`FRAvbqqnf_`bfS$;d>v#Y*a1sVV|x6Y ziY-CPHRA8#JJHH_;y1tXGJZ_RhSY?Y*;jAy0oY+oziGWX;0WS_2+ra2JVCgATsxI#<^b-6-_TZiB z4`z*PS&ur;3{qwpW#Z$MqvZ~9_wbX6`yOO*g z41TduV5sD{Nu5ilpJs-+gY7;aIWNnF)p0;qmG_@VC+_l&M2llktK$H0Ts-XxDTUVwWohVbN{+=DdnI0?Bl9`qOIh~VmU8+A zKG(9CDZOGCqp5iFE>UB-!U6te3?`-Z)Vc*XtC6FMd3_18%p#T7!{XWg)}wM#$>{}z z{R(Rh20yBy@K0I9S%DE4TXb0<kv4eIo5vz`FGjT z?Cp%f5v(OLXDP4c%ssW-8Swm$Fx$9@hnYcE639x*6~F&@75eC8)?nxKY|i{gbpl^XR7&fAf8j3(^Ma&WNKFD5LS7yUz?EOE+_7f1!Zi z9r#!BPj@RPs7rp6ec+4)I)0)D7`83;-cjl`L&)Mwsq9V0PdP1ku_Y5#EqJl=tQ))- zHXRTS@G#3EyEd_Y1e0Jh$m>8>NvOm-lNhGPz0t>`hhQ_v>wt6*Lr#=i4as^o6uu~7 z@}MwZVt04Hp2^RNpOJNnn_Y+cUS_UVe)QetH@5!@h-8Nv;Lf~+wSu2wjd%ruUlIgf zFa$dwz1>Q_-M6z=4<`hCJHc-fC_xk)LT-&-eG!|oflYU_$E~jHy{MfpZRC3xz5->0 zVrZ2Aq11vDKjSORivwQZm`8~)fSU6kZ@t2-g!Rcw+CkuQKZs579f)l*vEVjN&0{>g zynyBENK);wazM`KvQy4wiMn0M?d=w4;CGIEKR20YcrzR3<>o}@ zwb?AQ$e+rYEgrR%?c5*%?_~L&vO}p6S16`+K)y|`A@BzcFhyW8qgBmn1;)^3QU~Od z$crpl-im$>wOpgl_zq;SjmzK4nEkRw*!~~G{0CR^ONsV+;{yNy002ovPDHLkV1gik B+dlvR 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 0743811ac2a2ef946d127b73894df220f876a6b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1178 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 TqsvnF00000NkvXXu0mjfbJ}0& 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 9ed2cb28b2bddf246f6cb39fbb408961907589b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 966 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 F^*<{6u*CoX 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 41137fc92b8ecf657433e42995773a2be94a9821..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 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 X2`BFU3Ky2<00000NkvXXu0mjfcM%2B 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 39e8f4d7b3337bcd209e531623674aa2350e8121..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1764 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 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 3134ed126d996abb3039893dcb1522d031f5efdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1513 zcmVPx)qe(hhD_3FQT@0<6kx?k6Hbp;Cw1O6;=xQAqqn4FyKCCdZg z9xw~s3VI^Ybp09OFzq-P10$76BIhP0`snoA2S66Csp?lBiYyG-|~&0u<= zgo4ma@G&TgiObA9M9Tb_hln22AAmdaAe3W{@5r@+j|Sgl$(czY#JQc~L!d7Ui6+J# zCHEpkI^8FW7){o+INGM^yCxtzEGP;_xLJaHU|IP2WWyab}c zCa~P8QhS}nRh*s8d5Q6tSU{CwpjlKVy8zh-S!(-TNIMCHIPzD4`7T8YRu6-SzgyT)KP*BNwx%>Cx<#dI8H2Fw zORD45NAdNJ1V-`K8ys2^bHJc6{>3DM#P)y@V-Bm^`lMQ3eN>!lt%{$PfbJ7F0X>0S zKEUY{_S#yKoKFY(#GJR8_k?Qs)IEmXF#|*0JSFBU;FQ5X$weZq77<##1hF&8DP!NU zx&w_}xb%rM)}M4bK<9>}3sIkbciIkigIl6LpGJ@Utq7nki$}pqpCk=p#M5Nv&ma)K zmy8EfvTEz%KacYi-*#WRj~#@sEhMbl9bHkvy(vk{BF-mj&eWJ)2f-}5jhInzjcaV1{ZCQ9AA!Di;o&rclsGC- zcf-r2c#C~Ex{8yDA2Ugh;19amqvJFFS8MEhaACk^XtXd>0 z_&DdERr?CqirZtp;%GeH0x6inztOA!`#{lbAB6OdqByqKSZ>`wTdGAdaVg#hS4dSi z+1n-5?-YJ6&*|dwWz|yG{9=+NnWN86{5PTQZu*iqHe^?5oT51;%EqY z&!ASxqF*F-fh~ygVKa-iS|B}9v?HKb;rbj0b`<|1p#7#nglWmssZ|1dr_L2{b{g9|yg^=XHh}38O%ibznxqrO*`=2nqxRf&xK-pg>TdXbSuTs_c^62f=jR P00000NkvXXu0mjfdlG}dBLS&Kngi!50~_AS|p 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 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