FoxiGram/TMessagesProj/jni/voip/webrtc/base/android/content_uri_utils.cc
instant992 8e79f2ee9c FoxiGram: Telegram client with built-in Xray VLESS proxy
Based on Nekogram. Key additions:
- Rebrand to FoxiGram (app name, APK name, applicationId com.foxigram.app)
- Embedded Xray (VLESS+Reality) proxy client via JNI libxray.so
- Bundled hidden one-tap proxies (LTE + WiFi), read-only in UI
- Auto-restore proxy on restart, rebind to active network (LTE/WiFi)
- Server credentials externalized to git-ignored XrayServers.java (+ template)
- libxray Go source included; compiled .so, keystore, google-services.json ignored
2026-06-08 16:41:07 +04:00

86 lines
2.8 KiB
C++

// Copyright 2013 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.
#include "base/android/content_uri_utils.h"
#include "base/android/jni_android.h"
#include "base/android/jni_string.h"
#include "base/base_jni_headers/ContentUriUtils_jni.h"
using base::android::ConvertUTF8ToJavaString;
using base::android::ScopedJavaLocalRef;
namespace base {
bool ContentUriExists(const FilePath& content_uri) {
JNIEnv* env = base::android::AttachCurrentThread();
ScopedJavaLocalRef<jstring> j_uri =
ConvertUTF8ToJavaString(env, content_uri.value());
return Java_ContentUriUtils_contentUriExists(env, j_uri);
}
File OpenContentUriForRead(const FilePath& content_uri) {
JNIEnv* env = base::android::AttachCurrentThread();
ScopedJavaLocalRef<jstring> j_uri =
ConvertUTF8ToJavaString(env, content_uri.value());
jint fd = Java_ContentUriUtils_openContentUriForRead(env, j_uri);
if (fd < 0)
return File();
return File(fd);
}
std::string GetContentUriMimeType(const FilePath& content_uri) {
JNIEnv* env = base::android::AttachCurrentThread();
ScopedJavaLocalRef<jstring> j_uri =
ConvertUTF8ToJavaString(env, content_uri.value());
ScopedJavaLocalRef<jstring> j_mime =
Java_ContentUriUtils_getMimeType(env, j_uri);
if (j_mime.is_null())
return std::string();
return base::android::ConvertJavaStringToUTF8(env, j_mime.obj());
}
bool MaybeGetFileDisplayName(const FilePath& content_uri,
base::string16* file_display_name) {
if (!content_uri.IsContentUri())
return false;
DCHECK(file_display_name);
JNIEnv* env = base::android::AttachCurrentThread();
ScopedJavaLocalRef<jstring> j_uri =
ConvertUTF8ToJavaString(env, content_uri.value());
ScopedJavaLocalRef<jstring> j_display_name =
Java_ContentUriUtils_maybeGetDisplayName(env, j_uri);
if (j_display_name.is_null())
return false;
*file_display_name = base::android::ConvertJavaStringToUTF16(j_display_name);
return true;
}
bool DeleteContentUri(const FilePath& content_uri) {
DCHECK(content_uri.IsContentUri());
JNIEnv* env = base::android::AttachCurrentThread();
ScopedJavaLocalRef<jstring> j_uri =
ConvertUTF8ToJavaString(env, content_uri.value());
return Java_ContentUriUtils_delete(env, j_uri);
}
FilePath GetContentUriFromFilePath(const FilePath& file_path) {
JNIEnv* env = base::android::AttachCurrentThread();
ScopedJavaLocalRef<jstring> j_file_path =
ConvertUTF8ToJavaString(env, file_path.value());
ScopedJavaLocalRef<jstring> j_content_uri =
Java_ContentUriUtils_getContentUriFromFilePath(env, j_file_path);
if (j_content_uri.is_null())
return FilePath();
return FilePath(base::android::ConvertJavaStringToUTF8(env, j_content_uri));
}
} // namespace base