Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(storage): properly allow a null SettableMetadata object to native #12373

Closed
wants to merge 7 commits into from
Closed
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@ include(${EPHEMERAL_DIR}/generated_config.cmake)
# https://github.com/flutter/flutter/issues/57146.
set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper")

# Set fallback configurations for older versions of the flutter tool.
if (NOT DEFINED FLUTTER_TARGET_PLATFORM)
set(FLUTTER_TARGET_PLATFORM "windows-x64")
endif()

# === Flutter Library ===
set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll")

Expand Down Expand Up @@ -92,7 +97,7 @@ add_custom_command(
COMMAND ${CMAKE_COMMAND} -E env
${FLUTTER_TOOL_ENVIRONMENT}
"${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat"
windows-x64 $<CONFIG>
${FLUTTER_TARGET_PLATFORM} $<CONFIG>
VERBATIM
)
add_custom_target(flutter_assemble DEPENDS
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -389,8 +389,12 @@ public void referenceListAll(
});
}

@Nullable
StorageMetadata getMetaDataFromPigeon(
GeneratedAndroidFirebaseStorage.PigeonSettableMetadata pigeonSettableMetatdata) {
@Nullable GeneratedAndroidFirebaseStorage.PigeonSettableMetadata pigeonSettableMetatdata) {
if (pigeonSettableMetatdata == null) {
return null;
}
StorageMetadata.Builder androidMetaDataBuilder =
new StorageMetadata.Builder()
.setCacheControl(pigeonSettableMetatdata.getCacheControl())
Expand Down Expand Up @@ -438,7 +442,7 @@ public void referencePutData(
@NonNull GeneratedAndroidFirebaseStorage.PigeonStorageFirebaseApp app,
@NonNull GeneratedAndroidFirebaseStorage.PigeonStorageReference reference,
@NonNull byte[] data,
@NonNull GeneratedAndroidFirebaseStorage.PigeonSettableMetadata settableMetaData,
@Nullable GeneratedAndroidFirebaseStorage.PigeonSettableMetadata settableMetaData,
@NonNull Long handle,
@NonNull GeneratedAndroidFirebaseStorage.Result<String> result) {

Expand All @@ -464,7 +468,7 @@ public void referencePutString(
@NonNull GeneratedAndroidFirebaseStorage.PigeonStorageReference reference,
@NonNull String data,
@NonNull Long format,
@NonNull GeneratedAndroidFirebaseStorage.PigeonSettableMetadata settableMetaData,
@Nullable GeneratedAndroidFirebaseStorage.PigeonSettableMetadata settableMetaData,
@NonNull Long handle,
@NonNull GeneratedAndroidFirebaseStorage.Result<String> result) {

Expand Down Expand Up @@ -493,7 +497,7 @@ public void referencePutFile(
@NonNull GeneratedAndroidFirebaseStorage.PigeonStorageFirebaseApp app,
@NonNull GeneratedAndroidFirebaseStorage.PigeonStorageReference reference,
@NonNull String filePath,
@NonNull GeneratedAndroidFirebaseStorage.PigeonSettableMetadata settableMetaData,
@Nullable GeneratedAndroidFirebaseStorage.PigeonSettableMetadata settableMetaData,
@NonNull Long handle,
@NonNull GeneratedAndroidFirebaseStorage.Result<String> result) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -779,7 +779,7 @@ void referencePutData(
@NonNull PigeonStorageFirebaseApp app,
@NonNull PigeonStorageReference reference,
@NonNull byte[] data,
@NonNull PigeonSettableMetadata settableMetaData,
@Nullable PigeonSettableMetadata settableMetaData,
@NonNull Long handle,
@NonNull Result<String> result);

Expand All @@ -788,15 +788,15 @@ void referencePutString(
@NonNull PigeonStorageReference reference,
@NonNull String data,
@NonNull Long format,
@NonNull PigeonSettableMetadata settableMetaData,
@Nullable PigeonSettableMetadata settableMetaData,
@NonNull Long handle,
@NonNull Result<String> result);

void referencePutFile(
@NonNull PigeonStorageFirebaseApp app,
@NonNull PigeonStorageReference reference,
@NonNull String filePath,
@NonNull PigeonSettableMetadata settableMetaData,
@Nullable PigeonSettableMetadata settableMetaData,
@NonNull Long handle,
@NonNull Result<String> result);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,6 @@
<string>arm64</string>
</array>
<key>MinimumOSVersion</key>
<string>11.0</string>
<string>12.0</string>
</dict>
</plist>
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
platform :ios, '11.0'
platform :ios, '12.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1430;
LastUpgradeCheck = 1510;
ORGANIZATIONNAME = "The Chromium Authors";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1430"
LastUpgradeVersion = "1510"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
Expand Down
12 changes: 6 additions & 6 deletions packages/firebase_storage/firebase_storage/example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -100,15 +100,15 @@ class _TaskManager extends State<TaskManager> {
.child('flutter-tests')
.child('/some-image.jpg');

final metadata = SettableMetadata(
contentType: 'image/jpeg',
customMetadata: {'picked-file-path': file.path},
);
// final metadata = SettableMetadata(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe reinstate this

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reinstated :)

// contentType: 'image/jpeg',
// customMetadata: {'picked-file-path': file.path},
// );

if (kIsWeb) {
uploadTask = ref.putData(await file.readAsBytes(), metadata);
uploadTask = ref.putData(await file.readAsBytes());
} else {
uploadTask = ref.putFile(io.File(file.path), metadata);
uploadTask = ref.putFile(io.File(file.path));
}

return Future.value(uploadTask);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@ include(${EPHEMERAL_DIR}/generated_config.cmake)
# https://github.com/flutter/flutter/issues/57146.
set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper")

# Set fallback configurations for older versions of the flutter tool.
if (NOT DEFINED FLUTTER_TARGET_PLATFORM)
set(FLUTTER_TARGET_PLATFORM "windows-x64")
endif()

# === Flutter Library ===
set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll")

Expand Down Expand Up @@ -92,7 +97,7 @@ add_custom_command(
COMMAND ${CMAKE_COMMAND} -E env
${FLUTTER_TOOL_ENVIRONMENT}
"${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat"
windows-x64 $<CONFIG>
${FLUTTER_TARGET_PLATFORM} $<CONFIG>
VERBATIM
)
add_custom_target(flutter_assemble DEPENDS
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,9 @@ - (FIRStorage *_Nullable)getFIRStorageFromAppNameFromPigeon:(PigeonStorageFireba
}

- (FIRStorageMetadata *)getFIRStorageMetadataFromPigeon:(PigeonSettableMetadata *)pigeonMetadata {
if (pigeonMetadata == nil) {
return nil;
}
FIRStorageMetadata *metadata = [[FIRStorageMetadata alloc] init];
metadata.cacheControl = pigeonMetadata.cacheControl;
metadata.contentDisposition = pigeonMetadata.contentDisposition;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,20 +174,20 @@ NSObject<FlutterMessageCodec> *FirebaseStorageHostApiGetCodec(void);
- (void)referencePutDataApp:(PigeonStorageFirebaseApp *)app
reference:(PigeonStorageReference *)reference
data:(FlutterStandardTypedData *)data
settableMetaData:(PigeonSettableMetadata *)settableMetaData
settableMetaData:(nullable PigeonSettableMetadata *)settableMetaData
handle:(NSNumber *)handle
completion:(void (^)(NSString *_Nullable, FlutterError *_Nullable))completion;
- (void)referencePutStringApp:(PigeonStorageFirebaseApp *)app
reference:(PigeonStorageReference *)reference
data:(NSString *)data
format:(NSNumber *)format
settableMetaData:(PigeonSettableMetadata *)settableMetaData
settableMetaData:(nullable PigeonSettableMetadata *)settableMetaData
handle:(NSNumber *)handle
completion:(void (^)(NSString *_Nullable, FlutterError *_Nullable))completion;
- (void)referencePutFileApp:(PigeonStorageFirebaseApp *)app
reference:(PigeonStorageReference *)reference
filePath:(NSString *)filePath
settableMetaData:(PigeonSettableMetadata *)settableMetaData
settableMetaData:(nullable PigeonSettableMetadata *)settableMetaData
handle:(NSNumber *)handle
completion:(void (^)(NSString *_Nullable, FlutterError *_Nullable))completion;
- (void)referenceDownloadFileApp:(PigeonStorageFirebaseApp *)app
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -671,7 +671,7 @@ void FirebaseStoragePlugin::ReferencePutData(
const PigeonStorageFirebaseApp& pigeon_app,
const PigeonStorageReference& pigeon_reference,
const std::vector<uint8_t>& data,
const PigeonSettableMetadata& pigeon_meta_data, int64_t handle,
const PigeonSettableMetadata* settable_meta_data, int64_t handle,
std::function<void(ErrorOr<std::string> reply)> result) {
Storage* cpp_storage =
GetCPPStorageFromPigeon(pigeon_app, pigeon_reference.bucket());
Expand All @@ -691,7 +691,7 @@ void FirebaseStoragePlugin::ReferencePutData(
void FirebaseStoragePlugin::ReferencePutString(
const PigeonStorageFirebaseApp& pigeon_app,
const PigeonStorageReference& pigeon_reference, const std::string& data,
int64_t format, const PigeonSettableMetadata& settable_meta_data,
int64_t format, const PigeonSettableMetadata* settable_meta_data,
int64_t handle, std::function<void(ErrorOr<std::string> reply)> result) {
Storage* cpp_storage =
GetCPPStorageFromPigeon(pigeon_app, pigeon_reference.bucket());
Expand All @@ -712,7 +712,7 @@ void FirebaseStoragePlugin::ReferencePutFile(
const PigeonStorageFirebaseApp& pigeon_app,
const PigeonStorageReference& pigeon_reference,
const std::string& file_path,
const PigeonSettableMetadata& settable_meta_data, int64_t handle,
const PigeonSettableMetadata* settable_meta_data, int64_t handle,
std::function<void(ErrorOr<std::string> reply)> result) {
Storage* cpp_storage =
GetCPPStorageFromPigeon(pigeon_app, pigeon_reference.bucket());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,18 +86,18 @@ class FirebaseStoragePlugin : public flutter::Plugin,
virtual void ReferencePutData(
const PigeonStorageFirebaseApp& app,
const PigeonStorageReference& reference, const std::vector<uint8_t>& data,
const PigeonSettableMetadata& settable_meta_data, int64_t handle,
const PigeonSettableMetadata* settable_meta_data, int64_t handle,
std::function<void(ErrorOr<std::string> reply)> result) override;
virtual void ReferencePutString(
const PigeonStorageFirebaseApp& app,
const PigeonStorageReference& reference, const std::string& data,
int64_t format, const PigeonSettableMetadata& settable_meta_data,
int64_t format, const PigeonSettableMetadata* settable_meta_data,
int64_t handle,
std::function<void(ErrorOr<std::string> reply)> result) override;
virtual void ReferencePutFile(
const PigeonStorageFirebaseApp& app,
const PigeonStorageReference& reference, const std::string& file_path,
const PigeonSettableMetadata& settable_meta_data, int64_t handle,
const PigeonSettableMetadata* settable_meta_data, int64_t handle,
std::function<void(ErrorOr<std::string> reply)> result) override;
virtual void ReferenceDownloadFile(
const PigeonStorageFirebaseApp& app,
Expand Down
34 changes: 13 additions & 21 deletions packages/firebase_storage/firebase_storage/windows/messages.g.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1107,14 +1107,10 @@ void FirebaseStorageHostApi::SetUp(flutter::BinaryMessenger* binary_messenger,
const auto& data_arg =
std::get<std::vector<uint8_t>>(encodable_data_arg);
const auto& encodable_settable_meta_data_arg = args.at(3);
if (encodable_settable_meta_data_arg.IsNull()) {
reply(WrapError("settable_meta_data_arg unexpectedly null."));
return;
}
const auto& settable_meta_data_arg =
std::any_cast<const PigeonSettableMetadata&>(
const auto* settable_meta_data_arg =
&(std::any_cast<const PigeonSettableMetadata&>(
std::get<CustomEncodableValue>(
encodable_settable_meta_data_arg));
encodable_settable_meta_data_arg)));
const auto& encodable_handle_arg = args.at(4);
if (encodable_handle_arg.IsNull()) {
reply(WrapError("handle_arg unexpectedly null."));
Expand Down Expand Up @@ -1182,14 +1178,10 @@ void FirebaseStorageHostApi::SetUp(flutter::BinaryMessenger* binary_messenger,
}
const int64_t format_arg = encodable_format_arg.LongValue();
const auto& encodable_settable_meta_data_arg = args.at(4);
if (encodable_settable_meta_data_arg.IsNull()) {
reply(WrapError("settable_meta_data_arg unexpectedly null."));
return;
}
const auto& settable_meta_data_arg =
std::any_cast<const PigeonSettableMetadata&>(
const auto* settable_meta_data_arg =
&(std::any_cast<const PigeonSettableMetadata&>(
std::get<CustomEncodableValue>(
encodable_settable_meta_data_arg));
encodable_settable_meta_data_arg)));
const auto& encodable_handle_arg = args.at(5);
if (encodable_handle_arg.IsNull()) {
reply(WrapError("handle_arg unexpectedly null."));
Expand Down Expand Up @@ -1253,14 +1245,14 @@ void FirebaseStorageHostApi::SetUp(flutter::BinaryMessenger* binary_messenger,
const auto& file_path_arg =
std::get<std::string>(encodable_file_path_arg);
const auto& encodable_settable_meta_data_arg = args.at(3);
if (encodable_settable_meta_data_arg.IsNull()) {
reply(WrapError("settable_meta_data_arg unexpectedly null."));
return;
const PigeonSettableMetadata* settable_meta_data_arg = nullptr;

if (!encodable_settable_meta_data_arg.IsNull()) {
settable_meta_data_arg =
&(std::any_cast<const PigeonSettableMetadata&>(
std::get<CustomEncodableValue>(
encodable_settable_meta_data_arg)));
}
const auto& settable_meta_data_arg =
std::any_cast<const PigeonSettableMetadata&>(
std::get<CustomEncodableValue>(
encodable_settable_meta_data_arg));
const auto& encodable_handle_arg = args.at(4);
if (encodable_handle_arg.IsNull()) {
reply(WrapError("handle_arg unexpectedly null."));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -362,18 +362,18 @@ class FirebaseStorageHostApi {
virtual void ReferencePutData(
const PigeonStorageFirebaseApp& app,
const PigeonStorageReference& reference, const std::vector<uint8_t>& data,
const PigeonSettableMetadata& settable_meta_data, int64_t handle,
const PigeonSettableMetadata* settable_meta_data, int64_t handle,
std::function<void(ErrorOr<std::string> reply)> result) = 0;
virtual void ReferencePutString(
const PigeonStorageFirebaseApp& app,
const PigeonStorageReference& reference, const std::string& data,
int64_t format, const PigeonSettableMetadata& settable_meta_data,
int64_t format, const PigeonSettableMetadata* settable_meta_data,
int64_t handle,
std::function<void(ErrorOr<std::string> reply)> result) = 0;
virtual void ReferencePutFile(
const PigeonStorageFirebaseApp& app,
const PigeonStorageReference& reference, const std::string& file_path,
const PigeonSettableMetadata& settable_meta_data, int64_t handle,
const PigeonSettableMetadata* settable_meta_data, int64_t handle,
std::function<void(ErrorOr<std::string> reply)> result) = 0;
virtual void ReferenceDownloadFile(
const PigeonStorageFirebaseApp& app,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,10 +88,7 @@ class MethodChannelFirebaseStorage extends FirebaseStoragePlatform {

/// Convert a [SettableMetadata] to [PigeonSettableMetadata]
static PigeonSettableMetadata getPigeonSettableMetaData(
SettableMetadata? metaData) {
if (metaData == null) {
return PigeonSettableMetadata();
}
SettableMetadata metaData) {
return PigeonSettableMetadata(
cacheControl: metaData.cacheControl,
contentDisposition: metaData.contentDisposition,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,9 @@ class MethodChannelPutFileTask extends MethodChannelTask {
MethodChannelFirebaseStorage.getPigeonReference(
storage.bucket, path, 'putFile'),
file.path,
MethodChannelFirebaseStorage.getPigeonSettableMetaData(metadata),
metadata != null
? MethodChannelFirebaseStorage.getPigeonSettableMetaData(metadata)
: null,
handle,
);
}
Expand Down Expand Up @@ -294,7 +296,9 @@ class MethodChannelPutStringTask extends MethodChannelTask {
storage.bucket, path, 'putString'),
data,
format.index,
MethodChannelFirebaseStorage.getPigeonSettableMetaData(metadata),
metadata != null
? MethodChannelFirebaseStorage.getPigeonSettableMetaData(metadata)
: null,
handle,
);
}
Expand All @@ -315,7 +319,9 @@ class MethodChannelPutTask extends MethodChannelTask {
MethodChannelFirebaseStorage.getPigeonReference(
storage.bucket, path, 'putData'),
data,
MethodChannelFirebaseStorage.getPigeonSettableMetaData(metadata),
metadata != null
? MethodChannelFirebaseStorage.getPigeonSettableMetaData(metadata)
: null,
handle,
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -595,7 +595,7 @@ class FirebaseStorageHostApi {
PigeonStorageFirebaseApp arg_app,
PigeonStorageReference arg_reference,
Uint8List arg_data,
PigeonSettableMetadata arg_settableMetaData,
PigeonSettableMetadata? arg_settableMetaData,
int arg_handle) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.firebase_storage_platform_interface.FirebaseStorageHostApi.referencePutData',
Expand Down Expand Up @@ -634,7 +634,7 @@ class FirebaseStorageHostApi {
PigeonStorageReference arg_reference,
String arg_data,
int arg_format,
PigeonSettableMetadata arg_settableMetaData,
PigeonSettableMetadata? arg_settableMetaData,
int arg_handle) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.firebase_storage_platform_interface.FirebaseStorageHostApi.referencePutString',
Expand Down Expand Up @@ -673,7 +673,7 @@ class FirebaseStorageHostApi {
PigeonStorageFirebaseApp arg_app,
PigeonStorageReference arg_reference,
String arg_filePath,
PigeonSettableMetadata arg_settableMetaData,
PigeonSettableMetadata? arg_settableMetaData,
int arg_handle) async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.firebase_storage_platform_interface.FirebaseStorageHostApi.referencePutFile',
Expand Down