diff --git a/packages/firebase_core/.gitignore b/packages/firebase_core/firebase_core/.gitignore similarity index 100% rename from packages/firebase_core/.gitignore rename to packages/firebase_core/firebase_core/.gitignore diff --git a/packages/firebase_core/CHANGELOG.md b/packages/firebase_core/firebase_core/CHANGELOG.md similarity index 98% rename from packages/firebase_core/CHANGELOG.md rename to packages/firebase_core/firebase_core/CHANGELOG.md index 7ac186162464..aa76e0bbbf2a 100644 --- a/packages/firebase_core/CHANGELOG.md +++ b/packages/firebase_core/firebase_core/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.4.1+6 + +* Update the homepage now that the package structure has changed. + ## 0.4.1+5 * Remove deprecated [firebase-core](https://firebase.google.com/support/release-notes/android) dependency. diff --git a/packages/firebase_core/LICENSE b/packages/firebase_core/firebase_core/LICENSE similarity index 100% rename from packages/firebase_core/LICENSE rename to packages/firebase_core/firebase_core/LICENSE diff --git a/packages/firebase_core/README.md b/packages/firebase_core/firebase_core/README.md similarity index 100% rename from packages/firebase_core/README.md rename to packages/firebase_core/firebase_core/README.md diff --git a/packages/firebase_core/android/build.gradle b/packages/firebase_core/firebase_core/android/build.gradle similarity index 100% rename from packages/firebase_core/android/build.gradle rename to packages/firebase_core/firebase_core/android/build.gradle diff --git a/packages/firebase_core/android/settings.gradle b/packages/firebase_core/firebase_core/android/settings.gradle similarity index 100% rename from packages/firebase_core/android/settings.gradle rename to packages/firebase_core/firebase_core/android/settings.gradle diff --git a/packages/firebase_core/android/src/main/AndroidManifest.xml b/packages/firebase_core/firebase_core/android/src/main/AndroidManifest.xml similarity index 100% rename from packages/firebase_core/android/src/main/AndroidManifest.xml rename to packages/firebase_core/firebase_core/android/src/main/AndroidManifest.xml diff --git a/packages/firebase_core/android/src/main/java/io/flutter/plugins/firebase/core/FirebaseCorePlugin.java b/packages/firebase_core/firebase_core/android/src/main/java/io/flutter/plugins/firebase/core/FirebaseCorePlugin.java similarity index 100% rename from packages/firebase_core/android/src/main/java/io/flutter/plugins/firebase/core/FirebaseCorePlugin.java rename to packages/firebase_core/firebase_core/android/src/main/java/io/flutter/plugins/firebase/core/FirebaseCorePlugin.java diff --git a/packages/firebase_core/android/src/main/java/io/flutter/plugins/firebase/core/FlutterFirebaseAppRegistrar.java b/packages/firebase_core/firebase_core/android/src/main/java/io/flutter/plugins/firebase/core/FlutterFirebaseAppRegistrar.java similarity index 100% rename from packages/firebase_core/android/src/main/java/io/flutter/plugins/firebase/core/FlutterFirebaseAppRegistrar.java rename to packages/firebase_core/firebase_core/android/src/main/java/io/flutter/plugins/firebase/core/FlutterFirebaseAppRegistrar.java diff --git a/packages/firebase_core/android/user-agent.gradle b/packages/firebase_core/firebase_core/android/user-agent.gradle similarity index 100% rename from packages/firebase_core/android/user-agent.gradle rename to packages/firebase_core/firebase_core/android/user-agent.gradle diff --git a/packages/firebase_core/example/.metadata b/packages/firebase_core/firebase_core/example/.metadata similarity index 100% rename from packages/firebase_core/example/.metadata rename to packages/firebase_core/firebase_core/example/.metadata diff --git a/packages/firebase_core/example/README.md b/packages/firebase_core/firebase_core/example/README.md similarity index 100% rename from packages/firebase_core/example/README.md rename to packages/firebase_core/firebase_core/example/README.md diff --git a/packages/firebase_core/example/android.iml b/packages/firebase_core/firebase_core/example/android.iml similarity index 100% rename from packages/firebase_core/example/android.iml rename to packages/firebase_core/firebase_core/example/android.iml diff --git a/packages/firebase_core/example/android/app/build.gradle b/packages/firebase_core/firebase_core/example/android/app/build.gradle similarity index 100% rename from packages/firebase_core/example/android/app/build.gradle rename to packages/firebase_core/firebase_core/example/android/app/build.gradle diff --git a/packages/firebase_core/example/android/app/gradle/wrapper/gradle-wrapper.properties b/packages/firebase_core/firebase_core/example/android/app/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from packages/firebase_core/example/android/app/gradle/wrapper/gradle-wrapper.properties rename to packages/firebase_core/firebase_core/example/android/app/gradle/wrapper/gradle-wrapper.properties diff --git a/packages/firebase_core/example/android/app/src/androidTest/java/io/flutter/plugins/firebase/core/EmbeddingV1ActivityTest.java b/packages/firebase_core/firebase_core/example/android/app/src/androidTest/java/io/flutter/plugins/firebase/core/EmbeddingV1ActivityTest.java similarity index 100% rename from packages/firebase_core/example/android/app/src/androidTest/java/io/flutter/plugins/firebase/core/EmbeddingV1ActivityTest.java rename to packages/firebase_core/firebase_core/example/android/app/src/androidTest/java/io/flutter/plugins/firebase/core/EmbeddingV1ActivityTest.java diff --git a/packages/firebase_core/example/android/app/src/androidTest/java/io/flutter/plugins/firebase/core/MainActivityTest.java b/packages/firebase_core/firebase_core/example/android/app/src/androidTest/java/io/flutter/plugins/firebase/core/MainActivityTest.java similarity index 100% rename from packages/firebase_core/example/android/app/src/androidTest/java/io/flutter/plugins/firebase/core/MainActivityTest.java rename to packages/firebase_core/firebase_core/example/android/app/src/androidTest/java/io/flutter/plugins/firebase/core/MainActivityTest.java diff --git a/packages/firebase_core/example/android/app/src/main/AndroidManifest.xml b/packages/firebase_core/firebase_core/example/android/app/src/main/AndroidManifest.xml similarity index 100% rename from packages/firebase_core/example/android/app/src/main/AndroidManifest.xml rename to packages/firebase_core/firebase_core/example/android/app/src/main/AndroidManifest.xml diff --git a/packages/firebase_core/example/android/app/src/main/java/io/flutter/plugins/firebasecoreexample/EmbeddingV1Activity.java b/packages/firebase_core/firebase_core/example/android/app/src/main/java/io/flutter/plugins/firebasecoreexample/EmbeddingV1Activity.java similarity index 100% rename from packages/firebase_core/example/android/app/src/main/java/io/flutter/plugins/firebasecoreexample/EmbeddingV1Activity.java rename to packages/firebase_core/firebase_core/example/android/app/src/main/java/io/flutter/plugins/firebasecoreexample/EmbeddingV1Activity.java diff --git a/packages/firebase_core/example/android/app/src/main/java/io/flutter/plugins/firebasecoreexample/MainActivity.java b/packages/firebase_core/firebase_core/example/android/app/src/main/java/io/flutter/plugins/firebasecoreexample/MainActivity.java similarity index 100% rename from packages/firebase_core/example/android/app/src/main/java/io/flutter/plugins/firebasecoreexample/MainActivity.java rename to packages/firebase_core/firebase_core/example/android/app/src/main/java/io/flutter/plugins/firebasecoreexample/MainActivity.java diff --git a/packages/firebase_core/example/android/app/src/main/res/drawable/launch_background.xml b/packages/firebase_core/firebase_core/example/android/app/src/main/res/drawable/launch_background.xml similarity index 100% rename from packages/firebase_core/example/android/app/src/main/res/drawable/launch_background.xml rename to packages/firebase_core/firebase_core/example/android/app/src/main/res/drawable/launch_background.xml diff --git a/packages/firebase_core/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/firebase_core/firebase_core/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from packages/firebase_core/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png rename to packages/firebase_core/firebase_core/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/packages/firebase_core/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/firebase_core/firebase_core/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from packages/firebase_core/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png rename to packages/firebase_core/firebase_core/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/packages/firebase_core/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/firebase_core/firebase_core/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from packages/firebase_core/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to packages/firebase_core/firebase_core/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/packages/firebase_core/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/firebase_core/firebase_core/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from packages/firebase_core/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to packages/firebase_core/firebase_core/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/packages/firebase_core/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/firebase_core/firebase_core/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from packages/firebase_core/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to packages/firebase_core/firebase_core/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/packages/firebase_core/example/android/app/src/main/res/values/styles.xml b/packages/firebase_core/firebase_core/example/android/app/src/main/res/values/styles.xml similarity index 100% rename from packages/firebase_core/example/android/app/src/main/res/values/styles.xml rename to packages/firebase_core/firebase_core/example/android/app/src/main/res/values/styles.xml diff --git a/packages/firebase_core/example/android/build.gradle b/packages/firebase_core/firebase_core/example/android/build.gradle similarity index 100% rename from packages/firebase_core/example/android/build.gradle rename to packages/firebase_core/firebase_core/example/android/build.gradle diff --git a/packages/firebase_core/example/android/gradle.properties b/packages/firebase_core/firebase_core/example/android/gradle.properties similarity index 100% rename from packages/firebase_core/example/android/gradle.properties rename to packages/firebase_core/firebase_core/example/android/gradle.properties diff --git a/packages/firebase_core/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/firebase_core/firebase_core/example/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from packages/firebase_core/example/android/gradle/wrapper/gradle-wrapper.properties rename to packages/firebase_core/firebase_core/example/android/gradle/wrapper/gradle-wrapper.properties diff --git a/packages/firebase_core/example/android/settings.gradle b/packages/firebase_core/firebase_core/example/android/settings.gradle similarity index 100% rename from packages/firebase_core/example/android/settings.gradle rename to packages/firebase_core/firebase_core/example/android/settings.gradle diff --git a/packages/firebase_core/example/firebase_core_example.iml b/packages/firebase_core/firebase_core/example/firebase_core_example.iml similarity index 100% rename from packages/firebase_core/example/firebase_core_example.iml rename to packages/firebase_core/firebase_core/example/firebase_core_example.iml diff --git a/packages/firebase_core/example/firebase_core_example_android.iml b/packages/firebase_core/firebase_core/example/firebase_core_example_android.iml similarity index 100% rename from packages/firebase_core/example/firebase_core_example_android.iml rename to packages/firebase_core/firebase_core/example/firebase_core_example_android.iml diff --git a/packages/firebase_core/example/ios/Flutter/AppFrameworkInfo.plist b/packages/firebase_core/firebase_core/example/ios/Flutter/AppFrameworkInfo.plist similarity index 100% rename from packages/firebase_core/example/ios/Flutter/AppFrameworkInfo.plist rename to packages/firebase_core/firebase_core/example/ios/Flutter/AppFrameworkInfo.plist diff --git a/packages/firebase_core/example/ios/Flutter/Debug.xcconfig b/packages/firebase_core/firebase_core/example/ios/Flutter/Debug.xcconfig similarity index 100% rename from packages/firebase_core/example/ios/Flutter/Debug.xcconfig rename to packages/firebase_core/firebase_core/example/ios/Flutter/Debug.xcconfig diff --git a/packages/firebase_core/example/ios/Flutter/Release.xcconfig b/packages/firebase_core/firebase_core/example/ios/Flutter/Release.xcconfig similarity index 100% rename from packages/firebase_core/example/ios/Flutter/Release.xcconfig rename to packages/firebase_core/firebase_core/example/ios/Flutter/Release.xcconfig diff --git a/packages/firebase_core/example/ios/Runner.xcodeproj/project.pbxproj b/packages/firebase_core/firebase_core/example/ios/Runner.xcodeproj/project.pbxproj similarity index 100% rename from packages/firebase_core/example/ios/Runner.xcodeproj/project.pbxproj rename to packages/firebase_core/firebase_core/example/ios/Runner.xcodeproj/project.pbxproj diff --git a/packages/firebase_core/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/firebase_core/firebase_core/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from packages/firebase_core/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to packages/firebase_core/firebase_core/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/packages/firebase_core/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/firebase_core/firebase_core/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme similarity index 100% rename from packages/firebase_core/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme rename to packages/firebase_core/firebase_core/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme diff --git a/packages/firebase_core/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/firebase_core/firebase_core/example/ios/Runner.xcworkspace/contents.xcworkspacedata similarity index 100% rename from packages/firebase_core/example/ios/Runner.xcworkspace/contents.xcworkspacedata rename to packages/firebase_core/firebase_core/example/ios/Runner.xcworkspace/contents.xcworkspacedata diff --git a/packages/firebase_core/example/ios/Runner/AppDelegate.h b/packages/firebase_core/firebase_core/example/ios/Runner/AppDelegate.h similarity index 100% rename from packages/firebase_core/example/ios/Runner/AppDelegate.h rename to packages/firebase_core/firebase_core/example/ios/Runner/AppDelegate.h diff --git a/packages/firebase_core/example/ios/Runner/AppDelegate.m b/packages/firebase_core/firebase_core/example/ios/Runner/AppDelegate.m similarity index 100% rename from packages/firebase_core/example/ios/Runner/AppDelegate.m rename to packages/firebase_core/firebase_core/example/ios/Runner/AppDelegate.m diff --git a/packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json rename to packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png similarity index 100% rename from packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png rename to packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png diff --git a/packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png similarity index 100% rename from packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png rename to packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png diff --git a/packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png similarity index 100% rename from packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png rename to packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png diff --git a/packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png similarity index 100% rename from packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png rename to packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png diff --git a/packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png similarity index 100% rename from packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png rename to packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png diff --git a/packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png similarity index 100% rename from packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png rename to packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png diff --git a/packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png similarity index 100% rename from packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png rename to packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png diff --git a/packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png similarity index 100% rename from packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png rename to packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png diff --git a/packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png similarity index 100% rename from packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png rename to packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png diff --git a/packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png similarity index 100% rename from packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png rename to packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png diff --git a/packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png similarity index 100% rename from packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png rename to packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png diff --git a/packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png similarity index 100% rename from packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png rename to packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png diff --git a/packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png similarity index 100% rename from packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png rename to packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png diff --git a/packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png similarity index 100% rename from packages/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png rename to packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png diff --git a/packages/firebase_core/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json similarity index 100% rename from packages/firebase_core/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json rename to packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json diff --git a/packages/firebase_core/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png similarity index 100% rename from packages/firebase_core/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png rename to packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png diff --git a/packages/firebase_core/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png similarity index 100% rename from packages/firebase_core/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png rename to packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png diff --git a/packages/firebase_core/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png similarity index 100% rename from packages/firebase_core/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png rename to packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png diff --git a/packages/firebase_core/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md similarity index 100% rename from packages/firebase_core/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md rename to packages/firebase_core/firebase_core/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md diff --git a/packages/firebase_core/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/packages/firebase_core/firebase_core/example/ios/Runner/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from packages/firebase_core/example/ios/Runner/Base.lproj/LaunchScreen.storyboard rename to packages/firebase_core/firebase_core/example/ios/Runner/Base.lproj/LaunchScreen.storyboard diff --git a/packages/firebase_core/example/ios/Runner/Base.lproj/Main.storyboard b/packages/firebase_core/firebase_core/example/ios/Runner/Base.lproj/Main.storyboard similarity index 100% rename from packages/firebase_core/example/ios/Runner/Base.lproj/Main.storyboard rename to packages/firebase_core/firebase_core/example/ios/Runner/Base.lproj/Main.storyboard diff --git a/packages/firebase_core/example/ios/Runner/Info.plist b/packages/firebase_core/firebase_core/example/ios/Runner/Info.plist similarity index 100% rename from packages/firebase_core/example/ios/Runner/Info.plist rename to packages/firebase_core/firebase_core/example/ios/Runner/Info.plist diff --git a/packages/firebase_core/example/ios/Runner/main.m b/packages/firebase_core/firebase_core/example/ios/Runner/main.m similarity index 100% rename from packages/firebase_core/example/ios/Runner/main.m rename to packages/firebase_core/firebase_core/example/ios/Runner/main.m diff --git a/packages/firebase_core/example/lib/main.dart b/packages/firebase_core/firebase_core/example/lib/main.dart similarity index 100% rename from packages/firebase_core/example/lib/main.dart rename to packages/firebase_core/firebase_core/example/lib/main.dart diff --git a/packages/firebase_core/example/pubspec.yaml b/packages/firebase_core/firebase_core/example/pubspec.yaml similarity index 100% rename from packages/firebase_core/example/pubspec.yaml rename to packages/firebase_core/firebase_core/example/pubspec.yaml diff --git a/packages/firebase_core/firebase_core_android.iml b/packages/firebase_core/firebase_core/firebase_core_android.iml similarity index 100% rename from packages/firebase_core/firebase_core_android.iml rename to packages/firebase_core/firebase_core/firebase_core_android.iml diff --git a/packages/firebase_core/ios/Assets/.gitkeep b/packages/firebase_core/firebase_core/ios/Assets/.gitkeep similarity index 100% rename from packages/firebase_core/ios/Assets/.gitkeep rename to packages/firebase_core/firebase_core/ios/Assets/.gitkeep diff --git a/packages/firebase_core/ios/Classes/FirebaseCorePlugin.h b/packages/firebase_core/firebase_core/ios/Classes/FirebaseCorePlugin.h similarity index 100% rename from packages/firebase_core/ios/Classes/FirebaseCorePlugin.h rename to packages/firebase_core/firebase_core/ios/Classes/FirebaseCorePlugin.h diff --git a/packages/firebase_core/ios/Classes/FirebaseCorePlugin.m b/packages/firebase_core/firebase_core/ios/Classes/FirebaseCorePlugin.m similarity index 100% rename from packages/firebase_core/ios/Classes/FirebaseCorePlugin.m rename to packages/firebase_core/firebase_core/ios/Classes/FirebaseCorePlugin.m diff --git a/packages/firebase_core/ios/firebase_core.podspec b/packages/firebase_core/firebase_core/ios/firebase_core.podspec similarity index 100% rename from packages/firebase_core/ios/firebase_core.podspec rename to packages/firebase_core/firebase_core/ios/firebase_core.podspec diff --git a/packages/firebase_core/lib/firebase_core.dart b/packages/firebase_core/firebase_core/lib/firebase_core.dart similarity index 100% rename from packages/firebase_core/lib/firebase_core.dart rename to packages/firebase_core/firebase_core/lib/firebase_core.dart diff --git a/packages/firebase_core/lib/src/firebase_app.dart b/packages/firebase_core/firebase_core/lib/src/firebase_app.dart similarity index 100% rename from packages/firebase_core/lib/src/firebase_app.dart rename to packages/firebase_core/firebase_core/lib/src/firebase_app.dart diff --git a/packages/firebase_core/lib/src/firebase_options.dart b/packages/firebase_core/firebase_core/lib/src/firebase_options.dart similarity index 100% rename from packages/firebase_core/lib/src/firebase_options.dart rename to packages/firebase_core/firebase_core/lib/src/firebase_options.dart diff --git a/packages/firebase_core/pubspec.yaml b/packages/firebase_core/firebase_core/pubspec.yaml similarity index 90% rename from packages/firebase_core/pubspec.yaml rename to packages/firebase_core/firebase_core/pubspec.yaml index 0a810a2874b4..1bc263c302d5 100644 --- a/packages/firebase_core/pubspec.yaml +++ b/packages/firebase_core/firebase_core/pubspec.yaml @@ -2,8 +2,8 @@ name: firebase_core description: Flutter plugin for Firebase Core, enabling connecting to multiple Firebase apps. author: Flutter Team -homepage: https://github.com/FirebaseExtended/flutterfire/tree/master/packages/firebase_core -version: 0.4.1+5 +homepage: https://github.com/FirebaseExtended/flutterfire/tree/master/packages/firebase_core/firebase_core +version: 0.4.1+6 flutter: plugin: diff --git a/packages/firebase_core/test/firebase_core_e2e.dart b/packages/firebase_core/firebase_core/test/firebase_core_e2e.dart similarity index 100% rename from packages/firebase_core/test/firebase_core_e2e.dart rename to packages/firebase_core/firebase_core/test/firebase_core_e2e.dart diff --git a/packages/firebase_core/test/firebase_core_test.dart b/packages/firebase_core/firebase_core/test/firebase_core_test.dart similarity index 100% rename from packages/firebase_core/test/firebase_core_test.dart rename to packages/firebase_core/firebase_core/test/firebase_core_test.dart diff --git a/packages/firebase_core/firebase_core_platform_interface/CHANGELOG.md b/packages/firebase_core/firebase_core_platform_interface/CHANGELOG.md new file mode 100644 index 000000000000..6fadda91b380 --- /dev/null +++ b/packages/firebase_core/firebase_core_platform_interface/CHANGELOG.md @@ -0,0 +1,3 @@ +## 1.0.0 + +- Initial open-source release. diff --git a/packages/firebase_core/firebase_core_platform_interface/LICENSE b/packages/firebase_core/firebase_core_platform_interface/LICENSE new file mode 100644 index 000000000000..000b4618d2bd --- /dev/null +++ b/packages/firebase_core/firebase_core_platform_interface/LICENSE @@ -0,0 +1,27 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/packages/firebase_core/firebase_core_platform_interface/README.md b/packages/firebase_core/firebase_core_platform_interface/README.md new file mode 100644 index 000000000000..e0dad6c744cb --- /dev/null +++ b/packages/firebase_core/firebase_core_platform_interface/README.md @@ -0,0 +1,26 @@ +# firebase_core_platform_interface + +A common platform interface for the [`firebase_core`][1] plugin. + +This interface allows platform-specific implementations of the `firebase_core` +plugin, as well as the plugin itself, to ensure they are supporting the +same interface. + +# Usage + +To implement a new platform-specific implementation of `firebase_core`, extend +[`FirebaseCorePlatform`][2] with an implementation that performs the +platform-specific behavior, and when you register your plugin, set the default +`FirebaseCorePlatform` by calling +`FirebaseCorePlatform.instance = MyFirebaseCore()`. + +# Note on breaking changes + +Strongly prefer non-breaking changes (such as adding a method to the interface) +over breaking changes for this package. + +See https://flutter.dev/go/platform-interface-breaking-changes for a discussion +on why a less-clean interface is preferable to a breaking change. + +[1]: ../firebase_core +[2]: lib/firebase_core_platform_interface.dart diff --git a/packages/firebase_core/firebase_core_platform_interface/lib/firebase_core_platform_interface.dart b/packages/firebase_core/firebase_core_platform_interface/lib/firebase_core_platform_interface.dart new file mode 100644 index 000000000000..4fd1281abac9 --- /dev/null +++ b/packages/firebase_core/firebase_core_platform_interface/lib/firebase_core_platform_interface.dart @@ -0,0 +1,85 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'dart:async'; + +import 'package:meta/meta.dart' show visibleForTesting; + +import 'src/firebase_options.dart'; +import 'src/method_channel_firebase_core.dart'; +import 'src/platform_firebase_app.dart'; + +export 'src/firebase_options.dart'; +export 'src/method_channel_firebase_core.dart'; +export 'src/platform_firebase_app.dart'; + +/// The interface that implementations of `firebase_core` must extend. +/// +/// Platform implementations should extend this class rather than implement it +/// as `firebase_core` does not consider newly added methods to be breaking +/// changes. Extending this class (using `extends`) ensures that the subclass +/// will get the default implementation, while platform implementations that +/// `implements` this interface will be broken by newly added +/// [FirebaseCorePlatform] methods. +abstract class FirebaseCorePlatform { + /// Only mock implementations should set this to `true`. + /// + /// Mockito mocks implement this class with `implements` which is forbidden + /// (see class docs). This property provides a backdoor for mocks to skip the + /// verification that the class isn't implemented with `implements`. + @visibleForTesting + bool get isMock => false; + + /// The default instance of [FirebaseCorePlatform] to use. + /// + /// Platform-specific plugins should override this with their own class + /// that extends [FirebaseCorePlatform] when they register themselves. + /// + /// Defaults to [MethodChannelFirebaseCore]. + static FirebaseCorePlatform get instance => _instance; + + static FirebaseCorePlatform _instance = MethodChannelFirebaseCore(); + + // TODO(amirh): Extract common platform interface logic. + // https://github.com/flutter/flutter/issues/43368 + static set instance(FirebaseCorePlatform instance) { + if (!instance.isMock) { + try { + instance._verifyProvidesDefaultImplementations(); + } on NoSuchMethodError catch (_) { + throw AssertionError( + 'Platform interfaces must not be implemented with `implements`'); + } + } + _instance = instance; + } + + /// This method ensures that [FirebaseCorePlatform] isn't implemented with `implements`. + /// + /// See class docs for more details on why using `implements` to implement + /// [FirebaseCorePlatform] is forbidden. + /// + /// This private method is called by the [instance] setter, which should fail + /// if the provided instance is a class implemented with `implements`. + void _verifyProvidesDefaultImplementations() {} + + /// Returns the data for the Firebase app with the given [name]. + /// + /// If there is no such app, returns null. + Future appNamed(String name) { + throw UnimplementedError('appNamed() has not been implemented.'); + } + + /// Configures the app named [name] with the given [options]. + Future configure(String name, FirebaseOptions options) { + throw UnimplementedError('configure() has not been implemented.'); + } + + /// Returns a list of all extant Firebase app instances. + /// + /// If there are no live Firebase apps, returns `null`. + Future> allApps() { + throw UnimplementedError('allApps() has not been implemented.'); + } +} diff --git a/packages/firebase_core/firebase_core_platform_interface/lib/src/firebase_options.dart b/packages/firebase_core/firebase_core_platform_interface/lib/src/firebase_options.dart new file mode 100644 index 000000000000..606662156d74 --- /dev/null +++ b/packages/firebase_core/firebase_core_platform_interface/lib/src/firebase_options.dart @@ -0,0 +1,152 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:meta/meta.dart' show required; +import 'package:quiver_hashcode/hashcode.dart'; + +/// The options used to configure a Firebase app. +class FirebaseOptions { + const FirebaseOptions({ + this.apiKey, + this.bundleID, + this.clientID, + this.trackingID, + this.gcmSenderID, + this.projectID, + this.androidClientID, + @required this.googleAppID, + this.databaseURL, + this.deepLinkURLScheme, + this.storageBucket, + }) : assert(googleAppID != null); + + FirebaseOptions.from(Map map) + : apiKey = map['APIKey'], + bundleID = map['bundleID'], + clientID = map['clientID'], + trackingID = map['trackingID'], + gcmSenderID = map['GCMSenderID'], + projectID = map['projectID'], + androidClientID = map['androidClientID'], + googleAppID = map['googleAppID'], + databaseURL = map['databaseURL'], + deepLinkURLScheme = map['deepLinkURLScheme'], + storageBucket = map['storageBucket'] { + assert(googleAppID != null); + } + + /// An API key used for authenticating requests from your app, e.g. + /// "AIzaSyDdVgKwhZl0sTTTLZ7iTmt1r3N2cJLnaDk", used to identify your app to + /// Google servers. + /// + /// This property is required on Android. + final String apiKey; + + /// The iOS bundle ID for the application. Defaults to + /// `[[NSBundle mainBundle] bundleID]` when not set manually or in a plist. + /// + /// This property is used on iOS only. + final String bundleID; + + /// The OAuth2 client ID for iOS application used to authenticate Google + /// users, for example "12345.apps.googleusercontent.com", used for signing in + /// with Google. + /// + /// This property is used on iOS only. + final String clientID; + + /// The tracking ID for Google Analytics, e.g. "UA-12345678-1", used to + /// configure Google Analytics. + /// + /// This property is used on iOS only. + final String trackingID; + + /// The Project Number from the Google Developer’s console, for example + /// "012345678901", used to configure Google Cloud Messaging. + /// + /// This property is required on iOS. + final String gcmSenderID; + + /// The Project ID from the Firebase console, for example "abc-xyz-123." + final String projectID; + + /// The Android client ID, for example "12345.apps.googleusercontent.com." + /// + /// This property is used on iOS only. + final String androidClientID; + + /// The Google App ID that is used to uniquely identify an instance of an app. + /// + /// This property cannot be `null`. + final String googleAppID; + + /// The database root URL, e.g. "http://abc-xyz-123.firebaseio.com." + /// + /// This property should be set for apps that use Firebase Database. + final String databaseURL; + + /// The URL scheme used to set up Durable Deep Link service. + /// + /// This property is used on iOS only. + final String deepLinkURLScheme; + + /// The Google Cloud Storage bucket name, e.g. + /// "abc-xyz-123.storage.firebase.com." + final String storageBucket; + + Map get asMap { + return { + 'APIKey': apiKey, + 'bundleID': bundleID, + 'clientID': clientID, + 'trackingID': trackingID, + 'GCMSenderID': gcmSenderID, + 'projectID': projectID, + 'androidClientID': androidClientID, + 'googleAppID': googleAppID, + 'databaseURL': databaseURL, + 'deepLinkURLScheme': deepLinkURLScheme, + 'storageBucket': storageBucket, + }; + } + + @override + bool operator ==(dynamic other) { + if (identical(this, other)) return true; + if (other is! FirebaseOptions) return false; + return other.apiKey == apiKey && + other.bundleID == bundleID && + other.clientID == clientID && + other.trackingID == trackingID && + other.gcmSenderID == gcmSenderID && + other.projectID == projectID && + other.androidClientID == androidClientID && + other.googleAppID == googleAppID && + other.databaseURL == databaseURL && + other.deepLinkURLScheme == deepLinkURLScheme && + other.storageBucket == storageBucket; + } + + @override + int get hashCode { + return hashObjects( + [ + apiKey, + bundleID, + clientID, + trackingID, + gcmSenderID, + projectID, + androidClientID, + googleAppID, + databaseURL, + deepLinkURLScheme, + storageBucket, + ], + ); + } + + @override + String toString() => asMap.toString(); +} diff --git a/packages/firebase_core/firebase_core_platform_interface/lib/src/method_channel_firebase_core.dart b/packages/firebase_core/firebase_core_platform_interface/lib/src/method_channel_firebase_core.dart new file mode 100644 index 000000000000..8a03352bbdd2 --- /dev/null +++ b/packages/firebase_core/firebase_core_platform_interface/lib/src/method_channel_firebase_core.dart @@ -0,0 +1,52 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'dart:async'; + +import 'package:flutter/services.dart'; +import 'package:meta/meta.dart' show visibleForTesting; + +import '../firebase_core_platform_interface.dart'; + +class MethodChannelFirebaseCore extends FirebaseCorePlatform { + @visibleForTesting + static const MethodChannel channel = MethodChannel( + 'plugins.flutter.io/firebase_core', + ); + + @override + Future appNamed(String name) async { + final Map app = + await channel.invokeMapMethod( + 'FirebaseApp#appNamed', + name, + ); + if (app == null) return null; + return PlatformFirebaseApp( + app['name'], FirebaseOptions.from(app['options'])); + } + + @override + Future configure(String name, FirebaseOptions options) { + return channel.invokeMethod( + 'FirebaseApp#configure', + {'name': name, 'options': options.asMap}, + ); + } + + @override + Future> allApps() async { + final List result = await channel.invokeListMethod( + 'FirebaseApp#allApps', + ); + return result + ?.map( + (dynamic app) => PlatformFirebaseApp( + app['name'], + FirebaseOptions.from(app['options']), + ), + ) + ?.toList(); + } +} diff --git a/packages/firebase_core/firebase_core_platform_interface/lib/src/platform_firebase_app.dart b/packages/firebase_core/firebase_core_platform_interface/lib/src/platform_firebase_app.dart new file mode 100644 index 000000000000..070e15298302 --- /dev/null +++ b/packages/firebase_core/firebase_core_platform_interface/lib/src/platform_firebase_app.dart @@ -0,0 +1,41 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:quiver_hashcode/hashcode.dart'; + +import 'firebase_options.dart'; + +/// A data class storing the name and options of a Firebase app. +/// +/// This is created as a result of calling +/// [`firebase.initializeApp`](https://firebase.google.com/docs/reference/js/firebase#initialize-app) +/// in the various platform implementations. +/// +/// This class is different from `FirebaseApp` declared in +/// `package:firebase_core`: `FirebaseApp` is initialized synchronously, and +/// the options for the app are obtained via a call that returns +/// `Future`. This class is the platform representation of a +/// Firebase app. +class PlatformFirebaseApp { + PlatformFirebaseApp(this.name, this.options); + + /// The name of this Firebase app. + final String name; + + /// The options that this app was configured with. + final FirebaseOptions options; + + @override + bool operator ==(dynamic other) { + if (identical(this, other)) return true; + if (other is! PlatformFirebaseApp) return false; + return other.name == name && other.options == options; + } + + @override + int get hashCode => hash2(name, options); + + @override + String toString() => '$PlatformFirebaseApp($name)'; +} diff --git a/packages/firebase_core/firebase_core_platform_interface/pubspec.yaml b/packages/firebase_core/firebase_core_platform_interface/pubspec.yaml new file mode 100644 index 000000000000..c343236ae38c --- /dev/null +++ b/packages/firebase_core/firebase_core_platform_interface/pubspec.yaml @@ -0,0 +1,22 @@ +name: firebase_core_platform_interface +description: A common platform interface for the firebase_core plugin. +author: Flutter Team +homepage: https://github.com/FirebaseExtended/flutterfire/tree/master/packages/firebase_core/firebase_core_platform_interface +# NOTE: We strongly prefer non-breaking changes, even at the expense of a +# less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes +version: 1.0.0 + +dependencies: + flutter: + sdk: flutter + meta: ^1.0.5 + quiver_hashcode: ^2.0.0 + +dev_dependencies: + flutter_test: + sdk: flutter + mockito: ^4.1.1 + +environment: + sdk: ">=2.0.0-dev.28.0 <3.0.0" + flutter: ">=1.9.1+hotfix.5 <2.0.0" diff --git a/packages/firebase_core/firebase_core_platform_interface/test/firebase_core_platform_interface_test.dart b/packages/firebase_core/firebase_core_platform_interface/test/firebase_core_platform_interface_test.dart new file mode 100644 index 000000000000..8feb5a50e95d --- /dev/null +++ b/packages/firebase_core/firebase_core_platform_interface/test/firebase_core_platform_interface_test.dart @@ -0,0 +1,37 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:firebase_core_platform_interface/firebase_core_platform_interface.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mockito/mockito.dart'; + +void main() { + group('$FirebaseCorePlatform', () { + test('$MethodChannelFirebaseCore is the default instance', () { + expect(FirebaseCorePlatform.instance, isA()); + }); + + test('Cannot be implemented with `implements`', () { + expect(() { + FirebaseCorePlatform.instance = ImplementsFirebaseCorePlatform(); + }, throwsAssertionError); + }); + + test('Can be extended', () { + FirebaseCorePlatform.instance = ExtendsFirebaseCorePlatform(); + }); + + test('Can be mocked with `implements`', () { + final ImplementsFirebaseCorePlatform mock = + ImplementsFirebaseCorePlatform(); + when(mock.isMock).thenReturn(true); + FirebaseCorePlatform.instance = mock; + }); + }); +} + +class ImplementsFirebaseCorePlatform extends Mock + implements FirebaseCorePlatform {} + +class ExtendsFirebaseCorePlatform extends FirebaseCorePlatform {} diff --git a/packages/firebase_core/firebase_core_platform_interface/test/method_channel_firebase_core_test.dart b/packages/firebase_core/firebase_core_platform_interface/test/method_channel_firebase_core_test.dart new file mode 100644 index 000000000000..e6051b70b73b --- /dev/null +++ b/packages/firebase_core/firebase_core_platform_interface/test/method_channel_firebase_core_test.dart @@ -0,0 +1,148 @@ +// Copyright 2019 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:firebase_core_platform_interface/firebase_core_platform_interface.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + + group('$MethodChannelFirebaseCore', () { + final MethodChannelFirebaseCore channelPlatform = + MethodChannelFirebaseCore(); + final List log = []; + const FirebaseOptions testOptions = FirebaseOptions( + apiKey: 'testAPIKey', + bundleID: 'testBundleID', + clientID: 'testClientID', + trackingID: 'testTrackingID', + gcmSenderID: 'testGCMSenderID', + projectID: 'testProjectID', + androidClientID: 'testAndroidClientID', + googleAppID: 'testGoogleAppID', + databaseURL: 'testDatabaseURL', + deepLinkURLScheme: 'testDeepLinkURLScheme', + storageBucket: 'testStorageBucket', + ); + final PlatformFirebaseApp testApp = + PlatformFirebaseApp('testApp', testOptions); + + setUp(() async { + MethodChannelFirebaseCore.channel + .setMockMethodCallHandler((MethodCall methodCall) async { + log.add(methodCall); + switch (methodCall.method) { + case 'FirebaseApp#appNamed': + if (methodCall.arguments != 'testApp') return null; + return { + 'name': 'testApp', + 'options': { + 'APIKey': 'testAPIKey', + 'bundleID': 'testBundleID', + 'clientID': 'testClientID', + 'trackingID': 'testTrackingID', + 'GCMSenderID': 'testGCMSenderID', + 'projectID': 'testProjectID', + 'androidClientID': 'testAndroidClientID', + 'googleAppID': 'testGoogleAppID', + 'databaseURL': 'testDatabaseURL', + 'deepLinkURLScheme': 'testDeepLinkURLScheme', + 'storageBucket': 'testStorageBucket', + }, + }; + case 'FirebaseApp#allApps': + return >[ + { + 'name': 'testApp', + 'options': { + 'APIKey': 'testAPIKey', + 'bundleID': 'testBundleID', + 'clientID': 'testClientID', + 'trackingID': 'testTrackingID', + 'GCMSenderID': 'testGCMSenderID', + 'projectID': 'testProjectID', + 'androidClientID': 'testAndroidClientID', + 'googleAppID': 'testGoogleAppID', + 'databaseURL': 'testDatabaseURL', + 'deepLinkURLScheme': 'testDeepLinkURLScheme', + 'storageBucket': 'testStorageBucket', + }, + }, + ]; + default: + return null; + } + }); + log.clear(); + }); + + test('configure', () async { + await channelPlatform.configure( + 'testApp', + testOptions, + ); + await channelPlatform.configure( + 'newApp', + testOptions, + ); + expect( + log, + [ + isMethodCall( + 'FirebaseApp#configure', + arguments: { + 'name': 'testApp', + 'options': testOptions.asMap, + }, + ), + isMethodCall( + 'FirebaseApp#configure', + arguments: { + 'name': 'newApp', + 'options': testOptions.asMap, + }, + ), + ], + ); + }); + + test('appNamed', () async { + final PlatformFirebaseApp existingApp = + await channelPlatform.appNamed('testApp'); + expect(existingApp.name, equals('testApp')); + expect(existingApp.options, equals(testOptions)); + final PlatformFirebaseApp missingApp = + await channelPlatform.appNamed('missingApp'); + expect(missingApp, isNull); + expect( + log, + [ + isMethodCall( + 'FirebaseApp#appNamed', + arguments: 'testApp', + ), + isMethodCall( + 'FirebaseApp#appNamed', + arguments: 'missingApp', + ), + ], + ); + }); + + test('allApps', () async { + final List allApps = await channelPlatform.allApps(); + expect(allApps, equals([testApp])); + expect( + log, + [ + isMethodCall( + 'FirebaseApp#allApps', + arguments: null, + ), + ], + ); + }); + }); +} diff --git a/script/check_publish.sh b/script/check_publish.sh index 4738405ca3e4..33f0d3cf94e2 100755 --- a/script/check_publish.sh +++ b/script/check_publish.sh @@ -12,8 +12,8 @@ source "$SCRIPT_DIR/common.sh" function check_publish() { local failures=() - for package_name in "$@"; do - local dir="$REPO_DIR/packages/$package_name" + for dir in $(pub global run flutter_plugin_tools list --plugins="$1"); do + local package_name=$(basename "$dir") echo "Checking that $package_name can be published." if [[ $(cd "$dir" && cat pubspec.yaml | grep -E "^publish_to: none") ]]; then echo "Package $package_name is marked as unpublishable. Skipping." @@ -33,9 +33,9 @@ function check_publish() { return "${#failures[@]}" } -# Sets CHANGED_PACKAGE_LIST +# Sets CHANGED_PACKAGE_LIST and CHANGE_PACKAGES check_changed_packages if [[ "${#CHANGED_PACKAGE_LIST[@]}" != 0 ]]; then - check_publish "${CHANGED_PACKAGE_LIST[@]}" + check_publish "${CHANGED_PACKAGES}" fi diff --git a/script/common.sh b/script/common.sh index 749561c94381..7950a3ea71cd 100644 --- a/script/common.sh +++ b/script/common.sh @@ -23,13 +23,12 @@ function check_changed_packages() { return 1 fi - # Filter out any packages that don't have a pubspec.yaml: they have probably - # been deleted in this PR. Also filter out `location_background` since it - # should be removed soon. CHANGED_PACKAGES="" CHANGED_PACKAGE_LIST=() + + # Filter out packages that have been deleted. for package in "${packages[@]}"; do - if [ -f "$REPO_DIR/packages/$package/pubspec.yaml" ] && [ $package != "location_background" ]; then + if [ -d "$REPO_DIR/packages/$package" ]; then CHANGED_PACKAGES="${CHANGED_PACKAGES},$package" CHANGED_PACKAGE_LIST=("${CHANGED_PACKAGE_LIST[@]}" "$package") fi