Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

Revert "[path_provider] Use the application ID in the application support path" #2896

Merged
merged 3 commits into from
Jul 24, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions packages/path_provider/path_provider/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 1.6.12

* Fixed a Java lint in a test.

## 1.6.11
* Updated documentation to reflect the need for changes in testing for federated plugins

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import org.junit.runner.RunWith;

@RunWith(FlutterRunner.class)
public class FlutterActivityTest {
public class MainActivityTest {
@Rule
public ActivityTestRule<FlutterActivity> rule = new ActivityTestRule<>(FlutterActivity.class);
}
2 changes: 1 addition & 1 deletion packages/path_provider/path_provider/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: path_provider
description: Flutter plugin for getting commonly used locations on the Android &
iOS file systems, such as the temp and app data directories.
homepage: https://github.com/flutter/plugins/tree/master/packages/path_provider/path_provider
version: 1.6.11
version: 1.6.12

flutter:
plugin:
Expand Down
8 changes: 6 additions & 2 deletions packages/path_provider/path_provider_linux/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
## 0.1.0
## 0.1.1 - NOT PUBLISHED
* Reverts changes on 0.1.0, which broke the tree.


## 0.1.0 - NOT PUBLISHED
* This release updates getApplicationSupportPath to use the application ID instead of the executable name.
* No migration is provided, so any older apps that were using this path will now have a different directory.

Expand All @@ -11,4 +15,4 @@
## 0.0.1
* The initial implementation of path_provider for Linux
* Implements getApplicationSupportPath, getApplicationDocumentsPath, getDownloadsPath, and getTemporaryPath

Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,11 @@
// found in the LICENSE file.
import 'dart:io';
import 'dart:async';
import 'dart:ffi';
import 'package:ffi/ffi.dart';

import 'package:xdg_directories/xdg_directories.dart' as xdg;
import 'package:path/path.dart' as path;
import 'package:path_provider_platform_interface/path_provider_platform_interface.dart';

// GApplication* g_application_get_default();
typedef g_application_get_default_c = IntPtr Function();
typedef g_application_get_default_dart = int Function();

// const gchar* g_application_get_application_id(GApplication* application);
typedef g_application_get_application_id_c = Pointer<Utf8> Function(IntPtr);
typedef g_application_get_application_id_dart = Pointer<Utf8> Function(int);

/// The linux implementation of [PathProviderPlatform]
///
/// This class implements the `package:path_provider` functionality for linux
Expand All @@ -32,43 +22,11 @@ class PathProviderLinux extends PathProviderPlatform {
return Future.value("/tmp");
}

// Gets the application ID set in GApplication.
String _getApplicationId() {
DynamicLibrary gio;
try {
gio = DynamicLibrary.open('libgio-2.0.so');
} on ArgumentError {
return null;
}
var g_application_get_default = gio.lookupFunction<
g_application_get_default_c,
g_application_get_default_dart>('g_application_get_default');
var app = g_application_get_default();
if (app == 0) return null;

var g_application_get_application_id = gio.lookupFunction<
g_application_get_application_id_c,
g_application_get_application_id_dart>(
'g_application_get_application_id');
var app_id = g_application_get_application_id(app);
if (app_id == null) return null;

return Utf8.fromUtf8(app_id);
}

// Gets the unique ID for this application.
Future<String> _getId() async {
var appId = _getApplicationId();
if (appId != null) return appId;

// Fall back to using the executable name.
return path.basenameWithoutExtension(
await File('/proc/self/exe').resolveSymbolicLinks());
}

@override
Future<String> getApplicationSupportPath() async {
final directory = Directory(path.join(xdg.dataHome.path, await _getId()));
final processName = path.basenameWithoutExtension(
await File('/proc/self/exe').resolveSymbolicLinks());
final directory = Directory(path.join(xdg.dataHome.path, processName));
// Creating the directory if it doesn't exist, because mobile implementations assume the directory exists
if (!await directory.exists()) {
await directory.create(recursive: true);
Expand Down
3 changes: 1 addition & 2 deletions packages/path_provider/path_provider_linux/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: path_provider_linux
description: linux implementation of the path_provider plugin
version: 0.1.0
version: 0.1.1
homepage: https://github.com/flutter/plugins/tree/master/packages/path_provider/path_provider_linux

flutter:
Expand All @@ -15,7 +15,6 @@ environment:
flutter: ">=1.10.0 <2.0.0"

dependencies:
ffi: ^0.1.3
path: ^1.6.4
xdg_directories: ^0.1.0
path_provider_platform_interface: ^1.0.1
Expand Down