diff --git a/README.md b/README.md
index 879453486d..36a6f2832f 100644
--- a/README.md
+++ b/README.md
@@ -140,7 +140,10 @@ WebF provides a rendering engine which follows the W3C standards like web browse
With WebF, Web Apps and Flutter Apps share the same rendering context. It means that you can use Flutter Widgets to define your HTML elements and embed your Web App as a Flutter Widget in your flutter apps.
-
+![Browser Engine Pipeline](https://github.com/user-attachments/assets/82b2ed53-f0d6-4f14-b22a-2fca50c697a5)
+
+
+
## Contributors
diff --git a/bridge/core/api/executing_context.cc b/bridge/core/api/executing_context.cc
index 85a7e728b1..8acf4d3301 100644
--- a/bridge/core/api/executing_context.cc
+++ b/bridge/core/api/executing_context.cc
@@ -27,4 +27,8 @@ WebFValue ExecutingContextWeb
ExceptionState::publicMethodPointer(), nullptr);
}
+void ExecutingContextWebFMethods::FinishRecordingUIOperations(webf::ExecutingContext* context) {
+ context->uiCommandBuffer()->AddCommand(UICommand::kFinishRecordingCommand, nullptr, nullptr, nullptr, false);
+}
+
} // namespace webf
diff --git a/bridge/core/executing_context.cc b/bridge/core/executing_context.cc
index ad627342c5..ed8ca313dc 100644
--- a/bridge/core/executing_context.cc
+++ b/bridge/core/executing_context.cc
@@ -113,6 +113,7 @@ ExecutingContext::ExecutingContext(DartIsolateContext* dart_isolate_context,
ExecutingContext::~ExecutingContext() {
is_context_valid_ = false;
valid_contexts[context_id_] = false;
+ executing_context_status_->disposed = true;
// Check if current context have unhandled exceptions.
JSValue exception = JS_GetException(script_state_.ctx());
diff --git a/bridge/core/executing_context.h b/bridge/core/executing_context.h
index 1b38edaf41..ec4f0b3f2b 100644
--- a/bridge/core/executing_context.h
+++ b/bridge/core/executing_context.h
@@ -144,6 +144,7 @@ class ExecutingContext {
assert(dart_isolate_context_->valid());
return dart_isolate_context_->dartMethodPtr();
}
+ FORCE_INLINE WebFValueStatus* status() const { return executing_context_status_; }
FORCE_INLINE ExecutingContextWebFMethods* publicMethodPtr() const { return public_method_ptr_.get(); }
FORCE_INLINE bool isDedicated() { return is_dedicated_; }
FORCE_INLINE std::chrono::time_point timeOrigin() const { return time_origin_; }
@@ -220,6 +221,7 @@ class ExecutingContext {
MemberMutationScope* active_mutation_scope{nullptr};
std::unordered_set active_wrappers_;
std::unordered_set> active_pending_promises_;
+ WebFValueStatus* executing_context_status_{new WebFValueStatus()};
bool is_dedicated_;
// Rust methods ptr should keep alive when ExecutingContext is disposing.
diff --git a/bridge/core/native/native_loader.cc b/bridge/core/native/native_loader.cc
index 5312b6a55b..be44fb0ce3 100644
--- a/bridge/core/native/native_loader.cc
+++ b/bridge/core/native/native_loader.cc
@@ -33,17 +33,13 @@ static void ExecuteNativeLibrary(PluginLibraryEntryPoint entry_point,
native_library_load_context->promise_resolver->Reject(exception_value);
JS_FreeValue(context->ctx(), exception_value);
} else {
- auto exec_status = new WebFValueStatus();
auto entry_data = WebFValue{
- native_library_load_context->context, native_library_load_context->context->publicMethodPtr(), exec_status};
- WEBF_LOG(VERBOSE) << " entry_point: " << entry_point;
+ native_library_load_context->context, native_library_load_context->context->publicMethodPtr(),
+ native_library_load_context->context->status()};
void* result = entry_point(entry_data);
- WEBF_LOG(VERBOSE) << " result: " << result;
}
delete native_library_load_context;
-
- WEBF_LOG(VERBOSE) << " EXEC LIB";
}
static void HandleNativeLibraryLoad(PluginLibraryEntryPoint entry_point,
diff --git a/bridge/include/plugin_api/executing_context.h b/bridge/include/plugin_api/executing_context.h
index 5f3f8d5466..b2f317b233 100644
--- a/bridge/include/plugin_api/executing_context.h
+++ b/bridge/include/plugin_api/executing_context.h
@@ -18,6 +18,7 @@ class Window;
using PublicContextGetDocument = WebFValue (*)(ExecutingContext*);
using PublicContextGetWindow = WebFValue (*)(ExecutingContext*);
using PublicContextGetExceptionState = WebFValue (*)();
+using PublicFinishRecordingUIOperations = void (*)(ExecutingContext* context);
// Memory aligned and readable from WebF side.
// Only C type member can be included in this class, any C++ type and classes can is not allowed to use here.
@@ -25,11 +26,13 @@ struct ExecutingContextWebFMethods {
static WebFValue document(ExecutingContext* context);
static WebFValue window(ExecutingContext* context);
static WebFValue CreateExceptionState();
+ static void FinishRecordingUIOperations(ExecutingContext* context);
double version{1.0};
PublicContextGetDocument rust_context_get_document_{document};
PublicContextGetWindow rust_context_get_window_{window};
PublicContextGetExceptionState rust_context_get_exception_state_{CreateExceptionState};
+ PublicFinishRecordingUIOperations finish_recording_ui_operations{FinishRecordingUIOperations};
};
} // namespace webf
diff --git a/bridge/rusty_webf_sys/src/event_target.rs b/bridge/rusty_webf_sys/src/event_target.rs
index f940ef7623..5defc35c50 100644
--- a/bridge/rusty_webf_sys/src/event_target.rs
+++ b/bridge/rusty_webf_sys/src/event_target.rs
@@ -29,6 +29,7 @@ struct EventCallbackContext {
struct EventCallbackContextData {
executing_context_ptr: *const OpaquePtr,
executing_context_method_pointer: *const ExecutingContextRustMethods,
+ executing_context_status: *const RustValueStatus,
func: EventListenerCallback,
}
@@ -112,7 +113,7 @@ extern "C" fn handle_event_listener_callback(
unsafe {
let func = &(*callback_context_data).func;
let callback_data = &(*callback_context_data);
- let executing_context = ExecutingContext::initialize(callback_data.executing_context_ptr, callback_data.executing_context_method_pointer);
+ let executing_context = ExecutingContext::initialize(callback_data.executing_context_ptr, callback_data.executing_context_method_pointer, callback_data.executing_context_status);
let event = Event::initialize(event_ptr, &executing_context, event_method_pointer, status);
func(&event);
}
@@ -148,6 +149,7 @@ impl EventTarget {
let callback_context_data = Box::new(EventCallbackContextData {
executing_context_ptr: self.context().ptr,
executing_context_method_pointer: self.context().method_pointer(),
+ executing_context_status: self.context().status,
func: callback,
});
let callback_context_data_ptr = Box::into_raw(callback_context_data);
@@ -178,6 +180,7 @@ impl EventTarget {
let callback_context_data = Box::new(EventCallbackContextData {
executing_context_ptr: self.context().ptr,
executing_context_method_pointer: self.context().method_pointer(),
+ executing_context_status: self.context().status,
func: callback,
});
let callback_context_data_ptr = Box::into_raw(callback_context_data);
diff --git a/bridge/rusty_webf_sys/src/executing_context.rs b/bridge/rusty_webf_sys/src/executing_context.rs
index 44f9587cb3..c9e6d96188 100644
--- a/bridge/rusty_webf_sys/src/executing_context.rs
+++ b/bridge/rusty_webf_sys/src/executing_context.rs
@@ -9,7 +9,7 @@ use libc::c_uint;
use crate::document::{Document, DocumentRustMethods};
use crate::event_target::EventTargetMethods;
use crate::exception_state::{ExceptionState, ExceptionStateRustMethods};
-use crate::{OpaquePtr, RustValue};
+use crate::{OpaquePtr, RustValue, RustValueStatus};
use crate::custom_event::{CustomEvent, CustomEventRustMethods};
use crate::window::{Window, WindowRustMethods};
@@ -19,7 +19,7 @@ pub struct ExecutingContextRustMethods {
pub get_document: extern "C" fn(*const OpaquePtr) -> RustValue,
pub get_window: extern "C" fn(*const OpaquePtr) -> RustValue,
pub create_exception_state: extern "C" fn() -> RustValue,
- pub create_custom_event: extern "C" fn() -> RustValue,
+ pub finish_recording_ui_operations: extern "C" fn(executing_context: *const OpaquePtr) -> c_void,
}
/// An environment contains all the necessary running states of a web page.
@@ -41,13 +41,15 @@ pub struct ExecutingContext {
pub ptr: *const OpaquePtr,
// Methods available for export from the C++ world for use.
method_pointer: *const ExecutingContextRustMethods,
+ pub status: *const RustValueStatus,
}
impl ExecutingContext {
- pub fn initialize(ptr: *const OpaquePtr, method_pointer: *const ExecutingContextRustMethods) -> ExecutingContext {
+ pub fn initialize(ptr: *const OpaquePtr, method_pointer: *const ExecutingContextRustMethods, status: *const RustValueStatus) -> ExecutingContext {
ExecutingContext {
ptr,
- method_pointer
+ method_pointer,
+ status
}
}
@@ -80,3 +82,14 @@ impl ExecutingContext {
ExceptionState::initialize(result.value, result.method_pointer)
}
}
+
+impl Drop for ExecutingContext {
+ fn drop(&mut self) {
+ unsafe {
+ if (*((*self).status)).disposed {
+ return;
+ };
+ ((*self.method_pointer).finish_recording_ui_operations)(self.ptr);
+ }
+ }
+}
diff --git a/bridge/rusty_webf_sys/src/lib.rs b/bridge/rusty_webf_sys/src/lib.rs
index 9b74c620fd..826698fea0 100644
--- a/bridge/rusty_webf_sys/src/lib.rs
+++ b/bridge/rusty_webf_sys/src/lib.rs
@@ -113,7 +113,7 @@ pub struct RustValue {
}
pub fn initialize_webf_api(value: RustValue) -> ExecutingContext {
- ExecutingContext::initialize(value.value, value.method_pointer)
+ ExecutingContext::initialize(value.value, value.method_pointer, value.status)
}
// This is the entrypoint when your rust app compiled as dynamic library and loaded & executed by WebF.
diff --git a/webf/example/ios/.gitignore b/webf/example/ios/.gitignore
index e96ef602b8..7a7f9873ad 100644
--- a/webf/example/ios/.gitignore
+++ b/webf/example/ios/.gitignore
@@ -1,3 +1,4 @@
+**/dgph
*.mode1v3
*.mode2v3
*.moved-aside
@@ -18,6 +19,7 @@ Flutter/App.framework
Flutter/Flutter.framework
Flutter/Flutter.podspec
Flutter/Generated.xcconfig
+Flutter/ephemeral/
Flutter/app.flx
Flutter/app.zip
Flutter/flutter_assets/
diff --git a/webf/example/ios/Flutter/AppFrameworkInfo.plist b/webf/example/ios/Flutter/AppFrameworkInfo.plist
index 8c6e56146e..7c56964006 100644
--- a/webf/example/ios/Flutter/AppFrameworkInfo.plist
+++ b/webf/example/ios/Flutter/AppFrameworkInfo.plist
@@ -3,7 +3,7 @@
CFBundleDevelopmentRegion
- $(DEVELOPMENT_LANGUAGE)
+ en
CFBundleExecutable
App
CFBundleIdentifier
diff --git a/webf/example/ios/Flutter/Debug.xcconfig b/webf/example/ios/Flutter/Debug.xcconfig
index e8efba1146..ec97fc6f30 100644
--- a/webf/example/ios/Flutter/Debug.xcconfig
+++ b/webf/example/ios/Flutter/Debug.xcconfig
@@ -1,2 +1,2 @@
-#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig"
diff --git a/webf/example/ios/Flutter/Release.xcconfig b/webf/example/ios/Flutter/Release.xcconfig
index 399e9340e6..c4855bfe20 100644
--- a/webf/example/ios/Flutter/Release.xcconfig
+++ b/webf/example/ios/Flutter/Release.xcconfig
@@ -1,2 +1,2 @@
-#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig"
diff --git a/webf/example/ios/Podfile b/webf/example/ios/Podfile
index 74fa33a333..d97f17e223 100644
--- a/webf/example/ios/Podfile
+++ b/webf/example/ios/Podfile
@@ -27,47 +27,18 @@ require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelpe
flutter_ios_podfile_setup
-def config_valid_archs(config)
- valid_archs = %W[arm64 arm64e]
- if config.name == 'Debug'
- valid_archs << 'x86_64'
- end
- config.build_settings['VALID_ARCHS'] = valid_archs.join(' ')
- if config.name == 'Debug'
- config.build_settings['VALID_ARCHS[sdk=iphonesimulator*]'] = 'x86_64'
- end
-end
-
-def add_simulator_arch(project)
- require 'xcodeproj'
- xcproject = Xcodeproj::Project.open(project)
- xcproject.native_targets.each do |target|
- target.build_configurations.each do |configuration|
- config_valid_archs(configuration)
- end
- end
- xcproject.save
-end
-
target 'Runner' do
use_frameworks!
use_modular_headers!
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
- add_simulator_arch("./Runner.xcodeproj")
+ target 'RunnerTests' do
+ inherit! :search_paths
+ end
end
post_install do |installer|
- installer.pods_project.build_configurations.each do |config|
- config_valid_archs(config)
- end
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
- target.build_configurations.each do |config|
- config_valid_archs(config)
- config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
- end
end
- installer.pods_project.save
end
-
diff --git a/webf/example/ios/Runner.xcodeproj/project.pbxproj b/webf/example/ios/Runner.xcodeproj/project.pbxproj
index 1769ead327..131da51df2 100644
--- a/webf/example/ios/Runner.xcodeproj/project.pbxproj
+++ b/webf/example/ios/Runner.xcodeproj/project.pbxproj
@@ -8,14 +8,26 @@
/* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
- 3876547AE9CA54E32D1BF831 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC308EF7854CA74A3309AFC0 /* Pods_Runner.framework */; };
+ 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
+ 59E44E2FACB9EAAB6F528783 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77E4F78AE1AADA13DE257EC2 /* Pods_RunnerTests.framework */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
+ 798BF93572B0FB8292B53AAB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 96BE2ED9BC209E79234ABBA6 /* Pods_Runner.framework */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
/* End PBXBuildFile section */
+/* Begin PBXContainerItemProxy section */
+ 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 97C146E61CF9000F007C117D /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 97C146ED1CF9000F007C117D;
+ remoteInfo = Runner;
+ };
+/* End PBXContainerItemProxy section */
+
/* Begin PBXCopyFilesBuildPhase section */
9705A1C41CF9048500538489 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
@@ -30,14 +42,20 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
- 0E031F0FC42779475C1A3E54 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
+ 025578E4AEF454B71D12E41F /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
+ 19E85D3EE8FC169A42735A6D /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
+ 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; };
+ 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
+ 529D6CD5C5B9A12B5B7B207A /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
+ 77E4F78AE1AADA13DE257EC2 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
- 959193D041D016EB36B91A5A /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
+ 94F985148EC8B9E55895C3B2 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; };
+ 96BE2ED9BC209E79234ABBA6 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -45,8 +63,8 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- BA7B01E8B45A1D7AB3D033F0 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
- EC308EF7854CA74A3309AFC0 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 9ADE709F4F7C27DDF4E5DDDA /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
+ BA8FEADC60C1635A3721522D /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -54,13 +72,38 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 3876547AE9CA54E32D1BF831 /* Pods_Runner.framework in Frameworks */,
+ 798BF93572B0FB8292B53AAB /* Pods_Runner.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ BD0DDAAEF3800D084691503D /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 59E44E2FACB9EAAB6F528783 /* Pods_RunnerTests.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
+ 2B9E045D9C388341F3ADB6D2 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 96BE2ED9BC209E79234ABBA6 /* Pods_Runner.framework */,
+ 77E4F78AE1AADA13DE257EC2 /* Pods_RunnerTests.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 331C8082294A63A400263BE5 /* RunnerTests */ = {
+ isa = PBXGroup;
+ children = (
+ 331C807B294A618700263BE5 /* RunnerTests.swift */,
+ );
+ path = RunnerTests;
+ sourceTree = "";
+ };
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
@@ -78,8 +121,9 @@
9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
- E94528A544607590645ED5A1 /* Pods */,
- D26C69B997593EEC1EE811DF /* Frameworks */,
+ 331C8082294A63A400263BE5 /* RunnerTests */,
+ DFD9FC88A789D0C506CA75A0 /* Pods */,
+ 2B9E045D9C388341F3ADB6D2 /* Frameworks */,
);
sourceTree = "";
};
@@ -87,6 +131,7 @@
isa = PBXGroup;
children = (
97C146EE1CF9000F007C117D /* Runner.app */,
+ 331C8081294A63A400263BE5 /* RunnerTests.xctest */,
);
name = Products;
sourceTree = "";
@@ -106,39 +151,54 @@
path = Runner;
sourceTree = "";
};
- D26C69B997593EEC1EE811DF /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- EC308EF7854CA74A3309AFC0 /* Pods_Runner.framework */,
- );
- name = Frameworks;
- sourceTree = "";
- };
- E94528A544607590645ED5A1 /* Pods */ = {
+ DFD9FC88A789D0C506CA75A0 /* Pods */ = {
isa = PBXGroup;
children = (
- 959193D041D016EB36B91A5A /* Pods-Runner.debug.xcconfig */,
- 0E031F0FC42779475C1A3E54 /* Pods-Runner.release.xcconfig */,
- BA7B01E8B45A1D7AB3D033F0 /* Pods-Runner.profile.xcconfig */,
- );
+ 9ADE709F4F7C27DDF4E5DDDA /* Pods-Runner.debug.xcconfig */,
+ BA8FEADC60C1635A3721522D /* Pods-Runner.release.xcconfig */,
+ 19E85D3EE8FC169A42735A6D /* Pods-Runner.profile.xcconfig */,
+ 529D6CD5C5B9A12B5B7B207A /* Pods-RunnerTests.debug.xcconfig */,
+ 94F985148EC8B9E55895C3B2 /* Pods-RunnerTests.release.xcconfig */,
+ 025578E4AEF454B71D12E41F /* Pods-RunnerTests.profile.xcconfig */,
+ );
+ name = Pods;
path = Pods;
sourceTree = "";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
+ 331C8080294A63A400263BE5 /* RunnerTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
+ buildPhases = (
+ EB9BABACC02ED803A793DD5D /* [CP] Check Pods Manifest.lock */,
+ 331C807D294A63A400263BE5 /* Sources */,
+ 331C807F294A63A400263BE5 /* Resources */,
+ BD0DDAAEF3800D084691503D /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 331C8086294A63A400263BE5 /* PBXTargetDependency */,
+ );
+ name = RunnerTests;
+ productName = RunnerTests;
+ productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
97C146ED1CF9000F007C117D /* Runner */ = {
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
- FB5EE472D28741288136EE2A /* [CP] Check Pods Manifest.lock */,
+ EFE5EF396DED34EC8AC6BACD /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
- 04B5E4929C114343287B36F4 /* [CP] Embed Pods Frameworks */,
+ 79F97D12013FBCB3D14344B3 /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
@@ -155,9 +215,14 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
+ BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1510;
ORGANIZATIONNAME = "";
TargetAttributes = {
+ 331C8080294A63A400263BE5 = {
+ CreatedOnToolsVersion = 14.0;
+ TestTargetID = 97C146ED1CF9000F007C117D;
+ };
97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1;
LastSwiftMigration = 1100;
@@ -178,11 +243,19 @@
projectRoot = "";
targets = (
97C146ED1CF9000F007C117D /* Runner */,
+ 331C8080294A63A400263BE5 /* RunnerTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
+ 331C807F294A63A400263BE5 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
97C146EC1CF9000F007C117D /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@@ -197,7 +270,23 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
- 04B5E4929C114343287B36F4 /* [CP] Embed Pods Frameworks */ = {
+ 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
+ isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
+ );
+ name = "Thin Binary";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
+ };
+ 79F97D12013FBCB3D14344B3 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -214,38 +303,44 @@
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
- 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
+ 9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
- "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
);
- name = "Thin Binary";
+ name = "Run Script";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
- 9740EEB61CF901F6004384FC /* Run Script */ = {
+ EB9BABACC02ED803A793DD5D /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
- alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
+ inputFileListPaths = (
+ );
inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
);
- name = "Run Script";
outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
};
- FB5EE472D28741288136EE2A /* [CP] Check Pods Manifest.lock */ = {
+ EFE5EF396DED34EC8AC6BACD /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -270,6 +365,14 @@
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
+ 331C807D294A63A400263BE5 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
97C146EA1CF9000F007C117D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -281,6 +384,14 @@
};
/* End PBXSourcesBuildPhase section */
+/* Begin PBXTargetDependency section */
+ 331C8086294A63A400263BE5 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 97C146ED1CF9000F007C117D /* Runner */;
+ targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
/* Begin PBXVariantGroup section */
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
isa = PBXVariantGroup;
@@ -305,6 +416,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
@@ -334,6 +446,7 @@
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -360,32 +473,74 @@
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = ANRD47DNBX;
ENABLE_BITCODE = NO;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Flutter",
- );
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
- LIBRARY_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Flutter",
- );
- PRODUCT_BUNDLE_IDENTIFIER = com.openwebf.example;
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.webfExample;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
- VALID_ARCHS = "arm64 arm64e";
VERSIONING_SYSTEM = "apple-generic";
};
name = Profile;
};
+ 331C8088294A63A400263BE5 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 529D6CD5C5B9A12B5B7B207A /* Pods-RunnerTests.debug.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ GENERATE_INFOPLIST_FILE = YES;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.webfExample.RunnerTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = Debug;
+ };
+ 331C8089294A63A400263BE5 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 94F985148EC8B9E55895C3B2 /* Pods-RunnerTests.release.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ GENERATE_INFOPLIST_FILE = YES;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.webfExample.RunnerTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = Release;
+ };
+ 331C808A294A63A400263BE5 /* Profile */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 025578E4AEF454B71D12E41F /* Pods-RunnerTests.profile.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ GENERATE_INFOPLIST_FILE = YES;
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.webfExample.RunnerTests;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ SWIFT_VERSION = 5.0;
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
+ };
+ name = Profile;
+ };
97C147031CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
@@ -415,6 +570,7 @@
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
@@ -441,6 +597,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
+ ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
@@ -470,6 +627,7 @@
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_USER_SCRIPT_SANDBOXING = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -498,26 +656,16 @@
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = ANRD47DNBX;
ENABLE_BITCODE = NO;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Flutter",
- );
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
- LIBRARY_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Flutter",
- );
- PRODUCT_BUNDLE_IDENTIFIER = com.openwebf.example;
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.webfExample;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
- VALID_ARCHS = "arm64 arm64e x86_64";
- "VALID_ARCHS[sdk=iphonesimulator*]" = x86_64;
VERSIONING_SYSTEM = "apple-generic";
};
name = Debug;
@@ -531,24 +679,15 @@
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = ANRD47DNBX;
ENABLE_BITCODE = NO;
- FRAMEWORK_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Flutter",
- );
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
- LIBRARY_SEARCH_PATHS = (
- "$(inherited)",
- "$(PROJECT_DIR)/Flutter",
- );
- PRODUCT_BUNDLE_IDENTIFIER = com.openwebf.example;
+ PRODUCT_BUNDLE_IDENTIFIER = com.example.webfExample;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
- VALID_ARCHS = "arm64 arm64e";
VERSIONING_SYSTEM = "apple-generic";
};
name = Release;
@@ -556,6 +695,16 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
+ 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 331C8088294A63A400263BE5 /* Debug */,
+ 331C8089294A63A400263BE5 /* Release */,
+ 331C808A294A63A400263BE5 /* Profile */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
isa = XCConfigurationList;
buildConfigurations = (
diff --git a/webf/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/webf/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
index 498aa0d19e..8e3ca5dfe1 100644
--- a/webf/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ b/webf/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -37,10 +37,21 @@
+
+
+
+
-#import
-
-@interface AppDelegate : FlutterAppDelegate
-
-@end
diff --git a/webf/example/ios/Runner/AppDelegate.m b/webf/example/ios/Runner/AppDelegate.m
deleted file mode 100644
index 70e83933db..0000000000
--- a/webf/example/ios/Runner/AppDelegate.m
+++ /dev/null
@@ -1,13 +0,0 @@
-#import "AppDelegate.h"
-#import "GeneratedPluginRegistrant.h"
-
-@implementation AppDelegate
-
-- (BOOL)application:(UIApplication *)application
- didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- [GeneratedPluginRegistrant registerWithRegistry:self];
- // Override point for customization after application launch.
- return [super application:application didFinishLaunchingWithOptions:launchOptions];
-}
-
-@end
diff --git a/webf/example/ios/Runner/AppDelegate.swift b/webf/example/ios/Runner/AppDelegate.swift
index b636303481..626664468b 100644
--- a/webf/example/ios/Runner/AppDelegate.swift
+++ b/webf/example/ios/Runner/AppDelegate.swift
@@ -1,5 +1,5 @@
-import UIKit
import Flutter
+import UIKit
@main
@objc class AppDelegate: FlutterAppDelegate {
diff --git a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
index 28c6bf0301..7353c41ecf 100644
Binary files a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ
diff --git a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
index 2ccbfd967d..797d452e45 100644
Binary files a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ
diff --git a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
index f091b6b0bc..6ed2d933e1 100644
Binary files a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ
diff --git a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
index 4cde12118d..4cd7b0099c 100644
Binary files a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ
diff --git a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
index d0ef06e7ed..fe730945a0 100644
Binary files a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ
diff --git a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
index dcdc2306c2..321773cd85 100644
Binary files a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ
diff --git a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
index 2ccbfd967d..797d452e45 100644
Binary files a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ
diff --git a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
index c8f9ed8f5c..502f463a9b 100644
Binary files a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ
diff --git a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
index a6d6b8609d..0ec3034392 100644
Binary files a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ
diff --git a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
index a6d6b8609d..0ec3034392 100644
Binary files a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ
diff --git a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
index 75b2d164a5..e9f5fea27c 100644
Binary files a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ
diff --git a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
index c4df70d39d..84ac32ae7d 100644
Binary files a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ
diff --git a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
index 6a84f41e14..8953cba090 100644
Binary files a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ
diff --git a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
index d0e1f58536..0467bf12aa 100644
Binary files a/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and b/webf/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ
diff --git a/webf/example/ios/Runner/Info.plist b/webf/example/ios/Runner/Info.plist
index 858602aaa7..39b9a70567 100644
--- a/webf/example/ios/Runner/Info.plist
+++ b/webf/example/ios/Runner/Info.plist
@@ -2,10 +2,10 @@
- CADisableMinimumFrameDurationOnPhone
-
CFBundleDevelopmentRegion
$(DEVELOPMENT_LANGUAGE)
+ CFBundleDisplayName
+ Webf
CFBundleExecutable
$(EXECUTABLE_NAME)
CFBundleIdentifier
@@ -24,8 +24,6 @@
$(FLUTTER_BUILD_NUMBER)
LSRequiresIPhoneOS
- UIApplicationSupportsIndirectInputEvents
-
UILaunchStoryboardName
LaunchScreen
UIMainStoryboardFile
@@ -43,7 +41,9 @@
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight
- UIViewControllerBasedStatusBarAppearance
-
+ CADisableMinimumFrameDurationOnPhone
+
+ UIApplicationSupportsIndirectInputEvents
+
diff --git a/webf/example/ios/Runner/main.m b/webf/example/ios/Runner/main.m
deleted file mode 100644
index dff6597e45..0000000000
--- a/webf/example/ios/Runner/main.m
+++ /dev/null
@@ -1,9 +0,0 @@
-#import
-#import
-#import "AppDelegate.h"
-
-int main(int argc, char* argv[]) {
- @autoreleasepool {
- return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
- }
-}
diff --git a/webf/example/lib/main.dart b/webf/example/lib/main.dart
index c5ee3622b7..dc3bd452ea 100644
--- a/webf/example/lib/main.dart
+++ b/webf/example/lib/main.dart
@@ -42,7 +42,6 @@ class FirstPageState extends State {
super.didChangeDependencies();
controller = WebFController(
context,
- runningThread: FlutterUIThread(),
devToolsService: ChromeDevToolsService(),
);
controller.preload(WebFBundle.fromUrl('assets:assets/bundle.html'));
diff --git a/webf/ios/webf.podspec b/webf/ios/webf.podspec
index 61519aca7b..7eee3f564d 100644
--- a/webf/ios/webf.podspec
+++ b/webf/ios/webf.podspec
@@ -20,6 +20,7 @@ Pod::Spec.new do |s|
s.vendored_frameworks = ['Frameworks/*.xcframework']
s.resource = 'Frameworks/*.xcframework'
- # Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported.
- s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' }
+ # Flutter.framework does not contain a i386 slice.
+ s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' }
+ s.swift_version = '5.0'
end