From d999f6c12315fc3c33dc247e85c08d50ff0724d1 Mon Sep 17 00:00:00 2001 From: Adam Barth Date: Fri, 14 Oct 2016 16:12:01 -0700 Subject: [PATCH] Remove Activity service (#3136) This functionality has been replaced by the PlatformPlugin. Also move the contents of //flutter/services/common to more sensible homes. --- services/activity/BUILD.gn | 54 --------- services/activity/activity.mojom | 36 ------ services/activity/ios/activity_impl.h | 36 ------ services/activity/ios/activity_impl.mm | 35 ------ .../org/domokit/activity/ActivityImpl.java | 108 ------------------ services/common/BUILD.gn | 11 -- shell/platform/android/BUILD.gn | 5 +- .../common/ActivityLifecycleListener.java | 3 +- .../plugin/platform/PlatformPlugin.java | 2 +- .../android/io/flutter/view/FlutterMain.java | 9 -- .../android/io/flutter/view/FlutterView.java | 7 +- .../io/flutter/view/ResourceCleaner.java | 2 - .../io/flutter/view}/ResourcePaths.java | 4 +- shell/platform/darwin/common/BUILD.gn | 1 - .../common/platform_service_provider.cc | 6 - shell/platform/darwin/ios/BUILD.gn | 1 - sky/BUILD.gn | 4 - .../flutter_services/lib/activity.dart | 6 - sky/packages/sky_services/BUILD.gn | 1 - 19 files changed, 7 insertions(+), 324 deletions(-) delete mode 100644 services/activity/BUILD.gn delete mode 100644 services/activity/activity.mojom delete mode 100644 services/activity/ios/activity_impl.h delete mode 100644 services/activity/ios/activity_impl.mm delete mode 100644 services/activity/src/org/domokit/activity/ActivityImpl.java delete mode 100644 services/common/BUILD.gn rename {services/common/src/org/domokit => shell/platform/android/io/flutter/plugin}/common/ActivityLifecycleListener.java (75%) rename {services/common/src/org/domokit/common => shell/platform/android/io/flutter/view}/ResourcePaths.java (92%) delete mode 100644 sky/packages/flutter_services/lib/activity.dart diff --git a/services/activity/BUILD.gn b/services/activity/BUILD.gn deleted file mode 100644 index caaf14fce..000000000 --- a/services/activity/BUILD.gn +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright 2015 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("//mojo/public/tools/bindings/mojom.gni") - -group("activity") { - public_deps = [ - ":interfaces", - ] - - if (is_android || is_ios) { - public_deps += [ ":activity_lib" ] - } -} - -mojom("interfaces") { - sources = [ - "activity.mojom", - ] -} - -if (is_android) { - import("//build/config/android/config.gni") - import("//build/config/android/rules.gni") - - android_library("activity_lib") { - java_files = [ - "src/org/domokit/activity/ActivityImpl.java", - ] - - deps = [ - "//base:base_java", - "//mojo/public/java:bindings", - "//mojo/public/java:system", - ":interfaces_java", - ] - } -} - -if (is_ios) { - source_set("activity_lib") { - sources = [ - "ios/activity_impl.h", - "ios/activity_impl.mm", - ] - deps = [ - "//base:base", - "//mojo/public/cpp/application", - "//mojo/public/cpp/bindings:bindings", - "//flutter/services/activity:interfaces", - ] - } -} diff --git a/services/activity/activity.mojom b/services/activity/activity.mojom deleted file mode 100644 index ba7ada725..000000000 --- a/services/activity/activity.mojom +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2015 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. - -[DartPackage="sky_services"] -module activity; - -struct StringExtra { - string name; - string value; -}; - -struct ComponentName { - string package_name; - string class_name; -}; - -struct Intent { - string action; - string url; - uint32 flags; - ComponentName? component; - array? string_extras; -}; - -struct TaskDescription { - string? label; - uint32 primaryColor; -}; - -[ServiceName="activity::Activity"] -interface Activity { - StartActivity(Intent intent); - FinishCurrentActivity(); - SetTaskDescription(TaskDescription description); -}; diff --git a/services/activity/ios/activity_impl.h b/services/activity/ios/activity_impl.h deleted file mode 100644 index 395b7291d..000000000 --- a/services/activity/ios/activity_impl.h +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2016 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. - -#ifndef FLUTTER_SERVICES_ACTIVITY_IOS_ACTIVITY_IMPL_H_ -#define FLUTTER_SERVICES_ACTIVITY_IOS_ACTIVITY_IMPL_H_ - -#include "base/macros.h" -#include "mojo/public/cpp/bindings/strong_binding.h" -#include "flutter/services/activity/activity.mojom.h" - -namespace sky { -namespace services { -namespace activity { - -class ActivityImpl : public ::activity::Activity { - public: - explicit ActivityImpl(mojo::InterfaceRequest<::activity::Activity> request); - ~ActivityImpl() override; - - // From activity::Activity: - void StartActivity(::activity::IntentPtr intent) override; - void FinishCurrentActivity() override; - void SetTaskDescription(::activity::TaskDescriptionPtr description) override; - - private: - mojo::StrongBinding<::activity::Activity> binding_; - - DISALLOW_COPY_AND_ASSIGN(ActivityImpl); -}; - -} // namespace activity -} // namespace services -} // namespace sky - -#endif // FLUTTER_SERVICES_ACTIVITY_IOS_ACTIVITY_IMPL_H_ diff --git a/services/activity/ios/activity_impl.mm b/services/activity/ios/activity_impl.mm deleted file mode 100644 index 44e8f9fce..000000000 --- a/services/activity/ios/activity_impl.mm +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2016 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/logging.h" -#include "base/mac/scoped_nsautorelease_pool.h" -#include "flutter/services/activity/ios/activity_impl.h" - -#include - -namespace sky { -namespace services { -namespace activity { - -ActivityImpl::ActivityImpl(mojo::InterfaceRequest<::activity::Activity> request) - : binding_(this, request.Pass()) {} - -ActivityImpl::~ActivityImpl() {} - -void ActivityImpl::StartActivity(::activity::IntentPtr intent) { - CHECK(false) << "Cannot start activities on iOS"; -} - -void ActivityImpl::FinishCurrentActivity() { - CHECK(false) << "Cannot finish activities on iOS"; -} - -void ActivityImpl::SetTaskDescription( - ::activity::TaskDescriptionPtr description) { - // No counterpart on iOS but is a benign operation. So no asserts. -} - -} // namespace activity -} // namespace services -} // namespace sky diff --git a/services/activity/src/org/domokit/activity/ActivityImpl.java b/services/activity/src/org/domokit/activity/ActivityImpl.java deleted file mode 100644 index fda9f0953..000000000 --- a/services/activity/src/org/domokit/activity/ActivityImpl.java +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2015 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. - -package org.domokit.activity; - -import android.content.ActivityNotFoundException; -import android.content.pm.ActivityInfo; -import android.net.Uri; -import android.os.Build; -import android.util.Log; -import android.view.View; - -import org.chromium.mojo.bindings.InterfaceRequest; -import org.chromium.mojo.system.MojoException; -import org.chromium.mojom.activity.Activity; -import org.chromium.mojom.activity.ComponentName; -import org.chromium.mojom.activity.Intent; -import org.chromium.mojom.activity.StringExtra; -import org.chromium.mojom.activity.TaskDescription; - -/** - * Android implementation of Activity. - */ -public class ActivityImpl implements Activity { - private static final String TAG = "ActivityImpl"; - private static android.app.Activity sCurrentActivity; - - public ActivityImpl() { - } - - public static void setCurrentActivity(android.app.Activity activity) { - sCurrentActivity = activity; - } - - public static android.app.Activity getCurrentActivity() { - return sCurrentActivity; - } - - @Override - public void close() {} - - @Override - public void onConnectionError(MojoException e) {} - - @Override - public void startActivity(Intent intent) { - if (sCurrentActivity == null) { - Log.e(TAG, "Unable to startActivity"); - return; - } - - final android.content.Intent androidIntent = new android.content.Intent( - intent.action, Uri.parse(intent.url)); - - if (intent.component != null) { - ComponentName component = intent.component; - android.content.ComponentName androidComponent = - new android.content.ComponentName(component.packageName, component.className); - androidIntent.setComponent(androidComponent); - } - - if (intent.stringExtras != null) { - for (StringExtra extra : intent.stringExtras) { - androidIntent.putExtra(extra.name, extra.value); - } - } - - if (intent.flags != 0) { - androidIntent.setFlags(intent.flags); - } - - try { - sCurrentActivity.startActivity(androidIntent); - } catch (ActivityNotFoundException e) { - Log.e(TAG, "Unable to startActivity", e); - } - } - - @Override - public void finishCurrentActivity() { - if (sCurrentActivity != null) { - sCurrentActivity.finish(); - } else { - Log.e(TAG, "Unable to finishCurrentActivity"); - } - } - - @Override - public void setTaskDescription(TaskDescription description) { - if (sCurrentActivity == null) { - return; - } - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { - return; - } - int color = description.primaryColor; - if (color != 0) // 0 means color isn't set, use system default - color = color | 0xFF000000; // color must be opaque if set - sCurrentActivity.setTaskDescription( - new android.app.ActivityManager.TaskDescription( - description.label, - null, - color - ) - ); - } -} diff --git a/services/common/BUILD.gn b/services/common/BUILD.gn deleted file mode 100644 index d16e78f10..000000000 --- a/services/common/BUILD.gn +++ /dev/null @@ -1,11 +0,0 @@ -if (is_android) { - import("//build/config/android/config.gni") - import("//build/config/android/rules.gni") - - android_library("common_lib") { - java_files = [ - "src/org/domokit/common/ActivityLifecycleListener.java", - "src/org/domokit/common/ResourcePaths.java", - ] - } -} diff --git a/shell/platform/android/BUILD.gn b/shell/platform/android/BUILD.gn index 56aba7abe..82b5bf3b4 100644 --- a/shell/platform/android/BUILD.gn +++ b/shell/platform/android/BUILD.gn @@ -64,6 +64,7 @@ android_library("java") { visibility = [ ":*" ] java_files = [ + "io/flutter/plugin/common/ActivityLifecycleListener.java", "io/flutter/plugin/common/JSONMessageListener.java", "io/flutter/plugin/platform/PlatformPlugin.java", "io/flutter/view/AccessibilityBridge.java", @@ -71,6 +72,7 @@ android_library("java") { "io/flutter/view/FlutterView.java", "io/flutter/view/ResourceCleaner.java", "io/flutter/view/ResourceExtractor.java", + "io/flutter/view/ResourcePaths.java", "io/flutter/view/ServiceFactory.java", "io/flutter/view/ServiceProviderImpl.java", "io/flutter/view/ServiceRegistry.java", @@ -80,9 +82,6 @@ android_library("java") { deps = [ "//base:base_java", - "//flutter/services/activity:activity_lib", - "//flutter/services/activity:interfaces_java", - "//flutter/services/common:common_lib", "//flutter/services/editing:editing_lib", "//flutter/services/editing:interfaces_java", "//flutter/services/engine:interfaces_java", diff --git a/services/common/src/org/domokit/common/ActivityLifecycleListener.java b/shell/platform/android/io/flutter/plugin/common/ActivityLifecycleListener.java similarity index 75% rename from services/common/src/org/domokit/common/ActivityLifecycleListener.java rename to shell/platform/android/io/flutter/plugin/common/ActivityLifecycleListener.java index 485f3b07c..5c27bd961 100644 --- a/services/common/src/org/domokit/common/ActivityLifecycleListener.java +++ b/shell/platform/android/io/flutter/plugin/common/ActivityLifecycleListener.java @@ -2,9 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -package org.domokit.common; +package io.flutter.plugin.common; -// TODO(abarth): Move to io.flutter.plugin.common. public interface ActivityLifecycleListener { void onPostResume(); } diff --git a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java index 8d701bb21..662615047 100644 --- a/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java +++ b/shell/platform/android/io/flutter/plugin/platform/PlatformPlugin.java @@ -12,10 +12,10 @@ import android.os.Build; import android.view.HapticFeedbackConstants; import android.view.SoundEffectConstants; import android.view.View; +import io.flutter.plugin.common.ActivityLifecycleListener; import io.flutter.plugin.common.JSONMessageListener; import io.flutter.view.FlutterView; import org.chromium.base.PathUtils; -import org.domokit.common.ActivityLifecycleListener; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; diff --git a/shell/platform/android/io/flutter/view/FlutterMain.java b/shell/platform/android/io/flutter/view/FlutterMain.java index ab5547a10..99954ed40 100644 --- a/shell/platform/android/io/flutter/view/FlutterMain.java +++ b/shell/platform/android/io/flutter/view/FlutterMain.java @@ -34,10 +34,8 @@ import org.chromium.mojo.bindings.Interface.Binding; import org.chromium.mojo.system.Core; import org.chromium.mojo.system.impl.CoreImpl; import org.chromium.mojo.system.MessagePipeHandle; -import org.chromium.mojom.activity.Activity; import org.chromium.mojom.editing.Clipboard; import org.chromium.mojom.vsync.VSyncProvider; -import org.domokit.activity.ActivityImpl; import org.domokit.editing.ClipboardImpl; import org.domokit.vsync.VSyncProviderImpl; @@ -184,13 +182,6 @@ public class FlutterMain { private static native void nativeRecordStartTimestamp(long initTimeMillis); private static void onServiceRegistryAvailable(final Context applicationContext, ServiceRegistry registry) { - registry.register(Activity.MANAGER.getName(), new ServiceFactory() { - @Override - public Binding connectToService(FlutterView view, Core core, MessagePipeHandle pipe) { - return Activity.MANAGER.bind(new ActivityImpl(), pipe); - } - }); - registry.register(Clipboard.MANAGER.getName(), new ServiceFactory() { @Override public Binding connectToService(FlutterView view, Core core, MessagePipeHandle pipe) { diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index c40081d8a..4cc23736d 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -60,10 +60,9 @@ import java.util.List; import java.util.Locale; import java.util.Map; +import io.flutter.plugin.common.ActivityLifecycleListener; import io.flutter.plugin.platform.PlatformPlugin; -import org.domokit.common.ActivityLifecycleListener; -import org.domokit.activity.ActivityImpl; import org.domokit.editing.KeyboardImpl; import org.domokit.editing.KeyboardViewState; import org.domokit.raw_keyboard.RawKeyboardServiceImpl; @@ -105,10 +104,6 @@ public class FlutterView extends SurfaceView public FlutterView(Context context, AttributeSet attrs) { super(context, attrs); - // TODO(abarth): Remove this static and instead make everything that - // depends on it into a view-associated service. - ActivityImpl.setCurrentActivity((Activity) context); - mMetrics = new ViewportMetrics(); mMetrics.devicePixelRatio = context.getResources().getDisplayMetrics().density; setFocusable(true); diff --git a/shell/platform/android/io/flutter/view/ResourceCleaner.java b/shell/platform/android/io/flutter/view/ResourceCleaner.java index 5f203d1b2..c7d8ff408 100644 --- a/shell/platform/android/io/flutter/view/ResourceCleaner.java +++ b/shell/platform/android/io/flutter/view/ResourceCleaner.java @@ -13,8 +13,6 @@ import java.io.File; import java.io.FilenameFilter; import java.io.IOException; -import org.domokit.common.ResourcePaths; - /** * A class to clean up orphaned resource directories after unclean shutdowns. **/ diff --git a/services/common/src/org/domokit/common/ResourcePaths.java b/shell/platform/android/io/flutter/view/ResourcePaths.java similarity index 92% rename from services/common/src/org/domokit/common/ResourcePaths.java rename to shell/platform/android/io/flutter/view/ResourcePaths.java index 37e66215f..44bfb4a0a 100644 --- a/services/common/src/org/domokit/common/ResourcePaths.java +++ b/shell/platform/android/io/flutter/view/ResourcePaths.java @@ -2,14 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -package org.domokit.common; +package io.flutter.view; import android.content.Context; import java.io.File; import java.io.IOException; -public class ResourcePaths { +class ResourcePaths { // The filename prefix used by Chromium temporary file APIs. public static final String TEMPORARY_RESOURCE_PREFIX = ".org.chromium.Chromium."; diff --git a/shell/platform/darwin/common/BUILD.gn b/shell/platform/darwin/common/BUILD.gn index d303c16bb..60e15bc5d 100644 --- a/shell/platform/darwin/common/BUILD.gn +++ b/shell/platform/darwin/common/BUILD.gn @@ -21,7 +21,6 @@ source_set("common") { "//base:i18n", "//dart/runtime:libdart", "//flutter/runtime", - "//flutter/services/activity", "//flutter/services/editing", "//flutter/services/engine:interfaces", "//flutter/services/platform", diff --git a/shell/platform/darwin/common/platform_service_provider.cc b/shell/platform/darwin/common/platform_service_provider.cc index 539211d22..7b87525a7 100644 --- a/shell/platform/darwin/common/platform_service_provider.cc +++ b/shell/platform/darwin/common/platform_service_provider.cc @@ -5,7 +5,6 @@ #include "flutter/shell/platform/darwin/common/platform_service_provider.h" #if TARGET_OS_IPHONE -#include "flutter/services/activity/ios/activity_impl.h" #include "flutter/services/editing/ios/clipboard_impl.h" #include "flutter/services/vsync/ios/vsync_provider_ios_impl.h" #else @@ -24,11 +23,6 @@ void PlatformServiceProvider::ConnectToService( const mojo::String& service_name, mojo::ScopedMessagePipeHandle client_handle) { #if TARGET_OS_IPHONE - if (service_name == ::activity::Activity::Name_) { - new sky::services::activity::ActivityImpl( - mojo::InterfaceRequest<::activity::Activity>(client_handle.Pass())); - return; - } if (service_name == ::editing::Clipboard::Name_) { new sky::services::editing::ClipboardImpl( mojo::InterfaceRequest<::editing::Clipboard>(client_handle.Pass())); diff --git a/shell/platform/darwin/ios/BUILD.gn b/shell/platform/darwin/ios/BUILD.gn index c724275d3..e2e136c91 100644 --- a/shell/platform/darwin/ios/BUILD.gn +++ b/shell/platform/darwin/ios/BUILD.gn @@ -49,7 +49,6 @@ shared_library("flutter_framework_dylib") { "//base:base", "//dart/runtime:libdart", "//flutter/lib/ui", - "//flutter/services/activity", "//flutter/services/editing", "//flutter/services/engine:interfaces", "//flutter/services/platform", diff --git a/sky/BUILD.gn b/sky/BUILD.gn index a02ba1d83..3591b2234 100644 --- a/sky/BUILD.gn +++ b/sky/BUILD.gn @@ -16,8 +16,4 @@ group("sky") { if (dart_host_toolchain == host_toolchain) { deps += [ "//flutter/snapshotter($dart_host_toolchain)" ] } - - if (is_android) { - deps += [ "//flutter/services/activity" ] - } } diff --git a/sky/packages/flutter_services/lib/activity.dart b/sky/packages/flutter_services/lib/activity.dart deleted file mode 100644 index bb2c56905..000000000 --- a/sky/packages/flutter_services/lib/activity.dart +++ /dev/null @@ -1,6 +0,0 @@ -/// Copyright 2016 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:sky_services/activity/activity.mojom.dart'; -export 'package:sky_services/activity/activity.mojom.dart'; diff --git a/sky/packages/sky_services/BUILD.gn b/sky/packages/sky_services/BUILD.gn index 1000ec339..513506833 100644 --- a/sky/packages/sky_services/BUILD.gn +++ b/sky/packages/sky_services/BUILD.gn @@ -23,7 +23,6 @@ dart_pkg("sky_services") { deps = [ ":copy_sky_services_license", - "//flutter/services/activity:interfaces", "//flutter/services/editing:interfaces", "//flutter/services/platform:interfaces", "//flutter/services/raw_keyboard:interfaces", -- GitLab