Import chromium-70.0.3538.110

This commit is contained in:
klzgrad 2018-12-09 21:59:24 -05:00
commit 46caed9b9c
21632 changed files with 4672349 additions and 0 deletions

36
.clang-format Normal file
View File

@ -0,0 +1,36 @@
# Defines the Chromium style for automatic reformatting.
# http://clang.llvm.org/docs/ClangFormatStyleOptions.html
BasedOnStyle: Chromium
# This defaults to 'Auto'. Explicitly set it for a while, so that
# 'vector<vector<int> >' in existing files gets formatted to
# 'vector<vector<int>>'. ('Auto' means that clang-format will only use
# 'int>>' if the file already contains at least one such instance.)
Standard: Cpp11
# Make sure code like:
# IPC_BEGIN_MESSAGE_MAP()
# IPC_MESSAGE_HANDLER(WidgetHostViewHost_Update, OnUpdate)
# IPC_END_MESSAGE_MAP()
# gets correctly indented.
MacroBlockBegin: "^\
BEGIN_MSG_MAP|\
BEGIN_MSG_MAP_EX|\
BEGIN_SAFE_MSG_MAP_EX|\
CR_BEGIN_MSG_MAP_EX|\
IPC_BEGIN_MESSAGE_MAP|\
IPC_BEGIN_MESSAGE_MAP_WITH_PARAM|\
IPC_PROTOBUF_MESSAGE_TRAITS_BEGIN|\
IPC_STRUCT_BEGIN|\
IPC_STRUCT_BEGIN_WITH_PARENT|\
IPC_STRUCT_TRAITS_BEGIN|\
POLPARAMS_BEGIN|\
PPAPI_BEGIN_MESSAGE_MAP$"
MacroBlockEnd: "^\
CR_END_MSG_MAP|\
END_MSG_MAP|\
IPC_END_MESSAGE_MAP|\
IPC_PROTOBUF_MESSAGE_TRAITS_END|\
IPC_STRUCT_END|\
IPC_STRUCT_TRAITS_END|\
POLPARAMS_END|\
PPAPI_END_MESSAGE_MAP$"

45
.gitattributes vendored Normal file
View File

@ -0,0 +1,45 @@
# Stop Windows python license check presubmit errors by forcing LF checkout.
*.py text eol=lf
# Force LF checkout of the pins files to avoid transport_security_state_generator errors.
/net/http/*.pins text eol=lf
# Force LF checkout for all source files
*.c text eol=lf
*.cc text eol=lf
*.cpp text eol=lf
*.grd text eol=lf
*.grdp text eol=lf
*.gn text eol=lf
*.gni text eol=lf
*.h text eol=lf
*.html text eol=lf
*.in text eol=lf
*.inc text eol=lf
*.java text eol=lf
*.js text eol=lf
*.json text eol=lf
*.md text eol=lf
*.mm text eol=lf
*.sh text eol=lf
*.sql text eol=lf
*.txt text eol=lf
*.xml text eol=lf
*.xslt text eol=lf
.clang-format text eol=lf
.eslintrc.js text eol=lf
.git-blame-ignore-revs text eol=lf
.gitattributes text eol=lf
.gitignore text eol=lf
.vpython text eol=lf
codereview.settings text eol=lf
DEPS text eol=lf
ENG_REVIEW_OWNERS text eol=lf
LICENSE text eol=lf
LICENSE.* text eol=lf
MAJOR_BRANCH_DATE text eol=lf
OWNERS text eol=lf
README text eol=lf
README.* text eol=lf
WATCHLISTS text eol=lf
VERSION text eol=lf

432
.gn Normal file
View File

@ -0,0 +1,432 @@
# This file is used by the GN meta build system to find the root of the source
# tree and to set startup options. For documentation on the values set in this
# file, run "gn help dotfile" at the command line.
import("//build/dotfile_settings.gni")
import("//third_party/angle/dotfile_settings.gni")
# The location of the build configuration file.
buildconfig = "//build/config/BUILDCONFIG.gn"
# The secondary source root is a parallel directory tree where
# GN build files are placed when they can not be placed directly
# in the source tree, e.g. for third party source trees.
secondary_source = "//build/secondary/"
# These arguments override the default values for items in a declare_args
# block. "gn args" in turn can override these.
#
# In general the value for a build arg in the declare_args block should be the
# default. In some cases, a DEPS-ed in project will want different defaults for
# being built as part of Chrome vs. being built standalone. In this case, the
# Chrome defaults should go here. There should be no overrides here for
# values declared in the main Chrome repository.
#
# Important note for defining defaults: This file is executed before the
# BUILDCONFIG.gn file. That file sets up the global variables like "is_ios".
# This means that the default_args can not depend on the platform,
# architecture, or other build parameters. If you really need that, the other
# repo should define a flag that toggles on a behavior that implements the
# additional logic required by Chrome to set the variables.
default_args = {
# TODO(brettw) bug 684096: Chrome on iOS does not build v8, so "gn gen" prints
# a warning that "Build argument has no effect". When adding a v8 variable, it
# also needs to be defined to src/ios/BUILD.gn (respectively removed from both
# location when it is removed).
v8_extra_library_files = [
# Dependencies used by the extra libraries. Putting them here causes them
# to be executed first during snapshot creation.
"//third_party/blink/renderer/core/streams/CommonOperations.js",
"//third_party/blink/renderer/core/streams/CommonStrings.js",
"//third_party/blink/renderer/core/streams/SimpleQueue.js",
# Extra libraries.
"//third_party/blink/renderer/core/streams/ByteLengthQueuingStrategy.js",
"//third_party/blink/renderer/core/streams/CountQueuingStrategy.js",
"//third_party/blink/renderer/core/streams/ReadableStream.js",
"//third_party/blink/renderer/core/streams/WritableStream.js",
"//third_party/blink/renderer/core/streams/TransformStream.js",
]
v8_experimental_extra_library_files = []
v8_enable_gdbjit = false
v8_imminent_deprecation_warnings = false
# TODO(jochen): Remove this. http://crbug.com/v8/5830,
# http://crbug.com/728583.
v8_check_microtasks_scopes_consistency = false
# Don't include webrtc's builtin task queue implementation.
rtc_link_task_queue_impl = false
# Don't include the iLBC audio codec.
# TODO(bugs.webrtc.org/8396): Once WebRTC gets rid of its internal
# deps on codecs, we can remove this.
rtc_include_ilbc = false
# Changes some setup for the Crashpad build to set them to build against
# Chromium's zlib, base, etc.
crashpad_dependencies = "chromium"
}
# These are the targets to check headers for by default. The files in targets
# matching these patterns (see "gn help label_pattern" for format) will have
# their includes checked for proper dependencies when you run either
# "gn check" or "gn gen --check".
check_targets = [
"//apps/*",
"//ash/*",
"//base/*",
"//blink/*",
"//build/*",
"//cc/*",
#"//chrome/android/*", # 13 errors
"//chrome/app/*",
"//chrome/app_shim/*",
#"//chrome/browser/*", # ~1300 errors
#"//chrome/browser:*", # ~600 errors
"//chrome/browser/accessibility/*",
"//chrome/browser/android/*",
"//chrome/browser/app_mode/*",
"//chrome/browser/apps/*",
"//chrome/browser/assist_ranker/*",
"//chrome/browser/autocomplete/*",
"//chrome/browser/autofill/*",
"//chrome/browser/background/*",
"//chrome/browser/background_fetch/*",
"//chrome/browser/background_sync/*",
"//chrome/browser/banners/*",
"//chrome/browser/bitmap_fetcher/*",
"//chrome/browser/bookmarks/*",
"//chrome/browser/browsing_data/*",
"//chrome/browser/budget_service/*",
"//chrome/browser/captive_portal/*",
"//chrome/browser/chooser_controller/*",
"//chrome/browser/chromeos/*",
"//chrome/browser/client_hints/*",
"//chrome/browser/clipboard/*",
"//chrome/browser/component_updater/*",
"//chrome/browser/conflicts/*",
"//chrome/browser/consent_auditor/*",
"//chrome/browser/content_settings/*",
"//chrome/browser/crash_upload_list/*",
"//chrome/browser/custom_handlers/*",
"//chrome/browser/data_saver/*",
"//chrome/browser/data_use_measurement/*",
"//chrome/browser/dbus/*",
#"//chrome/browser/devtools/*", # 93 errors
"//chrome/browser/diagnostics/*",
"//chrome/browser/domain_reliability/*",
"//chrome/browser/dom_distiller/*",
"//chrome/browser/downgrade/*",
"//chrome/browser/download/*",
"//chrome/browser/drive/*",
"//chrome/browser/engagement/*",
"//chrome/browser/extensions/*",
"//chrome/browser/external_protocol/*",
"//chrome/browser/favicon/*",
"//chrome/browser/feature_engagement/*",
"//chrome/browser/feedback/*",
"//chrome/browser/first_run/*",
"//chrome/browser/gcm/*",
"//chrome/browser/generic_sensor/*",
"//chrome/browser/geolocation/*",
"//chrome/browser/google/*",
"//chrome/browser/gpu/*",
"//chrome/browser/guest_view/*",
"//chrome/browser/hang_monitor/*",
"//chrome/browser/history/*",
"//chrome/browser/importer/*",
"//chrome/browser/infobars/*",
"//chrome/browser/installable/*",
"//chrome/browser/install_verification/*",
"//chrome/browser/internal/*",
"//chrome/browser/interstitials/*",
"//chrome/browser/invalidation/*",
"//chrome/browser/language/*",
"//chrome/browser/lifetime/*",
#"//chrome/browser/loader/*", # 2 errors
"//chrome/browser/local_discovery/*",
"//chrome/browser/mac/*",
#"//chrome/browser/media/*", # 74 errors
"//chrome/browser/media_galleries/*",
"//chrome/browser/memory/*",
"//chrome/browser/metrics/*",
"//chrome/browser/nacl_host/*",
"//chrome/browser/navigation_predictor/*",
"//chrome/browser/net/*",
"//chrome/browser/notifications/*",
"//chrome/browser/ntp_snippets/*",
"//chrome/browser/ntp_tiles/*",
"//chrome/browser/obsolete_system/*",
"//chrome/browser/offline_items_collection/*",
"//chrome/browser/offline_pages/*",
"//chrome/browser/page_load_metrics/*",
"//chrome/browser/password_manager/*",
"//chrome/browser/payments/*",
"//chrome/browser/pdf/*",
"//chrome/browser/performance_monitor/*",
"//chrome/browser/permissions/*",
"//chrome/browser/picture_in_picture/*",
"//chrome/browser/plugins/*",
# "//chrome/browser/policy/*", # 1 error on Windows
"//chrome/browser/predictors/*",
"//chrome/browser/prefetch/*",
"//chrome/browser/prefs/*",
"//chrome/browser/prerender/*",
"//chrome/browser/previews/*",
"//chrome/browser/printing/*",
"//chrome/browser/profile_resetter/*",
"//chrome/browser/profiles/*",
#"//chrome/browser/profiling_host/*", # 16 errors
"//chrome/browser/push_messaging/*",
"//chrome/browser/recovery/*",
"//chrome/browser/renderer_context_menu/*",
"//chrome/browser/renderer_host/*",
"//chrome/browser/resource_coordinator/*",
#"//chrome/browser/resources/*", # 18 errors on ChromeOS
"//chrome/browser/rlz/*",
#"//chrome/browser/safe_browsing/*", # 239 errors
"//chrome/browser/search/*",
"//chrome/browser/search_engines/*",
"//chrome/browser/search_provider_logos/*",
"//chrome/browser/service_process/*",
"//chrome/browser/sessions/*",
"//chrome/browser/signin/*",
"//chrome/browser/speech/*",
"//chrome/browser/spellchecker/*",
"//chrome/browser/ssl/*",
"//chrome/browser/status_icons/*",
"//chrome/browser/storage/*",
"//chrome/browser/subresource_filter/*",
"//chrome/browser/supervised_user/*",
"//chrome/browser/sync/*",
"//chrome/browser/sync_file_system/*",
"//chrome/browser/tab_contents/*",
"//chrome/browser/task_manager/*",
"//chrome/browser/themes/*",
"//chrome/browser/thumbnails/*",
"//chrome/browser/tracing/*",
"//chrome/browser/translate/*",
"//chrome/browser/ui/*",
"//chrome/browser/undo/*",
"//chrome/browser/unified_consent/*",
"//chrome/browser/update_client/*",
"//chrome/browser/upgrade_detector/*",
"//chrome/browser/usb/*",
"//chrome/browser/vr/*",
"//chrome/browser/web_applications/*",
"//chrome/browser/webauthn/*",
"//chrome/browser/webshare/*",
"//chrome/browser/win/*",
"//chrome/build/*",
#"//chrome/child/*", # 1 error on Windows
"//chrome/chrome_cleaner/*",
#"//chrome/chrome_watcher/*", # 3 errors on Windows
"//chrome/common/*",
#"//chrome/elevation_service/*", # 1 error on Windows
#"//chrome/gpu/*", # 7 errors
"//chrome/installer/*",
#"//chrome/install_static/*", # 8 errors on Windows
"//chrome/nacl/*",
#"//chrome/notification_helper/*", # 4 errors on Windows
#"//chrome/renderer/*", # ~30 errors
#"//chrome/service/*", # 2 errors
#"//chrome/services/*", # ~30 errors
#"//chrome/test/*", # ~3000 errors
"//chrome/third_party/*",
"//chrome/tools/*",
"//chrome/utility/*",
"//chromecast/*",
"//chromeos/*",
"//chrome_elf/*",
"//cloud_print/*",
"//components/*",
"//content/*",
"//courgette/*",
"//crypto/*",
"//data/*",
"//dbus/*",
"//device/*",
#"//extensions/*", # Lots of errors.
"//extensions:extensions_resources",
"//extensions:extensions_browsertests",
"//extensions:extensions_unittests",
"//extensions/browser",
"//extensions/browser:browser_tests",
"//extensions/browser:unit_tests",
"//extensions/browser/install:*",
"//extensions/common/*",
"//extensions/components/javascript_dialog_extensions_client",
"//extensions/components/native_app_window",
"//extensions/renderer:unit_tests",
"//extensions/shell/*",
"//extensions/strings/*",
"//gin/*",
"//google_apis/*",
"//google_update/*",
"//gpu/*",
"//ios/*",
"//ios_internal/*",
"//ipc/*",
#"//jingle/*",
"//mash/*",
"//media/*",
"//mojo/*",
#"//native_client/*",
"//net/*",
#"//pdf/*", # Medium-hard.
#"//ppapi/*", # Lots of errors.
"//ppapi/examples/*",
"//ppapi/tests/*",
"//printing/*",
#"//remoting/*", # Medium-hard.
"//rlz/*",
#"//sandbox/*", # Medium-hard.
"//services/*",
"//skia/*",
"//sql/*",
"//storage/*",
"//testing/*",
#"//third_party/*", # May not ever want this.
#"//third_party/breakpad/*", # Small errors.
"//third_party/boringssl/*",
"//third_party/brotli/*",
"//third_party/fuchsia-sdk/*",
"//third_party/hunspell/*",
"//third_party/leveldatabase/*",
#"//third_party/libaddressinput/*", # Small errors.
"//third_party/libphonenumber/*",
#"//third_party/libwebp/*", # Errors: https://crbug.com/800762
"//third_party/snappy/*",
#"//third_party/WebKit/*", # Errors: https://crbug.com/800764
#"//third_party/webrtc/*", # Errors: https://crbug.com/824831
"//third_party/webrtc_overrides/*",
"//tools/*",
"//ui/*",
"//url/*",
#"//v8/*", # Errors: https://bugs.chromium.org/p/v8/issues/detail?id=7330
"//webrunner/*",
]
# These are the list of GN files that run exec_script. This whitelist exists
# to force additional review for new uses of exec_script, which is strongly
# discouraged.
#
# GYPI_TO_GN
#
# Some of these entries are for legacy gypi_to_gn calls. We should not be
# adding new calls to this script in the build (see //build/gypi_to_gn.py for
# detailed advice). The only time you should be editing this list for
# gypi_to_gn purposes is when moving an existing call to a different place.
#
# PLEASE READ
#
# You should almost never need to add new exec_script calls. exec_script is
# slow, especially on Windows, and can cause confusing effects. Although
# individually each call isn't slow or necessarily very confusing, at the scale
# of our repo things get out of hand quickly. By strongly pushing back on all
# additions, we keep the build fast and clean. If you think you need to add a
# new call, please consider:
#
# - Do not use a script to check for the existence of a file or directory to
# enable a different mode. Instead, use GN build args to enable or disable
# functionality and set options. An example is checking for a file in the
# src-internal repo to see if the corresponding src-internal feature should
# be enabled. There are several things that can go wrong with this:
#
# - It's mysterious what causes some things to happen. Although in many cases
# such behavior can be conveniently automatic, GN optimizes for explicit
# and obvious behavior so people can more easily diagnose problems.
#
# - The user can't enable a mode for one build and not another. With GN build
# args, the user can choose the exact configuration of multiple builds
# using one checkout. But implicitly basing flags on the state of the
# checkout, this functionality is broken.
#
# - It's easy to get stale files. If for example the user edits the gclient
# to stop checking out src-internal (or any other optional thing), it's
# easy to end up with stale files still mysteriously triggering build
# conditions that are no longer appropriate (yes, this happens in real
# life).
#
# - Do not use a script to iterate files in a directory (glob):
#
# - This has the same "stale file" problem as the above discussion. Various
# operations can leave untracked files in the source tree which can cause
# surprising effects.
#
# - It becomes impossible to use "git grep" to find where a certain file is
# referenced. This operation is very common and people really do get
# confused when things aren't listed.
#
# - It's easy to screw up. One common case is a build-time script that packs
# up a directory. The author notices that the script isn't re-run when the
# directory is updated, so adds a glob so all the files are listed as
# inputs. This seems to work great... until a file is deleted. When a
# file is deleted, all the inputs the glob lists will still be up to date
# and no command-lines will have been changed. The action will not be
# re-run and the build will be broken. It is possible to get this correct
# using glob, and it's possible to mess it up without glob, but globs make
# this situation much easier to create. if the build always lists the
# files and passes them to a script, it will always be correct.
exec_script_whitelist =
build_dotfile_settings.exec_script_whitelist +
angle_dotfile_settings.exec_script_whitelist +
[
# Whitelist entries for //build should go into
# //build/dotfile_settings.gni instead, so that they can be shared
# with other repos. The entries in this list should be only for files
# in the Chromium repo outside of //build.
"//build_overrides/build.gni",
# TODO(dgn): Layer violation but breaks the build otherwise, see
# https://crbug.com/474506.
"//clank/java/BUILD.gn",
"//clank/native/BUILD.gn",
"//remoting/host/installer/linux/BUILD.gn",
"//remoting/remoting_version.gni",
"//remoting/host/installer/win/generate_clsids.gni",
# TODO(dpranke): Get these from the appropriate repos instead.
"//third_party/catapult/tracing/BUILD.gn",
"//third_party/google_input_tools/inputview.gni",
"//tools/grit/grit_rule.gni",
# Not gypi-to-gn.
"//google_apis/BUILD.gn",
"//printing/BUILD.gn",
]

1002
AUTHORS Normal file

File diff suppressed because it is too large Load Diff

1168
BUILD.gn Normal file

File diff suppressed because it is too large Load Diff

27
LICENSE Normal file
View File

@ -0,0 +1,27 @@
// Copyright 2015 The Chromium Authors. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

27
LICENSE.chromium_os Normal file
View File

@ -0,0 +1,27 @@
// Copyright (c) 2006-2009 The Chromium OS Authors. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

1092
android_webview/BUILD.gn Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,15 @@
# Copyright 2017 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("//build/config/android/rules.gni")
# Since Monochrome has its own content provider, these two files are put
# in two different targets.
android_library("webview_license_provider_java") {
java_files = [ "//android_webview/apk/java/src/com/android/webview/chromium/LicenseContentProvider.java" ]
}
android_library("webview_license_activity_java") {
java_files = [ "//android_webview/apk/java/src/com/android/webview/chromium/LicenseActivity.java" ]
}

View File

@ -0,0 +1,70 @@
# 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("//android_webview/system_webview_apk_tmpl.gni")
import("//android_webview/variables.gni")
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
import("generate_resource_rewriter.gni")
import("glue.gni")
generate_resource_rewriter("glue_resource_rewriter") {
# Change deps? please modify glue_library_deps variable.
deps = glue_library_deps
package_name = "com.android.webview.chromium"
}
android_library("glue") {
# Change deps? please modify glue_library_deps variable.
deps = glue_library_deps
srcjar_deps = [ ":glue_resource_rewriter" ]
alternative_android_sdk_dep =
"//third_party/android_system_sdk:public_framework_system_java"
java_files = [
"java/src/com/android/webview/chromium/CallbackConverter.java",
"java/src/com/android/webview/chromium/ContentSettingsAdapter.java",
"java/src/com/android/webview/chromium/CookieManagerAdapter.java",
"java/src/com/android/webview/chromium/DrawGLFunctor.java",
"java/src/com/android/webview/chromium/FontPreloadingWorkaround.java",
"java/src/com/android/webview/chromium/GeolocationPermissionsAdapter.java",
"java/src/com/android/webview/chromium/GlueApiHelperForM.java",
"java/src/com/android/webview/chromium/GlueApiHelperForN.java",
"java/src/com/android/webview/chromium/GlueApiHelperForO.java",
"java/src/com/android/webview/chromium/GlueApiHelperForOMR1.java",
"java/src/com/android/webview/chromium/GlueApiHelperForP.java",
"java/src/com/android/webview/chromium/GraphicsUtils.java",
"java/src/com/android/webview/chromium/MonochromeLibraryPreloader.java",
"java/src/com/android/webview/chromium/SafeBrowsingResponseAdapter.java",
"java/src/com/android/webview/chromium/ServiceWorkerClientAdapter.java",
"java/src/com/android/webview/chromium/ServiceWorkerControllerAdapter.java",
"java/src/com/android/webview/chromium/ServiceWorkerSettingsAdapter.java",
"java/src/com/android/webview/chromium/SharedStatics.java",
"java/src/com/android/webview/chromium/SplitApkWorkaround.java",
"java/src/com/android/webview/chromium/TokenBindingManagerAdapter.java",
"java/src/com/android/webview/chromium/TracingControllerAdapter.java",
"java/src/com/android/webview/chromium/WebBackForwardListChromium.java",
"java/src/com/android/webview/chromium/WebHistoryItemChromium.java",
"java/src/com/android/webview/chromium/WebIconDatabaseAdapter.java",
"java/src/com/android/webview/chromium/WebMessagePortAdapter.java",
"java/src/com/android/webview/chromium/WebResourceErrorAdapter.java",
"java/src/com/android/webview/chromium/WebResourceRequestAdapter.java",
"java/src/com/android/webview/chromium/WebStorageAdapter.java",
"java/src/com/android/webview/chromium/WebkitToSharedGlueConverter.java",
"java/src/com/android/webview/chromium/WebViewApplication.java",
"java/src/com/android/webview/chromium/WebViewChromiumAwInit.java",
"java/src/com/android/webview/chromium/WebViewChromium.java",
"java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java",
"java/src/com/android/webview/chromium/WebViewChromiumFactoryProviderForO.java",
"java/src/com/android/webview/chromium/WebViewChromiumFactoryProviderForOMR1.java",
"java/src/com/android/webview/chromium/WebViewChromiumFactoryProviderForP.java",
"java/src/com/android/webview/chromium/SharedWebViewChromium.java",
"java/src/com/android/webview/chromium/WebViewContentsClientAdapter.java",
"java/src/com/android/webview/chromium/WebViewDatabaseAdapter.java",
"java/src/com/android/webview/chromium/WebViewDelegateFactory.java",
]
android_manifest_for_lint = system_webview_android_manifest
}

View File

@ -0,0 +1,55 @@
# 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("//build/config/android/rules.gni")
# Generate ResourceRewriter.java from Android Libraries according the dep
# graph.
# Argument:
# deps
# The same deps of target that uses the generated ResourceRewriter.
# package_name
# The package name of ResourceRewriter.java.
#
# This target generates a single srcjar containing generated
# ResourceRewrite.java which will list the R classes generated by all the
# Android libraries reachabled from the target specified in deps. Add this
# target to srcjar_deps of android_library will call ResourceRewriter.
#
template("generate_resource_rewriter") {
set_sources_assignment_filter([])
assert(defined(invoker.package_name))
_final_target_name = target_name
_build_config = "$target_gen_dir/${target_name}.build_config"
_build_config_target_name = "${target_name}__build_config"
_srcjar = "$target_gen_dir/${target_name}.srcjar"
write_build_config(_build_config_target_name) {
possible_config_deps = invoker.deps
type = "resource_rewriter"
build_config = _build_config
}
action(_final_target_name) {
forward_variables_from(invoker, [ "visibility" ])
inputs = [
_build_config,
]
deps = invoker.deps + [ ":${_build_config_target_name}" ]
script = "//build/android/gyp/generate_resource_rewriter.py"
_rebased_build_config = rebase_path(_build_config, root_build_dir)
args = [
"--package-name",
invoker.package_name,
"--dep-packages",
"@FileArg($_rebased_build_config:resources:extra_package_names)",
"--srcjar",
rebase_path(_srcjar, root_build_dir),
]
outputs = [
_srcjar,
]
}
}

View File

@ -0,0 +1,20 @@
# 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.
# This variable shared between 'glue' and 'glue_resource_rewriter' because
# ResourceRewrite.java need to be generated according 'glue' deps.
glue_library_deps = [
"//android_webview:android_webview_java",
"//android_webview:android_webview_commandline_java",
"//android_webview:android_webview_platform_services_java",
"//android_webview:system_webview_manifest",
"//android_webview/support_library/boundary_interfaces:boundary_interface_java",
"//android_webview/support_library/callback:callback_java",
"//base:base_java",
"//components/autofill/android:autofill_java",
"//components/autofill/android:provider_java",
"//content/public/android:content_java",
"//net/android:net_java",
"//ui/android:ui_java",
]

View File

@ -0,0 +1,10 @@
# Copyright 2018 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("//build/config/android/rules.gni")
proto_java_library("aw_variations_seed_proto_java") {
proto_path = "."
sources = [ "aw_variations_seed.proto" ]
}

View File

@ -0,0 +1,32 @@
# Copyright 2018 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("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
android_library("support_lib_glue_java") {
java_files = [
"java/src/org/chromium/support_lib_glue/IsomorphicAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibReflectionUtil.java",
"java/src/org/chromium/support_lib_glue/SupportLibServiceWorkerClientAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibServiceWorkerControllerAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibServiceWorkerSettingsAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibWebMessageCallbackAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibWebMessagePortAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibWebResourceRequest.java",
"java/src/org/chromium/support_lib_glue/SupportLibWebSettingsAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibWebViewChromium.java",
"java/src/org/chromium/support_lib_glue/SupportLibWebViewChromiumFactory.java",
"java/src/org/chromium/support_lib_glue/SupportLibWebViewRendererAdapter.java",
"java/src/org/chromium/support_lib_glue/SupportLibWebkitToCompatConverterAdapter.java",
]
deps = [
"//android_webview:android_webview_commandline_java",
"//android_webview:android_webview_java",
"//android_webview/glue:glue",
"//android_webview/support_library/boundary_interfaces:boundary_interface_java",
"//base:base_java",
]
}

View File

@ -0,0 +1,42 @@
# Copyright 2017 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("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
android_library("boundary_interface_java") {
java_files = [
"src/org/chromium/support_lib_boundary/FeatureFlagHolderBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/IsomorphicObjectBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/SafeBrowsingResponseBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/ServiceWorkerClientBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/ServiceWorkerControllerBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/ServiceWorkerWebSettingsBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/StaticsBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/VisualStateCallbackBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebMessageBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebMessageCallbackBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebMessagePortBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebResourceErrorBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebResourceRequestBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebSettingsBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebViewClientBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebViewProviderBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebViewProviderFactoryBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebViewRendererBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/WebkitToCompatConverterBoundaryInterface.java",
"src/org/chromium/support_lib_boundary/util/BoundaryInterfaceReflectionUtil.java",
"src/org/chromium/support_lib_boundary/util/Features.java",
]
proguard_configs = [ "proguard.flags" ]
# We can't use ANY deps here, the support library should be able to build
# these interfaces without any other chromium dependencies.
deps = []
# This is to verify the boundary interfaces compile and lint correctly against
# the minSdkVersion of the webkit support library module.
android_manifest_for_lint = "AndroidManifest.xml"
}

View File

@ -0,0 +1,21 @@
# Copyright 2018 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("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
android_library("callback_java") {
java_files = [
"java/src/org/chromium/support_lib_callback_glue/SupportLibSafeBrowsingResponse.java",
"java/src/org/chromium/support_lib_callback_glue/SupportLibWebResourceError.java",
"java/src/org/chromium/support_lib_callback_glue/SupportLibWebViewContentsClientAdapter.java",
]
deps = [
"//android_webview:android_webview_commandline_java",
"//android_webview:android_webview_java",
"//android_webview/support_library/boundary_interfaces:boundary_interface_java",
"//base:base_java",
]
}

View File

@ -0,0 +1,69 @@
# 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("//base/android/proguard/proguard.gni")
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
import("//build/config/locales.gni")
template("system_webview_apk_tmpl") {
android_apk(target_name) {
forward_variables_from(invoker, "*")
deps += [
"//android_webview:assets",
"//android_webview/apk:webview_license_activity_java",
"//android_webview/apk:webview_license_provider_java",
"//base:base_java",
]
if (!defined(alternative_android_sdk_dep)) {
alternative_android_sdk_dep = webview_framework_dep
}
shared_resources = true
shared_libraries = [ "//android_webview:libwebviewchromium" ]
native_lib_version_rule = "//build/util:chrome_version_json"
_native_lib_file =
rebase_path("$root_gen_dir/CHROME_VERSION.json", root_out_dir)
native_lib_version_arg = "@FileArg($_native_lib_file:full-quoted)"
if (build_apk_secondary_abi && android_64bit_target_cpu) {
secondary_abi_shared_libraries = [ "//android_webview:libwebviewchromium($android_secondary_abi_toolchain)" ]
}
aapt_locale_whitelist = locales
# Whitelist rationale in https://crbug.com/691733.
exclude_xxxhdpi = true
xxxhdpi_whitelist = [
"*shadow*", # Combination of gradient & transparency cause pixelation.
"*.9.*", # Most nine-patches contain shadows.
]
# Used as an additional apk in test scripts.
never_incremental = true
if (is_java_debug) {
enable_multidex = true
} else {
proguard_enabled = true
if (!defined(proguard_configs)) {
proguard_configs = []
}
proguard_configs += [
"//android_webview/apk/java/proguard.flags",
"//base/android/proguard/chromium_apk.flags",
"//base/android/proguard/chromium_code.flags",
]
if (enable_proguard_obfuscation) {
proguard_configs +=
[ "//base/android/proguard/enable_obfuscation.flags" ]
} else {
proguard_configs +=
[ "//base/android/proguard/disable_all_obfuscation.flags" ]
}
png_to_webp = true
}
command_line_flags_file = "webview-command-line"
}
}

View File

@ -0,0 +1,360 @@
# 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("//build/config/android/rules.gni")
import("//device/vr/buildflags/buildflags.gni")
import("//testing/test.gni")
import("//tools/v8_context_snapshot/v8_context_snapshot.gni")
# Mark all targets as test only.
testonly = true
group("test") {
deps = [
":android_webview_unittests",
":webview_instrumentation_test_apk",
]
}
android_apk("webview_instrumentation_apk") {
deps = [
":android_webview_apk_assets",
":android_webview_apk_resources",
"//android_webview:android_webview_java",
"//android_webview:locale_pak_assets",
"//android_webview:platform_service_bridge_upstream_implementation_java",
"//base:base_java",
"//base:base_java_test_support",
"//components/heap_profiling:heap_profiling_java_test_support",
"//components/policy/android:policy_java_test_support",
"//content/public/android:content_java",
"//third_party/android_support_test_runner:runner_java",
"//third_party/junit",
"//ui/android:ui_java",
]
apk_name = "WebViewInstrumentation"
android_manifest = "shell/AndroidManifest.xml"
java_files = [
"shell/src/org/chromium/android_webview/shell/AwShellActivity.java",
"shell/src/org/chromium/android_webview/shell/AwShellApplication.java",
"shell/src/org/chromium/android_webview/shell/AwShellResourceProvider.java",
"shell/src/org/chromium/android_webview/shell/AwShellSwitches.java",
"shell/src/org/chromium/android_webview/shell/DrawGL.java",
"shell/src/org/chromium/android_webview/test/AwTestContainerView.java",
"shell/src/org/chromium/android_webview/test/AwTestRunnerActivity.java",
"shell/src/org/chromium/android_webview/test/AwJUnit4ClassRunner.java",
"shell/src/org/chromium/android_webview/test/NullContentsClient.java",
"shell/src/org/chromium/android_webview/test/SecondBrowserProcess.java",
"shell/src/org/chromium/android_webview/test/OnlyRunIn.java",
"shell/src/org/chromium/android_webview/test/TestContentProvider.java",
]
shared_libraries = [
":libdrawgl",
":libstandalonelibwebviewchromium",
]
native_lib_version_rule = "//build/util:chrome_version_json"
_native_lib_file =
rebase_path("$root_gen_dir/CHROME_VERSION.json", root_build_dir)
native_lib_version_arg = "@FileArg($_native_lib_file:full-quoted)"
enable_multidex = true
command_line_flags_file = "android-webview-command-line"
}
android_resources("android_webview_apk_resources") {
resource_dirs = [ "shell/res" ]
custom_package = "org.chromium.android_webview.shell"
}
android_assets("android_webview_apk_assets") {
deps = [
"//android_webview:pak_file_assets",
"//third_party/icu:icu_assets",
]
sources = [
"shell/assets/asset_file.html",
"shell/assets/asset_icon.png",
"shell/assets/autofill.html",
"shell/assets/cookie_test.html",
"shell/assets/full_screen_video.js",
"shell/assets/full_screen_video_inside_div_test.html",
"shell/assets/full_screen_video_test.html",
"shell/assets/full_screen_video_test_not_preloaded.html",
"shell/assets/key-system-test.html",
"shell/assets/platform-media-codec-test.html",
"shell/assets/star.svg",
"shell/assets/star.svgz",
"shell/assets/video.3gp",
"shell/assets/video.webm",
"shell/assets/visual_state_during_fullscreen_test.html",
"shell/assets/visual_state_on_page_commit_visible_test.html",
"shell/assets/visual_state_waits_for_js_detached_test.html",
"shell/assets/visual_state_waits_for_js_test.html",
"shell/assets/webvr_not_functional_test.html",
]
if (use_v8_context_snapshot) {
deps += [ "//tools/v8_context_snapshot:v8_context_snapshot_assets" ]
} else {
deps += [ "//v8:v8_external_startup_data_assets" ]
}
}
shared_library("libstandalonelibwebviewchromium") {
testonly = true
sources = [
"../lib/webview_entry_point.cc",
]
ldflags = [ "-Wl,-shared,-Bsymbolic" ]
deps = [
"//android_webview:common",
"//components/heap_profiling:test_support",
"//components/minidump_uploader",
]
configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
configs += [ "//build/config/android:hide_all_but_jni" ]
}
instrumentation_test_apk("webview_instrumentation_test_apk") {
apk_name = "WebViewInstrumentationTest"
apk_under_test = ":webview_instrumentation_apk"
android_manifest = "../javatests/AndroidManifest.xml"
deps = [
"//android_webview:android_webview_java",
"//android_webview:android_webview_platform_services_java",
"//android_webview:android_webview_services_java",
"//android_webview:aw_variations_seed_server_aidl",
"//android_webview/test/embedded_test_server:aw_net_java_test_support",
"//base:base_java",
"//base:base_java_test_support",
"//components/autofill/android:provider_java",
"//components/embedder_support/android:web_contents_delegate_java",
"//components/minidump_uploader:minidump_uploader_java",
"//components/minidump_uploader:minidump_uploader_javatests",
"//components/policy/android:policy_java",
"//components/policy/android:policy_java_test_support",
"//components/safe_browsing/android:safe_browsing_java",
"//content/public/android:content_java",
"//content/public/test/android:content_java_test_support",
"//mojo/public/java:bindings_java",
"//net/android:net_java",
"//net/android:net_java_test_support",
"//services/device/public/java:geolocation_java",
"//services/device/public/java:geolocation_java_test_support",
"//third_party/android_support_test_runner:rules_java",
"//third_party/android_support_test_runner:runner_java",
"//third_party/junit",
"//ui/android:ui_java",
]
java_files = [
"../javatests/src/org/chromium/android_webview/test/AcceptLanguageTest.java",
"../javatests/src/org/chromium/android_webview/test/AndroidProtocolHandlerTest.java",
"../javatests/src/org/chromium/android_webview/test/AndroidScrollIntegrationTest.java",
"../javatests/src/org/chromium/android_webview/test/AndroidViewIntegrationTest.java",
"../javatests/src/org/chromium/android_webview/test/ArchiveTest.java",
"../javatests/src/org/chromium/android_webview/test/AwActivityTestRule.java",
"../javatests/src/org/chromium/android_webview/test/AwAutofillTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsAnchorViewTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientAutoLoginTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientCallbackHelperTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientFaviconTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientFullScreenTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientGetDefaultVideoPosterTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientOnFormResubmissionTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientOnRenderProcessGoneTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientOnScaleChangedTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientOnUnhandledKeyEventTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientShouldInterceptRequestTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsClientVisitedHistoryTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsContainerViewTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsGarbageCollectionTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsLifecycleNotifierTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsRenderTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsStaticsTest.java",
"../javatests/src/org/chromium/android_webview/test/AwContentsTest.java",
"../javatests/src/org/chromium/android_webview/test/AwDebugTest.java",
"../javatests/src/org/chromium/android_webview/test/AwFormDatabaseTest.java",
"../javatests/src/org/chromium/android_webview/test/AwImeTest.java",
"../javatests/src/org/chromium/android_webview/test/AwJavaBridgeTest.java",
"../javatests/src/org/chromium/android_webview/test/AwLayoutSizerTest.java",
"../javatests/src/org/chromium/android_webview/test/AwLegacyQuirksTest.java",
"../javatests/src/org/chromium/android_webview/test/AwPermissionManagerTest.java",
"../javatests/src/org/chromium/android_webview/test/AwQuotaManagerBridgeTest.java",
"../javatests/src/org/chromium/android_webview/test/AwScrollOffsetManagerTest.java",
"../javatests/src/org/chromium/android_webview/test/AwSecondBrowserProcessTest.java",
"../javatests/src/org/chromium/android_webview/test/AwServiceWorkerClientTest.java",
"../javatests/src/org/chromium/android_webview/test/AwSettingsTest.java",
"../javatests/src/org/chromium/android_webview/test/AwStrictModeTest.java",
"../javatests/src/org/chromium/android_webview/test/AwVariationsSeedFetcherTest.java",
"../javatests/src/org/chromium/android_webview/test/AwWebContentsObserverTest.java",
"../javatests/src/org/chromium/android_webview/test/AwZoomTest.java",
"../javatests/src/org/chromium/android_webview/test/CleanupReferenceTest.java",
"../javatests/src/org/chromium/android_webview/test/ClearHistoryTest.java",
"../javatests/src/org/chromium/android_webview/test/ClientAddMessageToConsoleTest.java",
"../javatests/src/org/chromium/android_webview/test/ClientOnPageFinishedTest.java",
"../javatests/src/org/chromium/android_webview/test/ClientOnPageStartedTest.java",
"../javatests/src/org/chromium/android_webview/test/ClientOnReceivedError2Test.java",
"../javatests/src/org/chromium/android_webview/test/ClientOnReceivedErrorTest.java",
"../javatests/src/org/chromium/android_webview/test/ClientOnReceivedHttpErrorTest.java",
"../javatests/src/org/chromium/android_webview/test/ConsoleMessagesForBlockedLoadsTest.java",
"../javatests/src/org/chromium/android_webview/test/ContentViewMiscTest.java",
"../javatests/src/org/chromium/android_webview/test/CookieManagerStartupTest.java",
"../javatests/src/org/chromium/android_webview/test/CookieManagerTest.java",
"../javatests/src/org/chromium/android_webview/test/DisableHardwareAccelerationForTest.java",
"../javatests/src/org/chromium/android_webview/test/FindAddressTest.java",
"../javatests/src/org/chromium/android_webview/test/FullScreenVideoTestAwContentsClient.java",
"../javatests/src/org/chromium/android_webview/test/GeolocationTest.java",
"../javatests/src/org/chromium/android_webview/test/GetTitleTest.java",
"../javatests/src/org/chromium/android_webview/test/HeapProfilingTest.java",
"../javatests/src/org/chromium/android_webview/test/HttpAuthDatabaseTest.java",
"../javatests/src/org/chromium/android_webview/test/HttpCacheTest.java",
"../javatests/src/org/chromium/android_webview/test/KeySystemTest.java",
"../javatests/src/org/chromium/android_webview/test/LoadDataWithBaseUrlTest.java",
"../javatests/src/org/chromium/android_webview/test/LoadUrlTest.java",
"../javatests/src/org/chromium/android_webview/test/MediaAccessPermissionRequestTest.java",
"../javatests/src/org/chromium/android_webview/test/NavigationHistoryTest.java",
"../javatests/src/org/chromium/android_webview/test/PlatformMediaCodecTest.java",
"../javatests/src/org/chromium/android_webview/test/PolicyUrlFilteringTest.java",
"../javatests/src/org/chromium/android_webview/test/PopupWindowTest.java",
"../javatests/src/org/chromium/android_webview/test/PostMessageTest.java",
"../javatests/src/org/chromium/android_webview/test/RenderProcessGoneHelper.java",
"../javatests/src/org/chromium/android_webview/test/SaveRestoreStateTest.java",
"../javatests/src/org/chromium/android_webview/test/SafeBrowsingTest.java",
"../javatests/src/org/chromium/android_webview/test/AwUncaughtExceptionTest.java",
"../javatests/src/org/chromium/android_webview/test/StandaloneAwQuotaManagerBridgeTest.java",
"../javatests/src/org/chromium/android_webview/test/TestAwContents.java",
"../javatests/src/org/chromium/android_webview/test/TestAwContentsClient.java",
"../javatests/src/org/chromium/android_webview/test/TestAwServiceWorkerClient.java",
"../javatests/src/org/chromium/android_webview/test/UserAgentTest.java",
"../javatests/src/org/chromium/android_webview/test/VariationsSeedHolderTest.java",
"../javatests/src/org/chromium/android_webview/test/VariationsSeedLoaderTest.java",
"../javatests/src/org/chromium/android_webview/test/VariationsUtilsTest.java",
"../javatests/src/org/chromium/android_webview/test/VisualStateTest.java",
"../javatests/src/org/chromium/android_webview/test/WebKitHitTestTest.java",
"../javatests/src/org/chromium/android_webview/test/WebViewAsynchronousFindApisTest.java",
"../javatests/src/org/chromium/android_webview/test/WebViewFindApisTestRule.java",
"../javatests/src/org/chromium/android_webview/test/WebViewModalDialogOverrideTest.java",
"../javatests/src/org/chromium/android_webview/test/WebViewWebVrTest.java",
"../javatests/src/org/chromium/android_webview/test/services/CrashReceiverServiceTest.java",
"../javatests/src/org/chromium/android_webview/test/services/MinidumpUploaderTest.java",
"../javatests/src/org/chromium/android_webview/test/services/MockVariationsSeedServer.java",
"../javatests/src/org/chromium/android_webview/test/services/VariationsSeedServerTest.java",
"../javatests/src/org/chromium/android_webview/test/services/VisualStateCallbackTest.java",
"../javatests/src/org/chromium/android_webview/test/util/AwQuotaManagerBridgeTestUtil.java",
"../javatests/src/org/chromium/android_webview/test/util/AwTestTouchUtils.java",
"../javatests/src/org/chromium/android_webview/test/util/CommonResources.java",
"../javatests/src/org/chromium/android_webview/test/util/CookieUtils.java",
"../javatests/src/org/chromium/android_webview/test/util/GraphicsTestUtils.java",
"../javatests/src/org/chromium/android_webview/test/util/ImagePageGenerator.java",
"../javatests/src/org/chromium/android_webview/test/util/JSUtils.java",
"../javatests/src/org/chromium/android_webview/test/util/JavascriptEventObserver.java",
"../javatests/src/org/chromium/android_webview/test/util/VariationsTestUtils.java",
"../javatests/src/org/chromium/android_webview/test/util/VideoSurfaceViewUtils.java",
"../javatests/src/org/chromium/android_webview/test/util/VideoTestUtil.java",
"../javatests/src/org/chromium/android_webview/test/util/VideoTestWebServer.java",
]
data = [
"data/",
]
# We only want to bother including these on bots set up for VR testing
if (include_vr_data) {
data += [
"//chrome/android/shared_preference_files/test/",
"//third_party/gvr-android-sdk/test-apks/vr_services/vr_services_current.apk",
]
}
additional_apks = [
"//android_webview/test/embedded_test_server:aw_net_test_support_apk",
"//net/android:net_test_support_apk",
]
}
test("android_webview_unittests") {
# Dependencies (e.g. Play services) make the binary reach the dex limit.
enable_multidex = true
deps = [
":android_webview_unittests_assets",
":android_webview_unittests_java",
":android_webview_unittests_jni",
"//android_webview:common",
"//base/test:test_support",
"//components/prefs:prefs",
"//components/prefs:test_support",
"//content:content",
"//content/test:test_support",
"//net:net",
"//net:test_support",
"//ui/base:ui_base_jni_headers",
"//ui/gl",
"//ui/gl:test_support",
]
sources = [
"../browser/aw_content_browser_client_unittest.cc",
"../browser/aw_contents_client_bridge_unittest.cc",
"../browser/aw_form_database_service_unittest.cc",
"../browser/aw_media_url_interceptor_unittest.cc",
"../browser/aw_permission_manager_unittest.cc",
"../browser/aw_safe_browsing_whitelist_manager_unittest.cc",
"../browser/aw_static_cookie_policy_unittest.cc",
"../browser/browser_view_renderer_unittest.cc",
"../browser/command_line_helper_unittest.cc",
"../browser/input_stream_unittest.cc",
"../browser/net/android_stream_reader_url_request_job_unittest.cc",
"../browser/net/aw_cookie_store_wrapper_unittest.cc",
"../browser/net/aw_url_request_context_getter_unittest.cc",
"../browser/net/input_stream_reader_unittest.cc",
"../browser/permission/media_access_permission_request_unittest.cc",
"../browser/permission/permission_request_handler_unittest.cc",
"../browser/renderer_host/auto_login_parser_unittest.cc",
"../browser/state_serializer_unittest.cc",
"../browser/test/fake_window.cc",
"../browser/test/fake_window.h",
"../browser/test/rendering_test.cc",
"../browser/test/rendering_test.h",
"../lib/webview_tests.cc",
]
}
android_assets("android_webview_unittests_assets") {
sources = [
"unittest/assets/asset_file.ogg",
]
}
android_library("android_webview_unittests_java") {
testonly = true
deps = [
"//android_webview:android_webview_java",
"//base:base_java",
"//content/public/test/android:content_java_test_support",
]
java_files = [
"../unittestjava/src/org/chromium/android_webview/unittest/InputStreamUnittest.java",
"../unittestjava/src/org/chromium/android_webview/unittest/MockAwContentsClientBridge.java",
]
}
generate_jni("android_webview_unittests_jni") {
jni_package = "android_webview_unittests"
sources = [
"../unittestjava/src/org/chromium/android_webview/unittest/InputStreamUnittest.java",
"../unittestjava/src/org/chromium/android_webview/unittest/MockAwContentsClientBridge.java",
]
}
shared_library("libdrawgl") {
sources = [
"shell/src/draw_gl/draw_gl.cc",
]
configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
}

View File

@ -0,0 +1,71 @@
# Copyright 2017 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("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
android_library("aw_net_java_test_support") {
testonly = true
java_files = [
"java/src/org/chromium/android_webview/test/AwEmbeddedTestServer.java",
"java/src/org/chromium/android_webview/test/AwEmbeddedTestServerImpl.java",
"java/src/org/chromium/android_webview/test/AwEmbeddedTestServerService.java",
]
deps = [
"//base:base_java",
"//base:base_java_test_support",
"//net/android:embedded_test_server_aidl_java",
"//net/android:net_java",
"//net/android:net_java_test_support",
"//net/android:net_java_test_support_provider",
]
}
generate_jni("aw_net_jni_headers") {
sources = [
"java/src/org/chromium/android_webview/test/AwEmbeddedTestServerImpl.java",
]
jni_package = "android_webview/test"
}
source_set("aw_java_test_native_support") {
testonly = true
sources = [
"../../../net/test/embedded_test_server/android/embedded_test_server_android.cc",
"../../../net/test/embedded_test_server/android/embedded_test_server_android.h",
"aw_embedded_test_server.cc",
"aw_test_entry_point.cc",
]
deps = [
"//net:test_support",
]
public_deps = [
":aw_net_jni_headers",
"//net:net_test_jni_headers",
]
}
shared_library("aw_net_java_test_native_support") {
testonly = true
deps = [
":aw_java_test_native_support",
"//net:test_support",
]
configs -= [ "//build/config/android:hide_all_but_jni_onload" ]
configs += [ "//build/config/android:hide_all_but_jni" ]
}
android_apk("aw_net_test_support_apk") {
testonly = true
# Used as an additional_apk in test scripts.
never_incremental = true
deps = [
":aw_net_java_test_support",
"//base:base_java",
]
android_manifest = "java/AndroidManifest.xml"
apk_name = "ChromiumNetTestAwSupport"
shared_libraries = [ ":aw_net_java_test_native_support" ]
}

View File

@ -0,0 +1,72 @@
# 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("//build/config/android/rules.gni")
import("//testing/test.gni")
group("webview_ui_test_app") {
testonly = true
deps = [
":webview_ui_test_app_apk",
":webview_ui_test_app_test_apk",
]
}
android_apk("webview_ui_test_app_apk") {
apk_name = "WebViewUiTestApp"
android_manifest = "java/AndroidManifest.xml"
deps = [
":webview_ui_test_app_apk_resources",
":webview_ui_test_app_java",
]
}
android_library("webview_ui_test_app_java") {
java_files =
[ "java/src/org/chromium/webview_ui_test/WebViewUiTestActivity.java" ]
deps = [
":webview_ui_test_app_apk_resources",
"//base:base_java",
]
android_manifest_for_lint = "java/AndroidManifest.xml"
}
android_resources("webview_ui_test_app_apk_resources") {
resource_dirs = [ "java/res" ]
custom_package = "org.chromium.webview_ui_test"
}
instrumentation_test_apk("webview_ui_test_app_test_apk") {
apk_name = "WebViewUiTestAppTest"
apk_under_test = ":webview_ui_test_app_apk"
android_manifest = "javatests/AndroidManifest.xml"
java_files = [
"javatests/src/org/chromium/webview_ui_test/test/ActionModeTest.java",
"javatests/src/org/chromium/webview_ui_test/test/DropDownListTest.java",
"javatests/src/org/chromium/webview_ui_test/test/WebViewJSTest.java",
"javatests/src/org/chromium/webview_ui_test/test/util/Actions.java",
"javatests/src/org/chromium/webview_ui_test/test/util/Atoms.java",
"javatests/src/org/chromium/webview_ui_test/test/util/UseLayout.java",
"javatests/src/org/chromium/webview_ui_test/test/util/WebViewUiTestRule.java",
"javatests/src/org/chromium/webview_ui_test/test/util/WebViewSyncWrapper.java",
]
deps = [
":webview_ui_test_app_apk_resources",
":webview_ui_test_app_java",
"//base:base_java",
"//base:base_java_test_support",
"//third_party/android_support_test_runner:rules_java",
"//third_party/android_support_test_runner:runner_java",
"//third_party/android_tools:android_support_annotations_java",
"//third_party/android_tools:android_test_base_java",
"//third_party/espresso:espresso_all_java",
"//third_party/hamcrest:hamcrest_java",
"//third_party/junit",
"//third_party/ub-uiautomator:ub_uiautomator_java",
]
data = [
"test/data/",
]
}

View File

@ -0,0 +1,90 @@
# 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("//build/config/android/rules.gni")
import("//testing/test.gni")
# Mark all targets as test only.
testonly = true
group("system_webview_shell") {
deps = [
":system_webview_shell_apk",
":system_webview_shell_layout_test_apk",
":system_webview_shell_page_cycler_apk",
]
}
android_apk("system_webview_shell_apk") {
apk_name = "SystemWebViewShell"
java_files = [
"apk/src/org/chromium/webview_shell/JankActivity.java",
"apk/src/org/chromium/webview_shell/PageCyclerTestActivity.java",
"apk/src/org/chromium/webview_shell/StartupTimeActivity.java",
"apk/src/org/chromium/webview_shell/TelemetryActivity.java",
"apk/src/org/chromium/webview_shell/TelemetryMemoryPressureActivity.java",
"apk/src/org/chromium/webview_shell/WebViewCreateDestroyActivity.java",
"apk/src/org/chromium/webview_shell/WebViewBrowserActivity.java",
"apk/src/org/chromium/webview_shell/WebViewLayoutTestActivity.java",
"apk/src/org/chromium/webview_shell/WebViewThreadTestActivity.java",
"apk/src/org/chromium/webview_shell/WebViewTracingActivity.java",
]
android_manifest = "apk/AndroidManifest.xml"
deps = [
":system_webview_shell_apk_resources",
"//base:base_java",
]
}
android_resources("system_webview_shell_apk_resources") {
resource_dirs = [ "apk/res" ]
custom_package = "org.chromium.webview_shell"
}
instrumentation_test_apk("system_webview_shell_page_cycler_apk") {
apk_name = "SystemWebViewShellPageCycler"
apk_under_test = ":system_webview_shell_apk"
android_manifest = "page_cycler/AndroidManifest.xml"
java_files = [ "page_cycler/src/org/chromium/webview_shell/page_cycler/PageCyclerTest.java" ]
deps = [
"//base:base_java",
"//base:base_java_test_support",
"//content/public/android:content_java",
"//content/public/test/android:content_java_test_support",
"//testing/android/reporter:reporter_java",
"//third_party/android_support_test_runner:rules_java",
"//third_party/android_support_test_runner:runner_java",
"//third_party/junit",
]
enable_multidex = true
}
instrumentation_test_apk("system_webview_shell_layout_test_apk") {
apk_name = "SystemWebViewShellLayoutTest"
apk_under_test = ":system_webview_shell_apk"
android_manifest = "layout_tests/AndroidManifest.xml"
java_files = [
"layout_tests/src/org/chromium/webview_shell/test/WebViewLayoutTest.java",
"layout_tests/src/org/chromium/webview_shell/test/WebViewThreadTest.java",
]
deps = [
"//base:base_java",
"//base:base_java_test_support",
"//testing/android/reporter:reporter_java",
"//third_party/android_support_test_runner:rules_java",
"//third_party/android_support_test_runner:runner_java",
"//third_party/junit",
]
data = [
"test/data/",
"//third_party/WebKit/LayoutTests/platform/linux/virtual/stable/webexposed/",
"//third_party/WebKit/LayoutTests/platform/mac/virtual/stable/webexposed/",
"//third_party/WebKit/LayoutTests/platform/win/virtual/stable/webexposed/",
"//third_party/WebKit/LayoutTests/resources/global-interface-listing.js",
"//third_party/WebKit/LayoutTests/virtual/stable/webexposed/",
"//third_party/WebKit/LayoutTests/webexposed/global-interface-listing.html",
"//third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt",
]
additional_apks = [ system_webview_apk_target ]
}

View File

@ -0,0 +1,6 @@
# Copyright 2018 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.
system_webview_android_manifest =
"$root_gen_dir/android_webview/system_webview_apk/AndroidManifest.xml"

View File

@ -0,0 +1,35 @@
# 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("//tools/grit/repack.gni")
import("webview_repack_locales_list.gni")
# Wraps repack_locales(), setting the source_patterns and deps required for
# Chrome.
template("webview_repack_locales") {
repack_locales(target_name) {
forward_variables_from(invoker, "*")
if (!defined(deps)) {
deps = []
}
# Adding webview specific pak file? You should add it to
# webview_repack_locales_source_patterns, so it is also included in
# Monochrome.
source_patterns = [
"${root_gen_dir}/android_webview/components_strings_",
"${root_gen_dir}/content/app/strings/content_strings_",
"${root_gen_dir}/ui/strings/app_locale_settings_",
]
deps += [
"//android_webview:generate_components_strings",
"//content/app/strings",
"//ui/strings:app_locale_settings",
]
source_patterns += webview_repack_locales_source_patterns
deps += webview_repack_locales_deps
output_dir = "$root_out_dir/android_webview/locales"
}
}

View File

@ -0,0 +1,10 @@
# 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.
# For how to add pattern, see additional_source_patterns argument of
# _repack_one_locale in chrome/chrome_repack_locales.gni.
webview_repack_locales_source_patterns =
[ "${root_gen_dir}/android_webview/aw_strings_" ]
webview_repack_locales_deps = [ "//android_webview:generate_aw_strings" ]

67
apps/BUILD.gn Normal file
View File

@ -0,0 +1,67 @@
# Copyright 2014 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("//build/config/features.gni")
import("//build/config/ui.gni")
import("//extensions/buildflags/buildflags.gni")
assert(!is_android && !is_ios)
assert(enable_extensions,
"Cannot depend on extensions because enable_extensions=false.")
static_library("apps") {
sources = []
sources += [
"app_lifetime_monitor.cc",
"app_lifetime_monitor.h",
"app_lifetime_monitor_factory.cc",
"app_lifetime_monitor_factory.h",
"app_restore_service.cc",
"app_restore_service.h",
"app_restore_service_factory.cc",
"app_restore_service_factory.h",
"browser_context_keyed_service_factories.cc",
"browser_context_keyed_service_factories.h",
"launcher.cc",
"launcher.h",
"saved_files_service.cc",
"saved_files_service.h",
"saved_files_service_factory.cc",
"saved_files_service_factory.h",
"switches.cc",
"switches.h",
]
configs += [ "//build/config/compiler:wexit_time_destructors" ]
deps = [
"//components/keyed_service/content",
"//content/public/browser",
"//content/public/common",
"//extensions/browser",
"//extensions/common",
"//extensions/common/api",
]
if (is_chromeos) {
deps += [ "//components/user_manager" ]
}
# TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
}
static_library("test_support") {
testonly = true
sources = [
"test/app_window_waiter.cc",
"test/app_window_waiter.h",
]
public_deps = [
"//content/public/browser",
"//extensions/browser",
]
}

26
apps/ui/views/BUILD.gn Normal file
View File

@ -0,0 +1,26 @@
# Copyright 2017 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("//build/config/ui.gni")
import("//extensions/buildflags/buildflags.gni")
assert(enable_extensions)
source_set("views") {
sources = [
"app_window_frame_view.cc",
"app_window_frame_view.h",
]
deps = [
"//cc/paint",
"//chrome/app/theme:theme_resources",
"//extensions/browser",
"//extensions/common",
"//skia",
"//ui/gfx",
"//ui/strings",
"//ui/views",
]
}

2487
ash/BUILD.gn Normal file

File diff suppressed because it is too large Load Diff

237
ash/app_list/BUILD.gn Normal file
View File

@ -0,0 +1,237 @@
# Copyright 2014 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("//build/config/ui.gni")
import("//testing/test.gni")
assert(is_chromeos)
component("app_list") {
sources = [
"app_list_export.h",
"app_list_metrics.cc",
"app_list_metrics.h",
"app_list_util.cc",
"app_list_util.h",
"app_list_view_delegate.h",
"paged_view_structure.cc",
"paged_view_structure.h",
"pagination_controller.cc",
"pagination_controller.h",
"pagination_model.cc",
"pagination_model.h",
"pagination_model_observer.h",
"views/app_list_drag_and_drop_host.h",
"views/app_list_folder_view.cc",
"views/app_list_folder_view.h",
"views/app_list_item_view.cc",
"views/app_list_item_view.h",
"views/app_list_main_view.cc",
"views/app_list_main_view.h",
"views/app_list_menu_model_adapter.cc",
"views/app_list_menu_model_adapter.h",
"views/app_list_page.cc",
"views/app_list_page.h",
"views/app_list_view.cc",
"views/app_list_view.h",
"views/apps_container_view.cc",
"views/apps_container_view.h",
"views/apps_grid_view.cc",
"views/apps_grid_view.h",
"views/apps_grid_view_folder_delegate.h",
"views/contents_view.cc",
"views/contents_view.h",
"views/expand_arrow_view.cc",
"views/expand_arrow_view.h",
"views/folder_background_view.cc",
"views/folder_background_view.h",
"views/folder_header_view.cc",
"views/folder_header_view.h",
"views/folder_header_view_delegate.h",
"views/horizontal_page.cc",
"views/horizontal_page.h",
"views/horizontal_page_container.cc",
"views/horizontal_page_container.h",
"views/image_shadow_animator.cc",
"views/image_shadow_animator.h",
"views/indicator_chip_view.cc",
"views/indicator_chip_view.h",
"views/page_switcher.cc",
"views/page_switcher.h",
"views/pulsing_block_view.cc",
"views/pulsing_block_view.h",
"views/search_box_view.cc",
"views/search_box_view.h",
"views/search_result_actions_view.cc",
"views/search_result_actions_view.h",
"views/search_result_actions_view_delegate.h",
"views/search_result_answer_card_view.cc",
"views/search_result_answer_card_view.h",
"views/search_result_base_view.cc",
"views/search_result_base_view.h",
"views/search_result_container_view.cc",
"views/search_result_container_view.h",
"views/search_result_list_view.cc",
"views/search_result_list_view.h",
"views/search_result_page_view.cc",
"views/search_result_page_view.h",
"views/search_result_suggestion_chip_view.cc",
"views/search_result_suggestion_chip_view.h",
"views/search_result_tile_item_list_view.cc",
"views/search_result_tile_item_list_view.h",
"views/search_result_tile_item_view.cc",
"views/search_result_tile_item_view.h",
"views/search_result_view.cc",
"views/search_result_view.h",
"views/suggestion_chip_container_view.cc",
"views/suggestion_chip_container_view.h",
"views/suggestion_chip_view.cc",
"views/suggestion_chip_view.h",
"views/suggestions_container_view.cc",
"views/suggestions_container_view.h",
"views/top_icon_animation_view.cc",
"views/top_icon_animation_view.h",
]
defines = [ "APP_LIST_IMPLEMENTATION" ]
deps = [
"//ash/app_list/resources",
"//ash/app_menu",
"//ash/assistant/ui:constants",
"//ash/public/cpp/app_list/vector_icons",
"//ash/public/cpp/vector_icons",
"//base",
"//base:i18n",
"//base/third_party/dynamic_annotations",
"//cc/paint",
"//chromeos:chromeos",
"//components/keyed_service/core",
"//components/sync",
"//mojo/public/cpp/bindings",
"//services/ws/public/cpp",
"//services/ws/public/mojom",
"//services/ws/remote_view_host",
"//skia",
"//third_party/icu",
"//ui/accessibility",
"//ui/aura",
"//ui/base",
"//ui/base/ime",
"//ui/chromeos/search_box",
"//ui/compositor",
"//ui/display",
"//ui/events",
"//ui/gfx",
"//ui/gfx/geometry",
"//ui/keyboard/",
"//ui/resources",
"//ui/strings",
"//ui/views",
"//ui/views/mus/remote_view:remote_view_host",
"//ui/wm",
]
# TODO(hejq): Remove this once app_list is migrated. http://crbug.com/733662
public_deps = [
"//ash/app_list/model:app_list_model",
"//ash/app_list/model:search_model",
"//ash/public/cpp:cpp",
]
}
static_library("test_support") {
sources = [
"test/app_list_test_model.cc",
"test/app_list_test_model.h",
"test/app_list_test_view_delegate.cc",
"test/app_list_test_view_delegate.h",
"test/test_search_result.cc",
"test/test_search_result.h",
"views/test/apps_grid_view_test_api.cc",
"views/test/apps_grid_view_test_api.h",
]
deps = [
":app_list",
"//base",
"//ui/base:base",
"//ui/events",
"//ui/gfx",
"//ui/gfx/geometry",
]
}
executable("app_list_demo") {
testonly = true
sources = [
"demo/app_list_demo_views.cc",
]
deps = [
":app_list",
":test_support",
"//base",
"//build/win:default_exe_manifest",
"//content",
"//content/public/browser",
"//skia",
"//ui/base",
"//ui/events",
"//ui/resources",
"//ui/resources:ui_test_pak",
"//ui/views",
"//ui/views_content_client",
"//url",
]
}
test("app_list_unittests") {
sources = [
"folder_image_unittest.cc",
"pagination_model_unittest.cc",
"test/run_all_unittests.cc",
"views/app_list_main_view_unittest.cc",
"views/app_list_menu_model_adapter_unittest.cc",
"views/app_list_view_unittest.cc",
"views/apps_grid_view_unittest.cc",
"views/folder_header_view_unittest.cc",
"views/image_shadow_animator_unittest.cc",
"views/search_box_view_unittest.cc",
"views/search_result_answer_card_view_unittest.cc",
"views/search_result_list_view_unittest.cc",
"views/search_result_page_view_unittest.cc",
"views/search_result_tile_item_list_view_unittest.cc",
]
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
deps = [
":app_list",
":test_support",
"//ash/public/cpp/app_list/vector_icons",
"//base",
"//base/test:test_support",
"//mojo/core/embedder",
"//skia",
"//testing/gtest",
"//ui/accessibility",
"//ui/base",
"//ui/chromeos/search_box",
"//ui/compositor",
"//ui/events:test_support",
"//ui/gfx:test_support",
"//ui/gl:test_support",
"//ui/keyboard",
"//ui/resources",
"//ui/views",
"//ui/views:test_support",
]
data_deps = [
"//third_party/mesa_headers",
"//ui/resources:ui_test_pak_data",
]
}

View File

@ -0,0 +1,57 @@
# Copyright 2017 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.
component("app_list_model") {
sources = [
"app_list_folder_item.cc",
"app_list_folder_item.h",
"app_list_item.cc",
"app_list_item.h",
"app_list_item_list.cc",
"app_list_item_list.h",
"app_list_item_list_observer.h",
"app_list_item_observer.h",
"app_list_model.cc",
"app_list_model.h",
"app_list_model_observer.h",
"app_list_view_state.h",
"folder_image.cc",
"folder_image.h",
]
defines = [ "APP_LIST_MODEL_IMPLEMENTATION" ]
deps = [
"//ash/public/cpp:cpp",
"//base:i18n",
"//cc/paint",
"//components/sync",
"//skia",
"//third_party/icu",
"//ui/base",
"//ui/gfx",
]
}
component("search_model") {
sources = [
"search/search_box_model.cc",
"search/search_box_model.h",
"search/search_box_model_observer.h",
"search/search_model.cc",
"search/search_model.h",
"search/search_result.cc",
"search/search_result.h",
"search/search_result_observer.h",
]
defines = [ "APP_LIST_MODEL_IMPLEMENTATION" ]
deps = [
"//ash/public/cpp:cpp",
"//base:i18n",
"//ui/base",
"//ui/gfx",
]
}

View File

@ -0,0 +1,35 @@
# 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("//build/config/ui.gni")
import("//testing/test.gni")
assert(use_aura)
component("presenter") {
sources = [
"app_list_presenter_delegate.cc",
"app_list_presenter_delegate.h",
"app_list_presenter_export.h",
"app_list_presenter_impl.cc",
"app_list_presenter_impl.h",
]
defines = [ "APP_LIST_PRESENTER_IMPLEMENTATION" ]
public_deps = [
"//ash/app_list",
"//base",
"//mojo/public/cpp/bindings",
"//ui/aura",
"//ui/compositor",
"//ui/gfx/geometry",
"//ui/keyboard",
"//ui/views",
# Temporary dependency to fix compile flake in http://crbug.com/611898.
# TODO(tapted): Remove once http://crbug.com/612382 is fixed.
"//ui/accessibility:ax_enums_mojo",
]
}

View File

@ -0,0 +1,24 @@
# 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("//tools/grit/grit_rule.gni")
import("//tools/grit/repack.gni")
group("resources") {
public_deps = [
":resources_grd",
]
}
grit("resources_grd") {
source = "app_list_resources.grd"
outputs = [
"grit/app_list_resources.h",
"grit/app_list_resources_map.cc",
"grit/app_list_resources_map.h",
"app_list_resources_100_percent.pak",
"app_list_resources_200_percent.pak",
"app_list_resources_300_percent.pak",
]
}

36
ash/app_menu/BUILD.gn Normal file
View File

@ -0,0 +1,36 @@
# Copyright 2018 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("//build/config/ui.gni")
assert(is_chromeos)
component("app_menu") {
sources = [
"app_menu_model_adapter.cc",
"app_menu_model_adapter.h",
"notification_item_view.cc",
"notification_item_view.h",
"notification_menu_controller.cc",
"notification_menu_controller.h",
"notification_menu_header_view.cc",
"notification_menu_header_view.h",
"notification_menu_view.cc",
"notification_menu_view.h",
"notification_overflow_view.cc",
"notification_overflow_view.h",
]
defines = [ "APP_MENU_IMPLEMENTATION" ]
deps = [
"//ash/public/cpp",
"//base",
"//ui/gfx",
"//ui/gfx/geometry",
"//ui/message_center",
"//ui/strings:ui_strings_grit",
"//ui/views",
]
}

20
ash/assistant/ui/BUILD.gn Normal file
View File

@ -0,0 +1,20 @@
# Copyright 2018 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("//build/config/ui.gni")
assert(is_chromeos)
source_set("constants") {
sources = [
"assistant_ui_constants.cc",
"assistant_ui_constants.h",
]
deps = [
"//base",
"//skia",
"//ui/gfx",
]
}

View File

@ -0,0 +1,29 @@
# 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("//build/config/ui.gni")
source_set("autoclick") {
sources = [
"autoclick_controller_common.cc",
"autoclick_controller_common.h",
"autoclick_controller_common_delegate.h",
"autoclick_ring_handler.cc",
"autoclick_ring_handler.h",
]
deps = [
"//base",
"//cc/paint",
"//skia",
"//ui/aura",
"//ui/compositor",
"//ui/display",
"//ui/events",
"//ui/gfx",
"//ui/gfx/geometry",
"//ui/views",
"//ui/wm",
]
}

View File

@ -0,0 +1,23 @@
# Copyright 2018 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.
source_set("cursor") {
sources = [
"cursor_view.cc",
"cursor_view.h",
]
deps = [
"//ash/components/fast_ink",
"//base",
"//cc",
"//components/viz/common",
"//skia",
"//ui/aura",
"//ui/events",
"//ui/events/ozone:events_ozone",
"//ui/gfx",
"//ui/views:views",
]
}

View File

@ -0,0 +1,42 @@
# Copyright 2018 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.
source_set("fast_ink") {
sources = [
"fast_ink_pointer_controller.cc",
"fast_ink_pointer_controller.h",
"fast_ink_points.cc",
"fast_ink_points.h",
"fast_ink_view.cc",
"fast_ink_view.h",
]
deps = [
"//base",
"//cc",
"//components/viz/service",
"//gpu",
"//gpu/command_buffer/client:gles2_interface",
"//services/ws/public/mojom",
"//skia",
"//ui/aura",
"//ui/gfx",
"//ui/gfx/geometry",
"//ui/gl",
"//ui/views:views",
]
}
source_set("unit_tests") {
testonly = true
sources = [
"fast_ink_points_unittest.cc",
]
deps = [
":fast_ink",
"//testing/gtest",
"//ui/events:test_support",
]
}

View File

@ -0,0 +1,49 @@
# 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("//build/config/ui.gni")
import("//services/service_manager/public/cpp/service.gni")
import("//services/service_manager/public/service_manifest.gni")
import("//mojo/public/tools/bindings/mojom.gni")
import("//tools/grit/repack.gni")
source_set("lib") {
sources = [
"quick_launch_application.cc",
"quick_launch_application.h",
]
deps = [
"//base",
"//mash/public/mojom",
"//mojo/public/cpp/bindings",
"//services/catalog/public/mojom",
"//services/service_manager/public/cpp",
"//services/service_manager/public/mojom",
"//ui/views",
"//ui/views/mus:for_mojo_application",
"//url",
]
}
service("quick_launch_app") {
sources = [
"main.cc",
]
deps = [
":lib",
"//services/service_manager/public/cpp",
"//ui/views/mus:for_mojo_application",
]
data_deps = [
"//ui/views/mus:resources",
]
}
service_manifest("manifest") {
name = "quick_launch_app"
source = "manifest.json"
}

View File

@ -0,0 +1,17 @@
# 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("//mojo/public/tools/bindings/mojom.gni")
group("mojom") {
public_deps = [
":constants",
]
}
mojom("constants") {
sources = [
"constants.mojom",
]
}

View File

@ -0,0 +1,7 @@
// 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.
module quick_launch.mojom;
const string kServiceName = "quick_launch_app";

View File

@ -0,0 +1,16 @@
# Copyright 2018 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("//tools/grit/grit_rule.gni")
grit("resources") {
source = "ash_components_resources.grd"
outputs = [
"grit/ash_components_resources.h",
"grit/ash_components_resources_map.cc",
"grit/ash_components_resources_map.h",
"ash_components_resources_100_percent.pak",
"ash_components_resources_200_percent.pak",
]
}

View File

@ -0,0 +1,73 @@
# Copyright 2018 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("//services/service_manager/public/service_manifest.gni")
# KSV: Keyboard Shortcut Viewer
source_set("lib") {
sources = [
"keyboard_shortcut_item.cc",
"keyboard_shortcut_item.h",
"keyboard_shortcut_viewer_metadata.cc",
"keyboard_shortcut_viewer_metadata.h",
"ksv_export.h",
"last_window_closed_observer.cc",
"last_window_closed_observer.h",
"shortcut_viewer_application.cc",
"shortcut_viewer_application.h",
"views/bubble_view.cc",
"views/bubble_view.h",
"views/keyboard_shortcut_item_list_view.cc",
"views/keyboard_shortcut_item_list_view.h",
"views/keyboard_shortcut_item_view.cc",
"views/keyboard_shortcut_item_view.h",
"views/keyboard_shortcut_view.cc",
"views/keyboard_shortcut_view.h",
"views/ksv_search_box_view.cc",
"views/ksv_search_box_view.h",
]
defines = [ "KSV_IMPLEMENTATION" ]
deps = [
"//ash/components/shortcut_viewer/public/mojom",
"//ash/components/shortcut_viewer/vector_icons",
"//ash/components/strings",
"//ash/public/cpp",
"//ash/public/cpp/resources:ash_public_unscaled_resources",
"//cc/paint",
"//services/service_manager/public/cpp/",
"//ui/accessibility",
"//ui/aura",
"//ui/chromeos/events",
"//ui/chromeos/search_box",
"//ui/events:events_base",
"//ui/events/devices",
"//ui/events/ozone:events_ozone_layout",
"//ui/views",
"//ui/views/mus",
"//ui/views/mus:resources",
]
}
service_manifest("manifest") {
name = "shortcut_viewer_app"
source = "manifest.json"
}
source_set("unit_tests") {
testonly = true
sources = [
"views/keyboard_shortcut_view_unittest.cc",
]
deps = [
":lib",
"//ash:test_support_without_content",
"//base/test:test_support",
"//services/ws/public/cpp/input_devices:test_support",
"//testing/gtest",
"//ui/events:test_support",
"//ui/views",
]
}

View File

@ -0,0 +1,15 @@
# Copyright 2018 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")
mojom("mojom") {
sources = [
"shortcut_viewer.mojom",
]
public_deps = [
"//mojo/public/mojom/base",
]
}

View File

@ -0,0 +1,17 @@
// Copyright 2018 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.
module shortcut_viewer.mojom;
import "mojo/public/mojom/base/time.mojom";
const string kServiceName = "shortcut_viewer_app";
// Used to toggle the Keyboard Shortcut Viewer window.
interface ShortcutViewer {
// |user_gesture_time| is the time of the user gesture that caused the window
// to show. Used for metrics.
Toggle(mojo_base.mojom.TimeTicks user_gesture_time);
};

View File

@ -0,0 +1,40 @@
# Copyright 2018 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("//components/vector_icons/vector_icons.gni")
aggregate_vector_icons("ksv_vector_icons") {
icon_directory = "."
icons = [
"ksv_search_back.icon",
"ksv_search_bar.icon",
"ksv_search_close.icon",
"ksv_search_no_result.icon",
"ksv_separator_plus.icon",
"ksv_arrow_down.icon",
"ksv_arrow_left.icon",
"ksv_arrow_right.icon",
"ksv_arrow_up.icon",
"ksv_brightness_down.icon",
"ksv_brightness_up.icon",
"ksv_browser_back.icon",
"ksv_browser_forward.icon",
"ksv_fullscreen.icon",
"ksv_mute.icon",
"ksv_overview.icon",
"ksv_reload.icon",
"ksv_volume_down.icon",
"ksv_volume_up.icon",
]
}
source_set("vector_icons") {
sources = get_target_outputs(":ksv_vector_icons")
deps = [
":ksv_vector_icons",
"//skia",
]
}

View File

@ -0,0 +1,66 @@
# Copyright 2018 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("//tools/grit/grit_rule.gni")
grit("strings") {
source = "../ash_components_strings.grd"
outputs = [
"grit/ash_components_strings.h",
"ash_components_strings_am.pak",
"ash_components_strings_ar.pak",
"ash_components_strings_bg.pak",
"ash_components_strings_bn.pak",
"ash_components_strings_ca.pak",
"ash_components_strings_cs.pak",
"ash_components_strings_da.pak",
"ash_components_strings_de.pak",
"ash_components_strings_el.pak",
"ash_components_strings_en-GB.pak",
"ash_components_strings_en-US.pak",
"ash_components_strings_es-419.pak",
"ash_components_strings_es.pak",
"ash_components_strings_et.pak",
"ash_components_strings_fake-bidi.pak",
"ash_components_strings_fa.pak",
"ash_components_strings_fil.pak",
"ash_components_strings_fi.pak",
"ash_components_strings_fr.pak",
"ash_components_strings_gu.pak",
"ash_components_strings_he.pak",
"ash_components_strings_hi.pak",
"ash_components_strings_hr.pak",
"ash_components_strings_hu.pak",
"ash_components_strings_id.pak",
"ash_components_strings_it.pak",
"ash_components_strings_ja.pak",
"ash_components_strings_kn.pak",
"ash_components_strings_ko.pak",
"ash_components_strings_lt.pak",
"ash_components_strings_lv.pak",
"ash_components_strings_ml.pak",
"ash_components_strings_mr.pak",
"ash_components_strings_ms.pak",
"ash_components_strings_nb.pak",
"ash_components_strings_nl.pak",
"ash_components_strings_pl.pak",
"ash_components_strings_pt-BR.pak",
"ash_components_strings_pt-PT.pak",
"ash_components_strings_ro.pak",
"ash_components_strings_ru.pak",
"ash_components_strings_sk.pak",
"ash_components_strings_sl.pak",
"ash_components_strings_sr.pak",
"ash_components_strings_sv.pak",
"ash_components_strings_sw.pak",
"ash_components_strings_ta.pak",
"ash_components_strings_te.pak",
"ash_components_strings_th.pak",
"ash_components_strings_tr.pak",
"ash_components_strings_uk.pak",
"ash_components_strings_vi.pak",
"ash_components_strings_zh-CN.pak",
"ash_components_strings_zh-TW.pak",
]
}

View File

@ -0,0 +1,51 @@
# 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("//services/service_manager/public/service_manifest.gni")
source_set("lib") {
sources = [
"tap_renderer.cc",
"tap_renderer.h",
"tap_visualizer_app.cc",
"tap_visualizer_app.h",
]
deps = [
"//ash/public/cpp",
"//base",
"//cc/paint",
"//services/service_manager/public/cpp",
"//services/ws/public/cpp",
"//services/ws/public/mojom",
"//skia",
"//ui/compositor",
"//ui/events",
"//ui/gfx",
"//ui/gfx/geometry",
"//ui/views",
"//ui/views/mus:for_mojo_application",
"//ui/views/mus:resources",
]
}
service_manifest("manifest") {
name = "tap_visualizer_app"
source = "manifest.json"
}
source_set("unit_tests") {
testonly = true
sources = [
"tap_visualizer_app_unittest.cc",
]
deps = [
":lib",
"//testing/gtest",
"//ui/aura:test_support",
"//ui/views",
"//ui/views:test_support",
"//ui/views/mus",
]
}

View File

@ -0,0 +1,17 @@
# Copyright 2018 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("mojom") {
public_deps = [
":constants",
]
}
mojom("constants") {
sources = [
"constants.mojom",
]
}

View File

@ -0,0 +1,7 @@
// Copyright 2018 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.
module tap_visualizer.mojom;
const string kServiceName = "tap_visualizer_app";

22
ash/keyboard/arc/BUILD.gn Normal file
View File

@ -0,0 +1,22 @@
# Copyright 2018 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("//build/config/ui.gni")
static_library("arc") {
sources = [
"arc_input_method_surface_manager.cc",
"arc_input_method_surface_manager.h",
"arc_virtual_keyboard_container_layout_manager.cc",
"arc_virtual_keyboard_container_layout_manager.h",
]
deps = [
"//ash/public/cpp",
"//base",
"//components/exo",
"//ui/aura",
"//ui/gfx/geometry",
]
}

View File

@ -0,0 +1,17 @@
# Copyright 2018 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("//tools/grit/grit_rule.gni")
grit("resources") {
source = "login_resources.grd"
outputs = [
"grit/login_resources.h",
"grit/login_resources_map.cc",
"grit/login_resources_map.h",
"login_resources_100_percent.pak",
"login_resources_200_percent.pak",
"login_resources_300_percent.pak",
]
}

163
ash/public/cpp/BUILD.gn Normal file
View File

@ -0,0 +1,163 @@
# 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("//mojo/public/tools/bindings/mojom.gni")
# C++ headers and sources that can be used outside ash.
component("cpp") {
sources = [
"accelerators.cc",
"accelerators.h",
"app_list/answer_card_contents_registry.cc",
"app_list/answer_card_contents_registry.h",
"app_list/app_list_config.cc",
"app_list/app_list_config.h",
"app_list/app_list_constants.cc",
"app_list/app_list_constants.h",
"app_list/app_list_features.cc",
"app_list/app_list_features.h",
"app_list/app_list_switches.cc",
"app_list/app_list_switches.h",
"app_list/app_list_types.cc",
"app_list/app_list_types.h",
"app_list/internal_app_id_constants.h",
"app_list/term_break_iterator.cc",
"app_list/term_break_iterator.h",
"app_list/tokenized_string.cc",
"app_list/tokenized_string.h",
"app_list/tokenized_string_char_iterator.cc",
"app_list/tokenized_string_char_iterator.h",
"app_list/tokenized_string_match.cc",
"app_list/tokenized_string_match.h",
"app_menu_constants.h",
"app_types.h",
"ash_constants.h",
"ash_features.cc",
"ash_features.h",
"ash_layout_constants.cc",
"ash_layout_constants.h",
"ash_pref_names.cc",
"ash_pref_names.h",
"ash_public_export.h",
"ash_switches.cc",
"ash_switches.h",
"ash_typography.cc",
"ash_typography.h",
"ash_view_ids.h",
"config.h",
"default_scale_factor_retriever.cc",
"default_scale_factor_retriever.h",
"frame_utils.cc",
"frame_utils.h",
"immersive/immersive_context.cc",
"immersive/immersive_context.h",
"immersive/immersive_focus_watcher.h",
"immersive/immersive_fullscreen_controller.cc",
"immersive/immersive_fullscreen_controller.h",
"immersive/immersive_fullscreen_controller_delegate.h",
"immersive/immersive_gesture_handler.h",
"immersive/immersive_handler_factory.cc",
"immersive/immersive_handler_factory.h",
"immersive/immersive_revealed_lock.cc",
"immersive/immersive_revealed_lock.h",
"login_constants.h",
"menu_utils.cc",
"menu_utils.h",
"mus_property_mirror_ash.cc",
"mus_property_mirror_ash.h",
"network_icon_image_source.cc",
"network_icon_image_source.h",
"power_utils.cc",
"power_utils.h",
"remote_shelf_item_delegate.cc",
"remote_shelf_item_delegate.h",
"scale_utility.cc",
"scale_utility.h",
"session_types.h",
"shelf_item.cc",
"shelf_item.h",
"shelf_item_delegate.cc",
"shelf_item_delegate.h",
"shelf_model.cc",
"shelf_model.h",
"shelf_model_observer.h",
"shelf_prefs.cc",
"shelf_prefs.h",
"shelf_types.cc",
"shelf_types.h",
"shell_window_ids.cc",
"shell_window_ids.h",
"stylus_utils.cc",
"stylus_utils.h",
"wallpaper_types.h",
"window_pin_type.cc",
"window_pin_type.h",
"window_properties.cc",
"window_properties.h",
"window_state_type.cc",
"window_state_type.h",
"window_style.cc",
"window_style.h",
]
defines = [ "ASH_PUBLIC_IMPLEMENTATION" ]
deps = [
"//chromeos:power_manager_proto",
"//components/prefs",
"//services/ws/public/mojom",
"//skia/public/interfaces",
"//ui/aura",
"//ui/chromeos/strings",
"//ui/display",
"//ui/events/devices",
"//ui/views",
"//ui/views/mus",
"//ui/wm",
]
public_deps = [
"//ash/public/interfaces:interfaces_internal",
"//base",
"//ui/gfx",
]
allow_circular_includes_from =
[ "//ash/public/interfaces:interfaces_internal" ]
output_name = "ash_public_cpp"
}
# Using a test service because the traits need to pass handles around. Revisit
# this after Deserialize(Serialize()) API works with handles.
mojom("test_interfaces") {
visibility = [ ":unit_tests" ]
sources = [
"shelf_struct_traits_test_service.mojom",
]
public_deps = [
"//ash/public/interfaces:interfaces_internal",
]
}
source_set("unit_tests") {
testonly = true
sources = [
"default_scale_factor_retriever_unittest.cc",
"menu_utils_unittest.cc",
"power_utils_unittest.cc",
"shelf_model_unittest.cc",
"shelf_struct_mojom_traits_unittest.cc",
]
deps = [
":cpp",
":test_interfaces",
"//base",
"//testing/gtest",
"//ui/gfx:test_support",
]
}

View File

@ -0,0 +1,34 @@
# Copyright 2017 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("//components/vector_icons/vector_icons.gni")
aggregate_vector_icons("app_list_vector_icons") {
icon_directory = "."
icons = [
"ic_arrow_up.icon",
"ic_badge_instant.icon",
"ic_badge_play.icon",
"ic_badge_rating.icon",
"ic_bookmark.icon",
"ic_domain.icon",
"ic_equal.icon",
"ic_google_black.icon",
"ic_google_color.icon",
"ic_history.icon",
"ic_mic_black.icon",
"ic_search.icon",
"ic_search_engine_not_google.icon",
]
}
source_set("vector_icons") {
sources = get_target_outputs(":app_list_vector_icons")
deps = [
":app_list_vector_icons",
"//skia",
]
}

View File

@ -0,0 +1,13 @@
# Copyright 2018 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("//tools/grit/grit_rule.gni")
grit("ash_public_unscaled_resources") {
source = "ash_public_unscaled_resources.grd"
outputs = [
"grit/ash_public_unscaled_resources.h",
"ash_public_unscaled_resources.pak",
]
}

View File

@ -0,0 +1,13 @@
// Copyright 2017 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.
module ash.mojom;
import "ash/public/interfaces/shelf.mojom";
// A test echo interface for traits.
interface ShelfStructTraitsTestService {
[Sync]
EchoShelfItem(ShelfItem in) => (ShelfItem out);
};

View File

@ -0,0 +1,54 @@
# Copyright 2018 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("//components/vector_icons/vector_icons.gni")
# The icons in this target, unlike those in //ash/resources/vector_icons, are ok to use from outside of ash/.
aggregate_vector_icons("ash_public_vector_icons") {
icon_directory = "."
icons = [
"assistant.icon",
"notification_assistant.icon",
"notification_captive_portal.icon",
"notification_cellular_alert.icon",
"notification_download.icon",
"notification_end_of_support.icon",
"notification_family_link.icon",
"notification_google.icon",
"notification_image.icon",
"notification_installed.icon",
"notification_linux.icon",
"notification_mobile_data.icon",
"notification_mobile_data_off.icon",
"notification_multi_device_setup.icon",
"notification_play_prism.icon",
"notification_printing.icon",
"notification_printing_done.icon",
"notification_printing_warning.icon",
"notification_settings.icon",
"notification_storage_full.icon",
"notification_supervised_user.icon",
"notification_vpn.icon",
"notification_warning.icon",
"notification_wifi_off.icon",
"window_control_close.icon",
"window_control_left_snapped.icon",
"window_control_maximize.icon",
"window_control_minimize.icon",
"window_control_restore.icon",
"window_control_right_snapped.icon",
]
}
source_set("vector_icons") {
sources = get_target_outputs(":ash_public_vector_icons")
deps = [
":ash_public_vector_icons",
"//base",
"//skia",
"//ui/gfx",
]
}

View File

@ -0,0 +1,108 @@
# 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")
# Depend upon //ash/public/cpp, which has a public_dep on this. The two targets
# must be bundled together as the typemaps depend upon //ash/public/cpp,
# and //ash/public/cpp needs to depend on this for generated code (such as
# enums and constants).
mojom("interfaces_internal") {
visibility = [ "//ash/public/cpp:*" ]
sources = [
"accelerator_controller.mojom",
"accessibility_controller.mojom",
"accessibility_focus_ring_controller.mojom",
"app_list.mojom",
"ash_display_controller.mojom",
"ash_message_center_controller.mojom",
"assistant_controller.mojom",
"assistant_image_downloader.mojom",
"assistant_setup.mojom",
"assistant_volume_control.mojom",
"cast_config.mojom",
"client_image_registry.mojom",
"constants.mojom",
"cros_display_config.mojom",
"display_output_protection.mojom",
"docked_magnifier_controller.mojom",
"event_properties.mojom",
"event_rewriter_controller.mojom",
"first_run_helper.mojom",
"highlighter_controller.mojom",
"ime_controller.mojom",
"ime_info.mojom",
"kiosk_app_info.mojom",
"locale.mojom",
"login_screen.mojom",
"login_user_info.mojom",
"media.mojom",
"menu.mojom",
"new_window.mojom",
"night_light_controller.mojom",
"note_taking_controller.mojom",
"pref_connector.mojom",
"process_creation_time_recorder.mojom",
"session_controller.mojom",
"shelf.mojom",
"shutdown.mojom",
"split_view.mojom",
"system_tray.mojom",
"tablet_mode.mojom",
"tray_action.mojom",
"update.mojom",
"user_info.mojom",
"voice_interaction_controller.mojom",
"volume.mojom",
"vpn_list.mojom",
"wallpaper.mojom",
"web_contents_manager.mojom",
"window_actions.mojom",
"window_pin_type.mojom",
"window_properties.mojom",
"window_state_type.mojom",
"window_style.mojom",
]
public_deps = [
"//chromeos/components/proximity_auth/public/interfaces",
"//chromeos/services/assistant/public/mojom",
"//components/account_id/interfaces",
"//components/arc/common:notifications",
"//components/sync/mojo:interfaces",
"//mojo/public/mojom/base",
"//services/preferences/public/mojom",
"//skia/public/interfaces",
"//ui/accessibility:ax_enums_mojo",
"//ui/base/ime/chromeos/public/interfaces",
"//ui/display/mojo:interfaces",
"//ui/events/mojo:interfaces",
"//ui/gfx/geometry/mojo",
"//ui/gfx/image/mojo:interfaces",
"//ui/gfx/range/mojo",
"//ui/message_center/public/mojo:mojo",
"//url/mojom:url_mojom_gurl",
]
component_output_prefix = "ash_public_interfaces_internal"
export_class_attribute = "ASH_PUBLIC_EXPORT"
export_define = "ASH_PUBLIC_IMPLEMENTATION=1"
export_header = "ash/public/cpp/ash_public_export.h"
}
mojom("test_interfaces") {
testonly = true
sources = [
"shelf_test_api.mojom",
"shell_test_api.mojom",
"status_area_widget_test_api.mojom",
"system_tray_test_api.mojom",
"time_to_first_present_recorder_test_api.mojom",
]
deps = [
"//mojo/public/mojom/base",
"//ui/gfx/geometry/mojo",
]
}

View File

@ -0,0 +1,16 @@
// 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.
module ash.mojom;
import "ash/public/interfaces/volume.mojom";
// Implemented by ash to delegate parts of keyboard accelerator handling back
// to chrome.
interface AcceleratorController {
// Sets the volume controller interface. This lives in chrome because chrome
// owns the D-Bus CrasAudioHandler implementation. Also the accessibility
// manager in chrome needs to know about volume changes.
SetVolumeController(VolumeController controller);
};

View File

@ -0,0 +1,146 @@
// Copyright 2017 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.
module ash.mojom;
import "mojo/public/mojom/base/time.mojom";
import "ui/accessibility/ax_enums.mojom";
import "ui/gfx/geometry/mojo/geometry.mojom";
// Alert sent to the accessibility api.
enum AccessibilityAlert {
// Default value, indicates no accessibility alert.
NONE,
// When caps lock is turned on.
CAPS_ON,
// When caps lock is turned off.
CAPS_OFF,
// When screen is turned on by tablet power button.
SCREEN_ON,
// When screen is turned off by tablet power button.
SCREEN_OFF,
// When window moved to another display by accelerators.
WINDOW_MOVED_TO_ANOTHER_DISPLAY,
// When the user attempts a keyboard command that requires a window to work,
// and none is available.
WINDOW_NEEDED,
// When the user enters window overview mode.
WINDOW_OVERVIEW_MODE_ENTERED
};
enum AccessibilityPanelState {
// Window bounds are set explicitly.
BOUNDED,
// Width of panel matches screen width, y_coord and height are set by bounds.
FULL_WIDTH,
// Panel occupies the full screen. Bounds are ignored.
FULLSCREEN
};
enum SelectToSpeakState {
// Select to Speak is not actively selecting text or speaking.
kSelectToSpeakStateInactive,
// Select to Speak is being used to actively select a new region. Note that
// it might also be speaking, but the selecting state takes precedence.
kSelectToSpeakStateSelecting,
// Select to Speak is currently speaking.
kSelectToSpeakStateSpeaking,
};
// Interface for ash client (e.g. Chrome) to control and query accessibility
// features.
interface AccessibilityController {
// Sets the client interface.
SetClient(AccessibilityControllerClient client);
// Starts or stops darkening the screen (e.g. to allow chrome a11y extensions
// to darken the screen).
SetDarkenScreen(bool darken);
// Called when braille display state is changed.
BrailleDisplayStateChanged(bool connected);
// Sets the focus highlight rect using |bounds_in_screen|. Called when focus
// changed in page and a11y focus highlight feature is enabled.
SetFocusHighlightRect(gfx.mojom.Rect bounds_in_screen);
// Sets the text input caret bounds used to draw the caret highlight effect.
// For effciency, only sent when the caret highlight feature is enabled.
// Setting off-screen or empty bounds suppresses the highlight.
SetCaretBounds(gfx.mojom.Rect bounds_in_screen);
// Sets whether the accessibility panel should always be visible, regardless
// of whether the window is fullscreen.
SetAccessibilityPanelAlwaysVisible(bool always_visible);
// Sets the bounds for the accessibility panel. Overrides current
// configuration (i.e. fullscreen, full-width).
SetAccessibilityPanelBounds(gfx.mojom.Rect bounds,
AccessibilityPanelState state);
// Sets the current Select-to-Speak state. This should be used by the Select-
// to-Speak extension to inform ash of its updated state.
SetSelectToSpeakState(SelectToSpeakState state);
};
// Interface for ash to request accessibility service from its client (e.g.
// Chrome).
interface AccessibilityControllerClient {
// Triggers an accessibility alert to give the user feedback.
TriggerAccessibilityAlert(AccessibilityAlert alert);
// Plays an earcon. Earcons are brief and distinctive sounds that indicate
// that their mapped event has occurred. The |sound_key| enums can be found in
// chromeos/audio/chromeos_sounds.h. This method exists because the browser
// owns all media playback.
PlayEarcon(int32 sound_key);
// Initiates play of shutdown sound and returns sound duration. This method
// exists because the browser owns all media playback.
PlayShutdownSound() => (mojo_base.mojom.TimeDelta sound_duration);
// Forwards an accessibility gesture from the touch exploration controller to
// ChromeVox.
HandleAccessibilityGesture(ax.mojom.Gesture gesture);
// Starts or stops dictation (type what you speak).
// Returns the new dictation state after the toggle.
ToggleDictation() => (bool dictation_on);
// Cancels all current and queued speech immediately.
SilenceSpokenFeedback();
// Called when we first detect two fingers are held down, which can be used to
// toggle spoken feedback on some touch-only devices.
OnTwoFingerTouchStart();
// Called when the user is no longer holding down two fingers (including
// releasing one, holding down three, or moving them).
OnTwoFingerTouchStop();
// Whether or not to enable toggling spoken feedback via holding down two
// fingers on the screen.
ShouldToggleSpokenFeedbackViaTouch() => (bool should_toggle);
// Plays tick sound indicating spoken feedback will be toggled after
// countdown.
PlaySpokenFeedbackToggleCountdown(int32 tick_count);
// Requests the Select-to-Speak extension to change its state. This lets users
// do the same things in tablet mode as with a keyboard. Specifically, if
// Select-to-Speak is not speaking, move to capturing state; if
// Select-to-Speak is speaking, cancel speaking and move to inactive state.
RequestSelectToSpeakStateChange();
};

View File

@ -0,0 +1,41 @@
// Copyright 2018 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.
module ash.mojom;
import "ui/gfx/geometry/mojo/geometry.mojom";
enum FocusRingBehavior { FADE_OUT_FOCUS_RING, PERSIST_FOCUS_RING };
// Interface for ash client (e.g. Chrome) to control and query accessibility
// focus ring features.
interface AccessibilityFocusRingController {
// Sets the focus ring color for the given caller.
SetFocusRingColor(uint32 skcolor, string caller_id);
// Resets the focus ring color back to the default for the given caller.
ResetFocusRingColor(string caller_id);
// Draws a focus ring around the given set of rects in screen coordinates. Use
// |focus_ring_behavior| to specify whether the focus ring should persist or
// fade out for the given caller.
SetFocusRing(array<gfx.mojom.Rect> rects_in_screen,
FocusRingBehavior focus_ring_behavior,
string caller_id);
// Hides focus ring on screen for the given caller.
HideFocusRing(string caller_id);
// Draws a highlight at the given rects in screen coordinates. Rects may be
// overlapping and will be merged into one layer. This looks similar to
// selecting a region with the cursor, except it is drawn in the foreground
// rather than behind a text layer.
// TODO(katie): Add |caller_id| to highlights as well if other Accessibility
// tools or extensions want to use this API.
SetHighlights(array<gfx.mojom.Rect> rects_in_screen, uint32 skcolor);
// Hides highlight on screen.
// TODO(katie): Add |caller_id| to highlights as well.
HideHighlights();
};

View File

@ -0,0 +1,369 @@
// Copyright 2018 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.
module ash.mojom;
import "ash/public/interfaces/menu.mojom";
import "components/sync/mojo/syncer.mojom";
import "mojo/public/mojom/base/string16.mojom";
import "mojo/public/mojom/base/unguessable_token.mojom";
import "ui/gfx/geometry/mojo/geometry.mojom";
import "ui/gfx/image/mojo/image.mojom";
import "ui/gfx/range/mojo/range.mojom";
// A structure holding the common information which is sent between ash and,
// chrome representing an app list item.
// This structure should be kept as small as possible so that minimum data
// is sent via mojo calls when an item is moved or reparented.
struct AppListItemMetadata {
string id; // The id of the app list item.
string name; // The corresponding app or folder's name of the item.
string short_name; // The corresponding app's short name of the item. It's
// empty if the app doesn't have one or it's a folder.
string folder_id; // The id of the item's folder.
syncer.mojom.StringOrdinal position; // The position of the item.
bool is_folder; // Whether this item is a folder.
gfx.mojom.ImageSkia? icon; // The icon of this item.
bool is_page_break; // Whether this item is a "page break" item.
};
// A structure holding the common information which is sent from chrome to ash,
// representing a search result.
// This structure should be kept as small as possible so that ash can get and
// render search results as early as possible.
struct SearchResultMetadata {
string id; // The id of the result.
mojo_base.mojom.String16 title; // The title of the result, e.g. an app's
// name, an autocomplete query, etc.
mojo_base.mojom.String16 details; // A detail string of this result.
array<SearchResultTag> title_tags; // How the title matches the query. See
// the SearchResultTag section for
// more details.
array<SearchResultTag> details_tags; // How the details match the query. See
// the SearchResultTag section for
// more details.
array<SearchResultAction> actions; // Actions that can be performed on this
// result. See the SearchResultAction
// section for more details.
float rating = -1.0; // The average rating score of the app
// corresponding to this result, ranged from 0 to
// 5. It's negative if there's no rating for the
// result.
mojo_base.mojom.String16 formatted_price; // A formatted price string, e.g.
// "$7.09", "HK$3.94", etc.
SearchResultType result_type; // The type of this result.
SearchResultDisplayType display_type = kList;
// How this result is displayed.
double display_score; // A score to determine the result display order.
bool is_omnibox_search; // Whether this result is searched from Omnibox.
bool is_installing; // Whether this result is installing.
mojo_base.mojom.UnguessableToken? answer_card_contents_token;
// A token used to render answer card, which is
// empty before initialized. It's illegal to pass
// an empty UnguessableToken across processes. So
// we use a null value when it's empty here.
gfx.mojom.Size? answer_card_size; // Preferred size of answer card. It is
// unset for non-answer-card results. For
// answer card results, it is set when
// the answer card WebContents finishes
// loading and its renderer notifies it
// about a new contents size.
gfx.mojom.ImageSkia? icon; // The icon of this result.
gfx.mojom.ImageSkia? badge_icon; // The badge icon of this result that
// indicates its type, e.g. installable from
// PlayStore, installable from WebStore,
// etc.
};
// All possible states of the app list.
enum AppListState {
kStateApps = 0,
kStateSearchResults,
kStateStart,
};
// The status of the app list model.
enum AppListModelStatus {
kStatusNormal,
kStatusSyncing, // Syncing apps or installing synced apps.
};
// How the result should be displayed. Do not change the order of these as
// they are used for metrics.
enum SearchResultDisplayType {
kNone = 0,
kList,
kTile,
kRecommendation,
kCard,
// Add new values here.
};
// Type of the search result, which is set in Chrome.
enum SearchResultType {
kInstalledApp, // Installed apps.
kPlayStoreApp, // Installable apps from PlayStore.
kInstantApp, // Instant apps.
kInternalApp, // Chrome OS apps.
kWebStoreApp, // Installable apps from WebStore.
kWebStoreSearch, // A search query in WebStore.
kOmnibox, // Results from Omninbox.
kLauncher, // Results from launcher search (currently only from Files).
kAnswerCard, // WebContents based answer card.
// Add new values here.
};
// A tagged range in search result text.
struct SearchResultTag {
// Similar to ACMatchClassification::Style, the style values are not
// mutually exclusive.
int16 styles;
gfx.mojom.Range range;
};
// Data representing an action that can be performed on a search result.
// An action could be represented as an icon set or as a blue button with
// a label. Icon set is chosen if label text is empty. Otherwise, a blue
// button with the label text will be used.
struct SearchResultActionImageLabel {
gfx.mojom.ImageSkia base_image;
gfx.mojom.ImageSkia hover_image;
gfx.mojom.ImageSkia pressed_image;
};
union SearchResultActionLabel {
SearchResultActionImageLabel image_label;
mojo_base.mojom.String16 text_label;
};
struct SearchResultAction {
mojo_base.mojom.String16 tooltip_text;
SearchResultActionLabel label;
};
// The Chrome app list (aka Launcher), is the place where user can find and
// organize all installed apps, or search for various types of information.
//
// For apps:
// The app list displays apps synced across devices based on a user account, in
// an order that can be modified by the user. It supports up-to-3-layer app
// organization, the root app list, folders, and apps:
// - Each app can stay in the root app list or a folder.
// - Each folder holds more than one apps, which means it'll automatically get
// removed when there's only one app left in it.
// - The OEM folder is a special folder where we cannot move items to/from it.
// And we cannot rename it.
// - Other folders are renamable.
// - Folders cannot hold folders.
// - Different items/folders never have a same GUID.
// - Every item/folder has a same GUID on different devices.
//
// For searching:
// The app list supports various kinds of searching (e.g. apps, onmibox, etc).
// And search results can be displayed in different formats (e.g. tiles, cards).
// - Result ids are url like string, e.g.
// "chrome-extension://mgndgikekgjfcpckkfioiadnlibdjbkf/",
// "play://hhbckbkcbnemggclionhhgaceohjfdkl", etc.
// - Different search results never have a same id.
// - Every search result has a same id on different devices.
// - Every search result can have a list of actions (e.g. install), see
// app_list::SearchResult::Action.
//
// Users can long press on any app list item or search result to show a context
// menu. A context menu has a list of commands (e.g. open, uninstall, etc.).
// - Different items/results may have different command lists.
// - Each item/result usually has a same command list, but not always. Consider
// when we pin an app to the shelf and when we unpin it, the context menu
// looks different.
// - Inside each command list, each command has its own unique command id.
// - A same command in different command lists has a unique command id, see
// app_list::AppContextMenu::CommandId.
// The Chrome app list has its UI running in Ash, and everything else running in
// Chrome (e.g. syncing, user profile, etc). This controller is implemented in
// Ash to handle calls from Chrome. These include:
// - When app list data changes in Chrome, it should notifies the UI models and
// views in Ash to get updated. This can happen while syncing, searching, etc.
// - When Chrome needs real-time UI information from Ash. This can happen while
// calculating recommended search results based on the app list item order.
// - When app list states in Chrome change that require UI's response. This can
// happen while installing/uninstalling apps and the app list gets toggled.
interface AppListController {
// Sets a client to handle calls from Ash.
SetClient(AppListClient client);
//////////////////////////////////////////////////////////////////////////////
// Interfaces that come from AppListModelUpdater:
// The following interfaces are called to update the app list model in Ash,
// including both the app list item model, search result model and search box
// model.
// Adds an item to AppListModel.
AddItem(AppListItemMetadata app_item);
// Adds an item into a certain folder in AppListModel.
AddItemToFolder(AppListItemMetadata app_item, string folder_id);
// Removes an item by its id from AppListModel.
RemoveItem(string id);
// Removes an item by its id, and also cleans up if its parent folder has a
// single child left.
RemoveUninstalledItem(string id);
// Moves the item with |id| to the folder with |folder_id|.
MoveItemToFolder(string id, string folder_id);
// Tells Ash what the current status of AppListModel should be,
// e.g. the model is under synchronization or in normal status.
SetStatus(AppListModelStatus status);
// Tells Ash what the current state of the app list should be,
// e.g. the user is searching for something, or showing apps, etc.
SetState(AppListState state);
// Highlights the given item in the app list. If not present and it is later
// added, the item will be highlighted after being added.
HighlightItemInstalledFromUI(string id);
// Sets whether the search engine is Google or not.
SetSearchEngineIsGoogle(bool is_google);
// Sets the text for screen readers on the search box, and updates the
// accessible names.
SetSearchTabletAndClamshellAccessibleName(
mojo_base.mojom.String16 tablet_accessible_name,
mojo_base.mojom.String16 clamshell_accessible_name);
// Sets the hint text to display when there is in input.
SetSearchHintText(mojo_base.mojom.String16 hint_text);
// Sets the text for the search box's Textfield and the voice search flag.
UpdateSearchBox(mojo_base.mojom.String16 text, bool initiated_by_user);
// Publishes search results to Ash to render them.
PublishSearchResults(array<SearchResultMetadata> results);
// Update the whole model, usually when profile changes happen in Chrome.
SetModelData(array<AppListItemMetadata> apps,
bool is_search_engine_google);
//////////////////////////////////////////////////////////////////////////////
// Interfaces only used by ChromeAppListItem:
// These interfaces are called when an item's data is updated in Chrome.
// Updates an item's metadata (e.g. name, position, etc).
SetItemMetadata(string id, AppListItemMetadata metadata);
// Updates an item's icon.
SetItemIcon(string id, gfx.mojom.ImageSkia? icon);
// Updates whether an item is installing.
SetItemIsInstalling(string id, bool is_installing);
// Updates the downloaded percentage of an item.
SetItemPercentDownloaded(string id, int32 percent_downloaded);
//////////////////////////////////////////////////////////////////////////////
// Interfaces for item querying:
// Returns a map from each item's id to its shown index in the app list.
GetIdToAppListIndexMap() => (map<string, uint16> indices);
//////////////////////////////////////////////////////////////////////////////
// Interfaces for AppListSyncableService:
// These interfaces are called while dealing with the OEM folder in the
// AppListSyncableService in Chrome.
// Finds the OEM folder or creates one if it doesn't exist.
// |oem_folder_name|: the expected name of the OEM folder while creating.
// |preferred_oem_position|: the preferred position of the OEM folder while
// creating; if it's invalid then the final position
// is determined in Ash.
// |oem_folder|: the meta data of the existing/created OEM folder.
FindOrCreateOemFolder(
string oem_folder_name,
syncer.mojom.StringOrdinal preferred_oem_position)
=> (AppListItemMetadata oem_folder);
// Resolves the position of the OEM folder.
// |preferred_oem_position|: the preferred position of the OEM folder; if it's
// invalid then the final position is determined in
// Ash.
// |oem_folder|: the meta data of the OEM folder, or null if it doesn't exist.
ResolveOemFolderPosition(
syncer.mojom.StringOrdinal preferred_oem_position)
=> (AppListItemMetadata? oem_folder);
//////////////////////////////////////////////////////////////////////////////
// Interfaces for ChromeSearchReult:
SetSearchResultMetadata(SearchResultMetadata metadata);
SetSearchResultIsInstalling(string result_id, bool is_installing);
SetSearchResultPercentDownloaded(string result_id, int32 percent_downloaded);
NotifySearchResultItemInstalled(string result_id);
//////////////////////////////////////////////////////////////////////////////
// Interfaces for views:
// Dismisses the app list.
DismissAppList();
// Returns bounds of a rectangle to show an AppInfo dialog.
GetAppInfoDialogBounds() => (gfx.mojom.Rect bounds);
// Shows the app list and switches to |state|.
ShowAppListAndSwitchToState(AppListState state);
// Shows the app list.
ShowAppList();
};
// In contrast to AppListController, this client is implemented in Chrome to
// handle calls from Ash. These include:
// - When Chrome components are needed to get involved in the user's actions on
// app list views. This can happen while the user is searching, clicking on
// any app list item, etc.
// - When view changes in Ash and we want to notify Chrome. This can happen
// while app list is performing animations.
// - When a user action on views need information from Chrome to complete. This
// can happen while populating context menu models, which depends on item data
// in Chrome.
interface AppListClient {
//////////////////////////////////////////////////////////////////////////////
// Interfaces on searching:
// Triggers a search query.
// |trimmed_query|: the trimmed input texts from the search text field.
StartSearch(mojo_base.mojom.String16 trimmed_query);
// Opens a search result when its view is clicked or pressed.
// |result_id|: the id of the search result the user wants to open.
OpenSearchResult(string result_id, int32 event_flags);
// Invokes a custom action on a result with |result_id|.
// |action_index| corresponds to the index of an action on the search result,
// for example, installing. They are stored in SearchResult::actions_.
InvokeSearchResultAction(string result_id,
int32 action_index,
int32 event_flags);
// Returns the context menu model for the search result with |result_id|, or
// an empty array if there is currently no menu for the result.
GetSearchResultContextMenuModel(string result_id) => (array<MenuItem> items);
// Invoked when a context menu item of a search result is clicked.
// |result_id|: the clicked search result's id.
// |command_id|: the clicked menu item's command id.
// |event_flags|: flags from the event which triggered this command.
SearchResultContextMenuItemSelected(string result_id,
int32 command_id,
int32 event_flags);
//////////////////////////////////////////////////////////////////////////////
// Interfaces on the app list UI:
// Invoked when the app list is shown in the display with |display_id|.
ViewShown(int64 display_id);
// Invoked when the app list is closed.
ViewClosing();
// Notifies target visibility changes of the app list.
OnAppListTargetVisibilityChanged(bool visible);
// Notifies visibility changes of the app list.
OnAppListVisibilityChanged(bool visible);
//////////////////////////////////////////////////////////////////////////////
// Interfaces on app list items:
// Activates (opens) the item with |id|.
ActivateItem(string id, int32 event_flags);
// Returns the context menu model for the item with |id|, or an empty array if
// there is currently no menu for the item (e.g. during install).
GetContextMenuModel(string id) => (array<MenuItem> items);
// Invoked when a context menu item of an app list item is clicked.
// |id|: the clicked AppListItem's id.
// |command_id|: the clicked menu item's command id.
// |event_flags|: flags from the event which triggered this command.
ContextMenuItemSelected(string id, int32 command_id, int32 event_flags);
// Invoked when a folder is created in Ash (e.g. merge items into a folder).
OnFolderCreated(AppListItemMetadata folder);
// Invoked when a folder has only one item left and so gets removed.
OnFolderDeleted(AppListItemMetadata folder);
// Invoked when user changes a folder's name or an item's position.
OnItemUpdated(AppListItemMetadata folder);
// Invoked when a "page break" item is added with |id| and |position|.
OnPageBreakItemAdded(string id, syncer.mojom.StringOrdinal position);
//////////////////////////////////////////////////////////////////////////////
// Interfaces on voice interaction:
// Starts a voice interaction session.
StartVoiceInteractionSession();
// Starts or stops voice interaction session based on current state.
ToggleVoiceInteractionSession();
};

View File

@ -0,0 +1,21 @@
# Copyright 2018 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.
mojom = "//ash/public/interfaces/app_list.mojom"
public_headers = [ "//ash/public/cpp/app_list/app_list_types.h" ]
traits_headers = [ "//ash/public/cpp/app_list/app_list_struct_traits.h" ]
sources = [
"//ash/public/cpp/app_list/app_list_struct_traits.cc",
]
deps = [
"//ui/gfx/range/mojo:struct_traits",
]
type_mappings = [
"ash.mojom.AppListState=ash::AppListState",
"ash.mojom.AppListModelStatus=ash::AppListModelStatus",
"ash.mojom.SearchResultType=ash::SearchResultType",
"ash.mojom.SearchResultDisplayType=ash::SearchResultDisplayType",
"ash.mojom.SearchResultTag=ash::SearchResultTag",
"ash.mojom.SearchResultAction=ash::SearchResultAction",
]

View File

@ -0,0 +1,18 @@
// 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.
module ash.mojom;
// Allows configuring various display related state.
interface AshDisplayController {
// ============================ Virtual Terminal ============================
// Take control of all display output. This is called when switching from the
// virtual terminal back to Chrome in response to a dbus message.
TakeDisplayControl() => (bool status);
// Relinquish control of all display output. This is called when switching
// from Chrome to the virtual terminal in response to a dbus message.
RelinquishDisplayControl() => (bool status);
};

View File

@ -0,0 +1,95 @@
// Copyright 2017 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.
module ash.mojom;
import "components/arc/common/notifications.mojom";
import "ui/gfx/image/mojo/image.mojom";
import "ui/message_center/public/mojo/notification.mojom";
import "ui/message_center/public/mojo/notifier_id.mojom";
import "mojo/public/mojom/base/string16.mojom";
import "mojo/public/mojom/base/unguessable_token.mojom";
// A struct that contains information for presenting a notifier in a settings
// panel.
struct NotifierUiData {
// The notifier (e.g. an extension).
message_center.mojom.NotifierId notifier_id;
// The user-visible name of the notifier (e.g. an extension's name).
mojo_base.mojom.String16 name;
// True if notifications from the notifier are presently enabled.
bool enabled;
// True if the setting is enforced by administrator and the user can't change.
bool enforced;
// An icon displayed next to the name.
gfx.mojom.ImageSkia? icon;
};
// The message center controller funnels notification requests from the client
// to the MessageCenter.
interface AshMessageCenterController {
SetClient(associated AshMessageCenterClient client);
// Sets the ARC notification instance.
SetArcNotificationsInstance(arc.mojom.NotificationsInstance instance);
// Shows a notification. |display_token| will be used to reference this
// notification for AshMessageCenterClient::Close().
ShowClientNotification(message_center.mojom.Notification notification,
mojo_base.mojom.UnguessableToken display_token);
// Closes a notification by the notification ID.
CloseClientNotification(string id);
UpdateNotifierIcon(message_center.mojom.NotifierId notifier_id,
gfx.mojom.ImageSkia icon);
NotifierEnabledChanged(message_center.mojom.NotifierId notifier_id,
bool enabled);
// Gets a list of all the notifications in the message center.
GetActiveNotifications() =>
(array<message_center.mojom.Notification> notifications);
};
// The message center client interface mimics
// message_center::NotificationDelegate. The ID strings match the id passed in
// |notification| in ShowClientNotification and the format of the ID is up to
// the client.
interface AshMessageCenterClient {
// Called when a notification previously displayed by the client is closed.
HandleNotificationClosed(mojo_base.mojom.UnguessableToken display_token,
bool by_user);
// Called when the body of a notification is clicked.
HandleNotificationClicked(string id);
// Called when a notification that has buttons (e.g., "Learn more") receives a
// click on one of the buttons. |reply| is a user-provided string for cases
// where the button had a text input field attached to it.
HandleNotificationButtonClicked(string id, int32 button_index,
mojo_base.mojom.String16? reply);
// Called when a notification's settings button has been pressed (and the
// handler is SettingsButtonHandler::DELEGATE).
HandleNotificationSettingsButtonClicked(string id);
// Called when a notification has been disabled (via inline settings).
DisableNotification(string id);
// Called when a user enables or disables notifications from the given
// notifier.
SetNotifierEnabled(message_center.mojom.NotifierId notifier_id, bool enabled);
// Asks the client for a list of notifiers and associated UI information to be
// displayed in a settings panel.
GetNotifierList() => (array<NotifierUiData> notifiers);
// Gets ARC app id from a given package name.
GetArcAppIdByPackageName(string package_name) => (string app_id);
};

View File

@ -0,0 +1,40 @@
// Copyright 2018 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.
module ash.mojom;
import "ash/public/interfaces/assistant_image_downloader.mojom";
import "ash/public/interfaces/web_contents_manager.mojom";
import "ash/public/interfaces/assistant_setup.mojom";
import "chromeos/services/assistant/public/mojom/assistant.mojom";
import "ui/gfx/geometry/mojo/geometry.mojom";
// Interface to AssistantController which is owned by Shell in Ash. This is
// typically used by the Assistant service to provide the controller with an
// interface to itself, as well as by the Assistant client in chrome/browser to
// provide interfaces to delegates which depend on browser.
interface AssistantController {
// Provides a reference to the underlying |assistant| service.
SetAssistant(chromeos.assistant.mojom.Assistant assistant);
// Provides an interface to the |assistant_image_downloader| owned by
// AssistantClient.
SetAssistantImageDownloader(
AssistantImageDownloader assistant_image_downloader);
// Provides an interface to the |web_contents_manager| owned by
// AssistantClient.
SetWebContentsManager(WebContentsManager web_contents_manager);
// Provides an interface to the |assistant_setup| owned by AssistantClient.
SetAssistantSetup(AssistantSetup assistant_setup);
// Requests screenshot of specified |rect| region and returns the screenshot
// encoded in JPEG format. If |rect| is empty, it returns fullscreen
// screenshot.
RequestScreenshot(gfx.mojom.Rect rect) => (array<uint8> screenshot);
// Opens Google Assistant settings.
OpenAssistantSettings();
};

View File

@ -0,0 +1,20 @@
// Copyright 2018 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.
module ash.mojom;
import "components/account_id/interfaces/account_id.mojom";
import "ui/gfx/image/mojo/image.mojom";
import "url/mojom/url.mojom";
// Interface for a class which is responsible for downloading images on behalf
// of the Assistant UI in ash.
interface AssistantImageDownloader {
// Downloads the image found at |url| for the profile associated with
// |account_id|. On completion, the supplied callback is run with the
// downloaded |image|. In the event that the download attempt fails, a NULL
// image will be returned.
Download(signin.mojom.AccountId account_id, url.mojom.Url url)
=> (gfx.mojom.ImageSkia image);
};

View File

@ -0,0 +1,13 @@
// Copyright 2018 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.
module ash.mojom;
// Interface for a class which is responsible for start Assistant OptIn flow.
interface AssistantSetup {
// Start the assistant setup flow.
// |completed| is true if the user has completed the entire flow and opted in
// to using assistant.
StartAssistantOptInFlow() => (bool completed);
};

View File

@ -0,0 +1,27 @@
// Copyright 2018 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.
module ash.mojom;
// Interface to control system volume through Ash.
interface AssistantVolumeControl {
// Sets system volume to |volume|, which is between 0 - 100.
SetVolume(int32 volume, bool user_initiated);
// Sets mute state to |muted|.
SetMuted(bool muted);
// Adds volume observer. The observer will be immediately notified of volume
// and mute status when added.
AddVolumeObserver(VolumeObserver observer);
};
// Observes volume state changes.
interface VolumeObserver {
// Called when volume is updated.
OnVolumeChanged(int32 volume);
// Called when mute state changed.
OnMuteStateChanged(bool muted);
};

View File

@ -0,0 +1,78 @@
// 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.
module ash.mojom;
// The type of icon the sink is associated with. These values match
// media_router::SinkIconType.
enum SinkIconType {
CAST = 0,
CAST_AUDIO_GROUP = 1,
CAST_AUDIO = 2,
MEETING = 3,
HANGOUT = 4,
EDUCATION = 5,
WIRED_DISPLAY = 6,
GENERIC = 7
};
struct CastSink {
string id;
string name;
string domain;
// Icon which describes the type of sink media is being routed to.
SinkIconType sink_icon_type = SinkIconType.GENERIC;
};
enum ContentSource {
UNKNOWN,
TAB,
DESKTOP
};
struct CastRoute {
string id;
string title;
// Is the activity source this computer? ie, are we mirroring the display?
bool is_local_source = false;
// What is source of the content? For example, we could be DIAL casting a
// tab or mirroring the entire desktop.
ContentSource content_source = ContentSource.UNKNOWN;
};
struct SinkAndRoute {
CastSink sink;
CastRoute route;
};
// Allows clients (e.g. Chrome browser) to interface with the cast item in the
// system tray.
interface CastConfig {
// Sets the client interface. This client interface will receive commands from
// ash and provide OnDevicesUpdated() calls.
SetClient(associated CastConfigClient client);
// Invoked whenever there is new sink or route information available.
OnDevicesUpdated(array<SinkAndRoute> device);
};
// This delegate allows the UI code in ash, e.g. |TrayCastDetailedView|,
// to access the cast system.
//
// TODO(erg): Eventually, this should no longer be exported by chrome, but
// should be exported by a separate cast service.
interface CastConfigClient {
// Request fresh data from the backend. When the data is available, all
// registered observers will get called.
RequestDeviceRefresh();
// Initiate a casting session to |sink|.
CastToSink(CastSink sink);
// A user-initiated request to stop the given cast session.
StopCasting(CastRoute route);
};

View File

@ -0,0 +1,24 @@
// Copyright 2018 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.
module ash.mojom;
import "mojo/public/mojom/base/unguessable_token.mojom";
import "ui/gfx/image/mojo/image.mojom";
interface ClientImageRegistry {
// Tells Ash about an image which the client will later refer to by |token|.
// This allows clients such as Chrome to repeatedly use or reference the same
// image without serializing/deserializing every time. If the token already
// references another icon, this will replace it.
RegisterImage(mojo_base.mojom.UnguessableToken token,
gfx.mojom.ImageSkia icon);
// Tells Ash that the client which registered the given token and its
// associated image will no longer use the image. This should be called at
// most once for every unique registered token. In the future, if Ash handles
// client restart, this will need to be called automatically for crashed
// clients.
ForgetImage(mojo_base.mojom.UnguessableToken token);
};

View File

@ -0,0 +1,7 @@
// Copyright 2017 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.
module ash.mojom;
const string kServiceName = "ash";

View File

@ -0,0 +1,273 @@
// Copyright 2018 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.
module ash.mojom;
import "ui/gfx/geometry/mojo/geometry.mojom";
import "ui/display/mojo/display.mojom";
// All points, bounds, and insets are in display pixels unless otherwise
// sepcified.
// SetDisplayLayoutInfo or SetDisplayProperties result.
enum DisplayConfigResult {
kSuccess = 0,
kInvalidOperationError,
kInvalidDisplayIdError,
kUnifiedNotEnabledError,
kPropertyValueOutOfRangeError,
kNotSupportedOnInternalDisplayError,
kNegativeValueError,
kSetDisplayModeError,
kInvalidDisplayLayoutError,
kMirrorModeSingleDisplayError,
kMirrorModeSourceIdError,
kMirrorModeDestIdError,
kCalibrationNotAvailableError,
kCalibrationNotStartedError,
kCalibrationInProgressError,
kCalibrationInvalidDataError,
kCalibrationFailedError,
};
// Describes how the displays are laid out.
enum DisplayLayoutMode {
// In normal mode displays are laid out as described by
// DisplayLayoutInfo.layouts.
kNormal = 0,
// In unified desktop mode, a single desktop will be stretched across all
// available displays.
kUnified,
// In mirrored mode, the display defined by DisplayLayoutInfo.mirrorSourceId
// will be mirrored in the displays defined by
// DisplayLayoutInfo.mirrorDestinationIds, or in all other displays if
// mirrorDestinationIds is empty.
kMirrored
};
// Describes a display edge.
enum DisplayLayoutPosition {
kTop = 0,
kRight,
kBottom,
kLeft
};
// Describes an overscan or touch calibration operation.
enum DisplayConfigOperation {
kStart = 0,
kAdjust,
kReset,
kComplete,
kShowNative,
};
// Defines a pair of display + touch points used for touch calibration.
struct TouchCalibrationPair {
// The coordinates of the display point.
gfx.mojom.Point display_point;
// The coordinates of the touch point corresponding to the display point.
gfx.mojom.Point touch_point;
};
// Defines the data required for touch calibration.
struct TouchCalibration {
// Must contain exactly four pairs of touch calibration points.
array<TouchCalibrationPair> pairs;
// Width and height of the display area when the touch calibration was
// performed.
gfx.mojom.Size bounds;
};
// Defines the layout of a single display.
struct DisplayLayout {
// The unique identifier of the display.
string id;
// The unique identifier of the parent display. Empty for the root display.
string parent_id;
// The edge of the display that is shared with the parent display. Ignored for
// the root display.
DisplayLayoutPosition position;
// The offset of the display along the connected edge. 0 indicates that
// the topmost or leftmost corner is aligned.
int32 offset;
};
// Defines the layout mode and details.
struct DisplayLayoutInfo {
// The layout mode to use, see DisplayLayoutMode for details.
DisplayLayoutMode layout_mode;
// Ignored if If layout_mode is not kMirrored. Otherwise, if provided,
// specifies the unique identifier of the source display for mirroring. If
// not provided, mirror_destination_ids will be ignored and default ('normal')
// mirrored mode will be enabled.
string? mirror_source_id;
// Ignored if layout_mode is not kMirrored. Otherwise, if provided, specifies
// the unique identifiers of the displays to mirror the source display. If not
// provided or empty, all displays will mirror the source display.
array<string>? mirror_destination_ids;
// An array of layouts describing a directed graph of displays. Required if
// layout_mode is kNormal or kMirrored and not all displays are mirrored
// ('mixed' mode). Ignored if layout_mode is kUnified.
array<DisplayLayout>? layouts;
};
// EDID extracted parameters. Field description refers to "VESA ENHANCED
// EXTENDED DISPLAY IDENTIFICATION DATA STANDARD (Defines EDID Structure
// Version 1, Revision 4)" Release A, Revision 2 September 25, 2006.
// https://www.vesa.org/vesa-standards
struct Edid {
// Three character manufacturer code, Sec. 3.4.1 page 21.
string manufacturer_id;
// Two byte manufacturer-assigned code, Sec. 3.4.2 page 21.
string product_id;
// Year of manufacture. Sec. 3.4.4 page 22.
int32 year_of_manufacture;
};
// Struct wrapper so that the property can be optional.
struct DisplayRotation {
display.mojom.Rotation rotation;
};
// Defines the properties for a display mode, i.e. a valid size and scale.
struct DisplayMode {
// The display mode size in device independent (user visible) pixels.
gfx.mojom.Size size;
// The display mode size in native pixels.
gfx.mojom.Size size_in_native_pixels;
// The display mode device scale factor.
double device_scale_factor;
// The display mode refresh rate in hertz.
double refresh_rate;
// True if the mode is the display's native mode.
bool is_native;
};
// Defines the properties of an individual display, returned by
// GetDisplayLayoutInfo.
struct DisplayUnitInfo {
// The unique identifier of the display.
string id;
// The user-friendly name (e.g. "Acme LCD monitor").
string name;
// EDID properties when available.
Edid? edid;
// True if this is the primary display.
bool is_primary;
// True if this is an internal display.
bool is_internal;
// True if this display is enabled.
bool is_enabled;
// True when the display is in tablet mode.
bool is_tablet_mode;
// True if this display has a touch input device associated with it.
bool has_touch_support;
// True if this display has an accelerometer associated with it.
bool has_accelerometer_support;
// The number of pixels per inch along the x-axis.
double dpi_x;
// The number of pixels per inch along the y-axis.
double dpi_y;
// The display's clockwise rotation.
display.mojom.Rotation rotation;
// The display's logical bounds.
gfx.mojom.Rect bounds;
// The display's ovserscan insets within its screen's bounds.
gfx.mojom.Insets overscan;
// The usable work area of the display within the display bounds. Excludes
// areas of the display reserved for the OS, e.g. the taskbar and launcher.
gfx.mojom.Rect work_area;
// The index of the selected display mode.
int32 selected_display_mode_index;
// The list of available display modes.
array<DisplayMode> available_display_modes;
// The ratio between the display's current and default zoom. i.e. 1.0 is
// is equivalent to 100% zoom, and value 1.5 is equivalent to 150% zoom.
double display_zoom_factor;
// The list of allowed zoom factor values for the display.
array<double> available_display_zoom_factors;
};
// Properties for configuring an individual display, used in
// SetDisplayProperties.
struct DisplayConfigProperties {
// If true, makes the display primary. No-op if set to false.
bool set_primary;
// If provided, sets the display's overscan insets to the provided value.
// Note: overscan values may not be negative or larger than a half of the
// screen's size. Overscan cannot be changed on the internal monitor.
gfx.mojom.Insets? overscan;
// If provided updates the display's rotation.
DisplayRotation? rotation;
// If provided, updates the display's logical bounds origin. Note: when
// updating the display origin, some constraints will be applied. so the final
// bounds origin may be different than the one set. The actual bounds will be
// reflected in DisplayUnitInfo. Cannot be changed on the primary display (or
// if set_primary is true).
gfx.mojom.Point? bounds_origin;
// If non zero, updates the zoom associated with the display. This zoom
// performs relayout and repaint thus resulting in a better quality zoom than
// just performing a pixel by pixel stretch enlargement.
double display_zoom_factor;
// Optional DisplayMode properties to set. This should match one of the
// modes listed in DisplayUnitInfo.available_display_modes. Other custom
// modes may or may not be valid.
DisplayMode? display_mode;
};
// Interface for configuring displays in Chrome OS. Currently this is
// implemented in Ash through classes owned by ash::Shell, but the interface
// should not have any Ash specific dependencies.
interface CrosDisplayConfigController {
// Observers are notified when the display layout or any display properties
// change.
AddObserver(associated CrosDisplayConfigObserver observer);
// Returns the display layout info, including the list of layouts.
GetDisplayLayoutInfo() => (DisplayLayoutInfo info);
// Sets the layout mode, mirroring, and layouts. Returns kSuccess if the
// layout is valid or an error value otherwise.
SetDisplayLayoutInfo(DisplayLayoutInfo info) => (DisplayConfigResult result);
// Returns the properties for all displays. If |single_unified| is true, a
// single display will be returned if the display layout is in unifed mode.
GetDisplayUnitInfoList(bool single_unified) =>
(array<DisplayUnitInfo> info_list);
// Sets |properties| for individual display with identifier |id|. Returns
// Success if the properties are valid or an error value otherwise.
SetDisplayProperties(string id, DisplayConfigProperties properties) =>
(DisplayConfigResult result);
// Enables or disables unified desktop mode. If the current display mode is
// kMirrored the mode will not be changed, if it is kNormal then the mode will
// be set to kUnified.
SetUnifiedDesktopEnabled(bool enabled);
// Starts, updates, completes, or resets overscan calibration for the display
// with identifier |display_id|. If |op| is kAdjust, |delta| describes the
// amount to change the overscan value. Runs the callback after performing the
// operation or on error.
OverscanCalibration(string display_id,
DisplayConfigOperation op,
gfx.mojom.Insets? delta) => (DisplayConfigResult result);
// Starts, completes, or resets touch calibration for the display with
// identifier |display_id|. If |op| is kShowNative shows the native
// calibration UI. Runs the callback after performing the operation or on
// error.
TouchCalibration(string display_id,
DisplayConfigOperation op,
TouchCalibration? calibration) =>
(DisplayConfigResult result);
};
// Interface for clients needing to be informed when the display configuration
// changes.
interface CrosDisplayConfigObserver {
// Called any time the display configuration changes.
OnDisplayConfigChanged();
};

View File

@ -0,0 +1,32 @@
// Copyright 2017 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.
module ash.mojom;
// An interface for clients that are allowed to control the display output
// content protection. Multiple clients can request content protection at
// the same time, and the display will be protected until all clients are
// closed or set |desired_method_mask| to 0 with |SetContentProtection|.
interface DisplayOutputProtection {
// Queries link status and protection status.
// |link_mask| is the type of connected display links, which is a bitmask of
// DisplayConnectionType values.
// |protection_mask)| is the desired protection methods, which is a bitmask of
// the ContentProtectionMethod values.
// See //ui/display/types/display_constants.h for DisplayConnectionType and
// ContentProtectionMethod.
QueryContentProtectionStatus(int64 display_id) => (bool success,
uint32 link_mask,
uint32 protection_mask);
// Requests the desired protection methods.
// |protection_mask| is the desired protection methods, which is a bitmask
// of the ContentProtectionMethod values. When the interface is closed,
// the content protection mask will be reverted.
// Return true on success. Return false if it failed to make the protection
// request on the given display.
// See //ui/display/types/display_constants.h for ContentProtectionMethod.
SetContentProtection(int64 display_id,
uint32 desired_method_mask) => (bool success);
};

View File

@ -0,0 +1,18 @@
// Copyright 2018 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.
module ash.mojom;
import "ui/gfx/geometry/mojo/geometry.mojom";
// Used by a client (e.g. Chrome) to notify ash of focus change events of nodes
// in webpages.
interface DockedMagnifierController {
// Requests that the Docked Magnifier centers its viewport around this given
// screen point. This can be used by a client (e.g. Chrome) to notify ash of
// focus change events in e.g. webpages when feature is enabled. Note that ash
// observes the focus change events of the text input carets in editable nodes
// by itself.
CenterOnPoint(gfx.mojom.Point point_in_screen);
};

View File

@ -0,0 +1,13 @@
// Copyright 2017 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.
module ash.mojom;
// This is added to KeyEvents that ash has an accelerator for. This is only used
// for accelerators ash does not handle immediately. That is, those the target
// is given priority to process.
// No value is set for this property, the presence indicates ash has an
// accelerator.
const string kWillProcessAccelerator_KeyEventProperty =
"ash:will-process-accelerator";

View File

@ -0,0 +1,37 @@
// Copyright 2018 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.
module ash.mojom;
import "ui/events/mojo/event.mojom";
// Allows a client to implement spoken feedback features; used for ChromeVox.
interface SpokenFeedbackEventRewriterDelegate {
// Used to send key events to the ChromeVox extension. |capture| is true if
// the rewriter discarded the event, false if the rewriter continues event
// propagation.
DispatchKeyEventToChromeVox(ui.mojom.Event event, bool capture);
};
// Allows clients to toggle some event rewriting behavior.
interface EventRewriterController {
// Enables the KeyboardDrivenEventRewriter, which is disabled by default.
// This only applies when the user is on the login screen.
SetKeyboardDrivenEventRewriterEnabled(bool enabled);
// If true, Shift + Arrow keys are rewritten to Tab/Shift-Tab keys.
// This only applies when the KeyboardDrivenEventRewriter is active.
SetArrowToTabRewritingEnabled(bool enabled);
// Set the delegate used by the spoken feedback event rewriter.
SetSpokenFeedbackEventRewriterDelegate(
SpokenFeedbackEventRewriterDelegate delegate);
// Continue dispatch of key events that were unhandled by ChromeVox.
// TODO(crbug.com/839541): ChromeVox should not repost unhandled events.
OnUnhandledSpokenFeedbackEvent(ui.mojom.Event event);
// Discards key events and sends to spoken feedback when true.
CaptureAllKeysForSpokenFeedback(bool capture);
};

View File

@ -0,0 +1,44 @@
// Copyright 2018 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.
module ash.mojom;
import "ui/gfx/geometry/mojo/geometry.mojom";
// Allows clients to control pieces of the UI used in first-run tutorials.
// Exists because the first-run tutorial is a component extension run by
// Chrome. Methods exist here instead of on the Shelf or SystemTray interfaces
// due to small behavior differences (all methods only affect the primary
// display, opening the system tray bubble is persistent, etc.).
interface FirstRunHelper {
// Cleans up the ash UI on tutorial start.
Start(FirstRunHelperClient client);
// Restores the ash UI on tutorial stop.
Stop();
// Returns the bounds of the app list button on the primary display in screen
// coordinates.
GetAppListButtonBounds() => (gfx.mojom.Rect screen_bounds);
// Opens the system tray bubble menu to show the default view. Does nothing if
// the bubble is already open. The bubble stays open until explicitly closed.
// Returns bubble bounds in screen coordinates.
OpenTrayBubble() => (gfx.mojom.Rect screen_bounds);
// Closes the system tray bubble menu. Does nothing if the bubble is already
// closed.
CloseTrayBubble();
// Returns the bounds of the help button on the system tray bubble menu in
// screen coordinates. Returns empty bounds if the bubble is not open.
GetHelpButtonBounds() => (gfx.mojom.Rect screen_bounds);
};
// The client for the FirstRunHelper interface, e.g. chrome.
interface FirstRunHelperClient {
// Informs the client that something happened inside ash that should cancel
// the tutorial (e.g. the device is shutting down).
OnCancelled();
};

View File

@ -0,0 +1,29 @@
// Copyright 2017 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.
module ash.mojom;
import "ui/gfx/geometry/mojo/geometry.mojom";
// Interface for ash client (e.g. Chrome) to connect to the highlighter
// controller, the component implementing on-screen content selection
// with a stylus.
interface HighlighterController {
// Sets the client interface.
SetClient(HighlighterControllerClient client);
// Exits the highlighter mode if it is currently enabled.
ExitHighlighterMode();
};
// Interface for ash to notify the client (e.g. Chrome) about the highlighter
// selection and state.
interface HighlighterControllerClient {
// Called when when a valid selection is made. Selected rectangle is in
// screen coordinates, clipped to screen bounds if necessary.
HandleSelection(gfx.mojom.Rect rect);
// Called when the highlighter tool becomes enabled or disabled.
HandleEnabledStateChange(bool enabled);
};

View File

@ -0,0 +1,93 @@
// Copyright 2017 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.
module ash.mojom;
import "ash/public/interfaces/ime_info.mojom";
import "mojo/public/mojom/base/string16.mojom";
import "ui/base/ime/chromeos/public/interfaces/ime_keyset.mojom";
import "ui/gfx/geometry/mojo/geometry.mojom";
// Interface for ash client (e.g. Chrome) to send input method info to ash.
interface ImeController {
// Sets the client interface.
SetClient(ImeControllerClient client);
// Updates the cached IME information and refreshes the IME menus.
// |current_ime_id| is empty when there is no active IME yet.
RefreshIme(string current_ime_id,
array<ImeInfo> available_imes,
array<ImeMenuItem> menu_items);
// Shows an icon in the IME menu indicating that IMEs are controlled by device
// policy.
SetImesManagedByPolicy(bool managed);
// Shows the IME menu on the shelf instead of inside the system tray menu.
// Users with multiple IMEs that have multiple configurable properties (e.g.
// some Chinese IMEs) prefer this to keeping the IME menu under the primary
// system tray menu.
ShowImeMenuOnShelf(bool show);
// Report caps lock state changes from chrome (which is the source of truth)
// to the tray.
UpdateCapsLockState(bool enabled);
// Report keyboard layout changes from chrome (which is the source of truth)
// This is also called when a connection is first established between
// ImeController and ImeControllerClient.
// The layout name is a XKB keyboard layout name (e.g. "us").
OnKeyboardLayoutNameChanged(string layout_name);
// Report the enabled state of the various extra input options (currently
// emoji, handwriting, and voice input). |is_extra_input_options_enabled| set
// to false will disable all extra input option UI regardless of the enabled
// state of the individual options (which will be ingored).
SetExtraInputOptionsEnabledState(bool is_extra_input_options_enabled,
bool is_emoji_enabled,
bool is_handwriting_enabled,
bool is_voice_enabled);
// Show the mode indicator view (e.g. a bubble with "DV" for Dvorak).
// The view fades out after a delay and close itself.
// The anchor bounds is in the universal screen coordinates in DIP.
ShowModeIndicator(gfx.mojom.Rect anchor_bounds,
mojo_base.mojom.String16 ime_short_name);
};
// Interface for ash to send input method requests to its client (e.g. Chrome).
interface ImeControllerClient {
// Switches to the next input method. Does nothing if only one input method
// is installed.
SwitchToNextIme();
// Switches to the previous input method. Does nothing if only one input
// method is installed.
SwitchToPreviousIme();
// Switches to an input method by |id|. Does nothing if the input method is
// not installed. The ID is usually the output of a call like
// chromeos::extension_ime_util::GetInputMethodIDByEngineID("xkb:jp::jpn"),
// see that function for details. Shows a bubble with the input method short
// name when |show_message| is true.
SwitchImeById(string id, bool show_message);
// Activates an input method menu item. The |key| must be a value from the
// ImeMenuItems provided via RefreshIme. Does nothing if the |key| is invalid.
ActivateImeMenuItem(string key);
// When the caps lock state change originates from the tray (i.e. clicking the
// caps lock toggle from the settings menu from the caps lock icon), from an
// accelerator (e.g. pressing Alt + Search), or from the debug UI (i.e.
// toggling the caps lock button), propagate the change to the client without
// sending a change notification back.
// TODO(crbug/759435): Ideally this interaction should only be to disable the
// caps lock.
SetCapsLockEnabled(bool enabled);
// Overrides the keyboard keyset (emoji, handwriting or voice). If keyset is
// 'kNone', we switch to the default keyset. Because this is asynchronous,
// any code that needs the keyset to be updated first must use the callback.
OverrideKeyboardKeyset(chromeos.input_method.mojom.ImeKeyset keyset) => ();
};

View File

@ -0,0 +1,40 @@
// Copyright 2017 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.
module ash.mojom;
import "mojo/public/mojom/base/string16.mojom";
// Metadata about an installed input method.
struct ImeInfo {
// True if the IME is a third-party extension.
bool third_party;
// ID that identifies the IME (e.g., "t:latn-post", "pinyin", "hangul").
string id;
// Long name of the IME, which is used as the user-visible name.
mojo_base.mojom.String16 name;
// Medium name of the IME, which is the same as the short name in most cases.
mojo_base.mojom.String16 medium_name;
// UI indicator for the IME (e.g., "US"). If the IME has no indicator, uses
// the first two characters in its preferred keyboard layout or language code
// (e.g., "ko", "ja", "en-US").
mojo_base.mojom.String16 short_name;
};
// A menu item that sets an IME configuration property.
struct ImeMenuItem {
// True if the item is selected / enabled.
bool checked;
// The key which identifies the property controlled by the menu item, e.g.
// "InputMode.HalfWidthKatakana".
string key;
// The item label, e.g. "Switch to full punctuation mode" or "Hiragana".
mojo_base.mojom.String16 label;
};

View File

@ -0,0 +1,24 @@
// Copyright 2018 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.
module ash.mojom;
import "components/account_id/interfaces/account_id.mojom";
import "mojo/public/mojom/base/string16.mojom";
import "ui/gfx/image/mojo/image.mojom";
union KioskAppIdentifier {
// For chrome kiosk apps only, the extension app id.
string app_id;
// For ARC kiosk apps only, the account id for the app.
signin.mojom.AccountId account_id;
};
// Metadata about a kiosk app. Used for display in the kiosk app menu in the
// login screen shelf.
struct KioskAppInfo {
KioskAppIdentifier identifier;
mojo_base.mojom.String16 name;
gfx.mojom.ImageSkia icon;
};

View File

@ -0,0 +1,21 @@
// 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.
module ash.mojom;
// Sent as the response to LocaleNotificationController.OnLocaleChanged().
enum LocaleNotificationResult {
ACCEPT,
REVERT
};
// Used by Chrome to make ash show a notification.
interface LocaleNotificationController {
// Displays a notification in ash prompting the user whether to accept a
// change in the locale. If the user clicks the accept button (or closes the
// notification), OnLocaleChange() returns ACCEPT. If the user clicks the
// revert button, returns REVERT.
OnLocaleChanged(string current, string from, string to)
=> (LocaleNotificationResult result);
};

View File

@ -0,0 +1,304 @@
// Copyright 2017 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.
module ash.mojom;
import "ash/public/interfaces/user_info.mojom";
import "ash/public/interfaces/login_user_info.mojom";
import "ash/public/interfaces/kiosk_app_info.mojom";
import "chromeos/components/proximity_auth/public/interfaces/auth_type.mojom";
import "components/account_id/interfaces/account_id.mojom";
import "mojo/public/mojom/base/string16.mojom";
import "mojo/public/mojom/base/time.mojom";
// State of the Oobe UI dialog, which is used to update the visibility of login
// shelf buttons.
// This comes from SIGNIN_UI_STATE defined in display_manager.js, with an
// additional value HIDDEN to indicate the visibility of the oobe ui dialog.
enum OobeDialogState {
// Showing other screen, which does not impact the visibility of login shelf
// buttons.
NONE,
// Showing gaia signin screen.
GAIA_SIGNIN,
// Showing wrong hardware identification screen.
WRONG_HWID_WARNING,
// Showing supervised user creation screen.
SUPERVISED_USER_CREATION_FLOW,
// Showing SAML password confirmation screen.
SAML_PASSWORD_CONFIRM,
// Showing password changed screen.
PASSWORD_CHANGED,
// Showing device enrollment screen.
ENROLLMENT,
// Showing error screen.
ERROR,
// Oobe UI dialog is currently hidden.
HIDDEN,
};
// Allows clients (e.g. Chrome browser) to control the ash login/lock/user-add
// screens.
interface LoginScreen {
// Sets the client interface.
SetClient(LoginScreenClient client);
// Displays the lock screen. |did_show| is true iff the lock UI was
// successfully displayed.
ShowLockScreen() => (bool did_show);
// Displays the login screen. |did_show| is true iff the login UI was
// successfully displayed.
ShowLoginScreen() => (bool did_show);
// Requests to show error message in the ash lock screen.
// TODO(xiaoyinh): login_attempts is probabaly not needed from chrome,
// remove it when we start to count the login attempts in ash lock screen.
// |login_attempts|: The number of the login authentication attempts.
// |error_text|: The error text to be shown in lock screen.
// |help_link_text|: The help link to be shown in lock screen.
// |help_topic_id|: The id of the help app topic regarding this error.
ShowErrorMessage(int32 login_attempts,
string error_text,
string help_link_text,
int32 help_topic_id);
// Shows a warning banner message on the login screen. A warning banner is
// used to notify users of important messages before they log in to their
// session. (e.g. Tell the user that an update of the user data will start
// on login)
// |message|: The message to show.
ShowWarningBanner(mojo_base.mojom.String16 message);
// Hide a warning banner if it is displayed.
// TODO(fukino): Ideally chrome-side should not have this level of UI
// control. Make the API simpler and let ash determine the UI behavior.
HideWarningBanner();
// Requests to close any displayed error messages in ash lock screen.
ClearErrors();
// Requests to show the custom icon in the user pod.
// |account_id|: The account id of the user in the user pod.
// |icon|: Information regarding the icon.
ShowUserPodCustomIcon(signin.mojom.AccountId account_id,
EasyUnlockIconOptions icon);
// Requests to hide the custom icon in the user pod.
// |account_id|: The account id of the user in the user pod.
HideUserPodCustomIcon(signin.mojom.AccountId account_id);
// Requests to set the authentication type.
// |account_id|: The account id of the user in the user pod.
// |auth_type|: Authentication type.
// |initial_value|: A message shown in the password field of the user pod.
SetAuthType(signin.mojom.AccountId account_id,
proximity_auth.mojom.AuthType auth_type,
mojo_base.mojom.String16 initial_value);
// Set the users who are displayed on the login UI. |users| is filtered
// and does not correspond to every user on the device.
SetUserList(array<LoginUserInfo> users);
// Notification if pin is enabled or disabled for the given user.
// |account_id|: The account id of the user in the user pod.
// |is_enabled|: True if pin unlock is enabled.
SetPinEnabledForUser(signin.mojom.AccountId account_id, bool is_enabled);
// Change the user's avatar. Some avatars may take a long time to load and the
// login screen may already be visible.
SetAvatarForUser(signin.mojom.AccountId account_id, UserAvatar avatar);
// Called when auth should be enabled or disabled for the given user. When
// auth is disabled, the user cannot unlock the device. Auth is enabled by
// default.
// |account_id|: The account id of the user in the user pod.
// |is_enabled|: True if auth is enabled.
// |auth_reenabled_time|: A future time when auth will be enabled. Must be
// non-null if |is_enabled| is false. This value is
// for display purpose only and the client should be
// responsible for calling this method again with
// is_enabled == true when the time reaches.
SetAuthEnabledForUser(signin.mojom.AccountId account_id,
bool is_enabled,
mojo_base.mojom.Time? auth_reenabled_time);
// Called when focus is reported to be leaving a lock screen app window.
// Requests focus to be handed off to the next suitable widget.
// |reverse|: Whether the tab order is reversed.
HandleFocusLeavingLockScreenApps(bool reverse);
// Called when new system information is available.
// |show_if_hidden|: If true, the system information should be displayed to
// the user if it is currently hidden. If false, the system
// information should remain hidden if not already shown.
// Hidden system information can be shown by pressing alt-v.
// |os_version_label_text|: The OS version.
// |enterprise_info_text|: The enterprise info.
// |bluetooth_name|: The name of the bluetooth adapter.
SetSystemInfo(bool show_if_hidden,
string os_version_label_text,
string enterprise_info_text,
string bluetooth_name);
// Check if the login/lock screen is ready for a password.
IsReadyForPassword() => (bool is_ready);
// Set the public session display name for user with |account_id|.
SetPublicSessionDisplayName(signin.mojom.AccountId account_id,
string display_name);
// Set the public session locales for user with |account_id|.
// |locales|: Available locales for this user.
// |default_locale|: Default locale for this user.
// |show_advanced_view|: True if we should show the advanced expanded user
// view for the public session.
SetPublicSessionLocales(signin.mojom.AccountId account_id,
array<LocaleItem> locales,
string default_locale,
bool show_advanced_view);
// Set the public session keyboard layouts for user with |account_id|.
// |locale|: The locale that |keyboard_layouts| can be used for.
SetPublicSessionKeyboardLayouts(signin.mojom.AccountId account_id,
string locale,
array<InputMethodItem> keyboard_layouts);
// Set the fingerprint unlock state for user with |account_id|.
SetFingerprintUnlockState(signin.mojom.AccountId account_id,
FingerprintUnlockState state);
// Update the kiosk app data for the login screen.
SetKioskApps(array<KioskAppInfo> kiosk_apps);
// Display a toast describing the latest kiosk app launch error.
ShowKioskAppError(string message);
// Called when the dialog hosting oobe has changed state. The oobe dialog
// provides support for any part of login that is implemented in JS/HTML, such
// as add user or powerwash.
NotifyOobeDialogState(OobeDialogState state);
// Sets whether users can be added from the login screen.
SetAddUserButtonEnabled(bool enable);
// Sets if the guest button on the login shelf can be shown. Even if set to
// true the button may still not be visible.
SetAllowLoginAsGuest(bool allow_guest);
// Sets if the guest button on the login shelf can be shown during gaia
// signin screen.
SetShowGuestButtonForGaiaScreen(bool can_show);
};
// Allows ash lock screen to control a client (e.g. Chrome browser). Requests
// often involve preferences or talk to cryptohome that is not available to ash.
interface LoginScreenClient {
// Request user authentication in chrome.
// If auth succeeds:
// chrome will hide the lock screen and clear any displayed error messages.
// If auth fails:
// chrome will request lock screen to show error messages.
// |account_id|: The AccountId to authenticate against.
// |password|: The submitted password.
// |authenticated_by_pin|: True if we are using pin to authenticate.
//
// The result will be set to true if auth was successful, false if not.
AuthenticateUser(signin.mojom.AccountId account_id,
string password,
bool authenticated_by_pin) => (bool auth_success);
// Request to attempt easy unlock in chrome.
// |account_id|: The account id of the user we are authenticating.
AttemptUnlock(signin.mojom.AccountId account_id);
// Request to hard lock the user pod.
// |account_id|: The account id of the user in the user pod.
HardlockPod(signin.mojom.AccountId account_id);
// Record clicks on the lock icon in the user pod.
// |account_id|: The account id of the user in the user pod.
RecordClickOnLockIcon(signin.mojom.AccountId account_id);
// Focus user pod of user with |account_id|.
OnFocusPod(signin.mojom.AccountId account_id);
// Notify that no user pod is focused.
OnNoPodFocused();
// Load wallpaper of user with |account_id|.
LoadWallpaper(signin.mojom.AccountId account_id);
// Sign out current user.
SignOutUser();
// Close add user screen.
CancelAddUser();
// Launches guest mode.
LoginAsGuest();
// User with |account_id| has reached maximum incorrect password attempts.
OnMaxIncorrectPasswordAttempted(signin.mojom.AccountId account_id);
// Should pass the focus to the active lock screen app window, if there is
// one. This is called when a lock screen app is reported to be active (using
// tray_action mojo interface), and is next in the tab order.
// |HandleFocusLeavingLockScreenApps| should be called to return focus to the
// lock screen.
// |reverse|: Whether the tab order is reversed.
FocusLockScreenApps(bool reverse);
// Show the gaia sign-in dialog. If |can_close| is true, the dialog can be
// closed. The value in |prefilled_account| will be used to prefill the
// sign-in dialog so the user does not need to type the account email.
ShowGaiaSignin(bool can_close, signin.mojom.AccountId? prefilled_account);
// Notification that the remove user warning was shown.
OnRemoveUserWarningShown();
// Try to remove |account_id|.
RemoveUser(signin.mojom.AccountId account_id);
// Launch a public session for user with |account_id|.
// |locale|: Locale for this user.
// The value is language code like "en-US", "zh-CN"
// |input_method|: Input method for this user.
// This is the id of InputMethodDescriptor like
// "t:latn-post", "pinyin".
LaunchPublicSession(signin.mojom.AccountId account_id,
string locale,
string input_method);
// Request public session keyboard layouts for user with |account_id|.
// This function send a request to chrome and the result will be returned by
// SetPublicSessionKeyboardLayouts.
// |locale|: Request a list of keyboard layouts that can be used by this
// locale.
RequestPublicSessionKeyboardLayouts(signin.mojom.AccountId account_id,
string locale);
// Request to show a feedback report dialog in chrome.
ShowFeedback();
// Launch the specific kiosk app.
LaunchKioskApp(string app_id);
// Launch the specific ARC++ kiosk app.
LaunchArcKioskApp(signin.mojom.AccountId account_id);
// Show the powerwash (device reset) dialog.
ShowResetScreen();
// Show the help app for when users have trouble signing in to their account.
ShowAccountAccessHelpApp();
};

View File

@ -0,0 +1,168 @@
// Copyright 2017 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.
module ash.mojom;
import "ash/public/interfaces/user_info.mojom";
import "chromeos/components/proximity_auth/public/interfaces/auth_type.mojom";
import "mojo/public/mojom/base/string16.mojom";
import "mojo/public/mojom/base/values.mojom";
// Supported multi-profile user behavior values.
// Keep in sync with the enum in md_user_pod_row.js and user_pod_row.js
enum MultiProfileUserBehavior {
UNRESTRICTED = 0,
PRIMARY_ONLY = 1,
NOT_ALLOWED = 2,
OWNER_PRIMARY_ONLY = 3,
};
// Easy unlock icon choices.
enum EasyUnlockIconId {
// No icon shown.
NONE,
// The user has clicked the easy unlock icon and disabled easy unlock for this
// login/lock session.
HARDLOCKED,
// Phone could not be found.
LOCKED,
// Phone found, but it is not unlocked.
LOCKED_TO_BE_ACTIVATED,
// Phone found, but it is too far away.
LOCKED_WITH_PROXIMITY_HINT,
// Phone found and unlocked. The user can click to dismiss the login/lock
// screen.
UNLOCKED,
// Scanning for phone.
SPINNER,
};
// Fingerprint unlock state in the views lock screen.
enum FingerprintUnlockState {
// Fingerprint unlock is not available.
UNAVAILABLE,
// Fingerprint unlock is available.
AVAILABLE,
// The unlock attempt is successful, the fingerprint is matched.
AUTH_SUCCESS,
// The unlock attempt is unsuccessful; the fingerprint is not
// recognized; however, the user can make another fingerprint auth
// attempt.
AUTH_FAILED,
// The unlock attempt is unsuccessful; the fingerprint is not
// recognized. There have been too many unlock attempts and fingerprint
// is now disabled.
AUTH_DISABLED,
};
// Information about the custom icon in the user pod.
struct EasyUnlockIconOptions {
// Icon that should be displayed.
EasyUnlockIconId icon;
// Tooltip that is associated with the icon. This is shown automatically if
// |autoshow_tooltip| is true. The user can always see the tooltip if they
// hover over the icon. The tooltip should be used for the accessibility label
// if it is present.
mojo_base.mojom.String16 tooltip;
// If true, the tooltip should be displayed (even if the user is not currently
// hovering over the icon, ie, this makes |tooltip| act like a little like a
// notification).
bool autoshow_tooltip;
// Accessibility label. Only used if |tooltip| is empty.
// TODO(jdufault): Always populate and use |aria_label|, even if |tooltip| is
// non-empty.
mojo_base.mojom.String16 aria_label;
// If true, clicking the easy unlock icon should fire a hardlock event which
// will disable easy unlock. The hardlock event will request a new icon
// display via a separate EasyUnlockIconsOption update. See
// login_screen.mojom::HardlockPod.
bool hardlock_on_click;
// If true, the lock screen is being demoed so the user can test out easy
// unlock. The flow operates as normal. Hardlocking is disabled in this
// scenario.
// TODO(jdufault): This should be removed, as it does not change UI.
bool is_trial_run;
};
// Infomation of each input method. This is used to populate keyboard layouts
// for public account user.
struct InputMethodItem {
// An id that identifies an input method engine (e.g., "t:latn-post",
// "pinyin", "hangul").
string ime_id;
// Title of the imput method.
string title;
// Whether this input method is been selected.
bool selected;
};
// Information of each available locale. This is used to populate language
// locales for public account user.
struct LocaleItem {
// Language code of the locale.
string language_code;
// Title of the locale.
string title;
// Optional, group name of the locale.
string? group_name;
};
// Infomation about a public account user.
struct PublicAccountInfo {
// Optional, the domain name displayed in the login screen UI.
string? enterprise_domain;
// A list of available user locales.
array<LocaleItem> available_locales;
// Default locale for this user.
string default_locale;
// Show expanded user view that contains session information/warnings and
// locale selection.
bool show_expanded_view;
// Show the advanced expanded user view if there are at least two recommended
// locales. This will be the case in multilingual environments where users
// are likely to want to choose among locales.
bool show_advanced_view;
// A list of available keyboard layouts.
array<InputMethodItem> keyboard_layouts;
};
// Info about a user in login/lock screen.
struct LoginUserInfo {
// User's basic information including account id, email, avatar etc.
UserInfo basic_user_info;
// What method the user can use to sign in.
proximity_auth.mojom.AuthType auth_type;
// True if this user has already signed in.
bool is_signed_in;
// True if this user is the device owner.
bool is_device_owner;
// True if fingerprint unlock is allowed for this user.
bool allow_fingerprint_unlock;
// True if multi-profiles sign in is allowed for this user.
bool is_multiprofile_allowed;
// Enforced policy for multi-profiles sign in.
MultiProfileUserBehavior multiprofile_policy;
// True if this user can be removed.
bool can_remove;
// Optional, contains the public account information if user type is
// PUBLIC_ACCOUNT.
PublicAccountInfo? public_account_info;
};

View File

@ -0,0 +1,46 @@
// 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.
module ash.mojom;
import "components/account_id/interfaces/account_id.mojom";
// Describes whether media is currently being captured.
enum MediaCaptureState {
NONE = 0,
AUDIO = 1,
VIDEO = 2,
AUDIO_VIDEO = 3
};
// Allows clients (e.g. Chrome browser) to interface with the ash media
// indicators.
interface MediaController {
// Sets the client interface.
SetClient(associated MediaClient client);
// Called when the media capture state changes on the client, or in response
// to a RequestCaptureState() request. Returns a map from AccountId to
// MediaCaptureState representing every user's state.
NotifyCaptureState(map<signin.mojom.AccountId,
MediaCaptureState> capture_states);
};
// This delegate allows the UI code in ash to forward UI commands.
interface MediaClient {
// Handles the Next Track Media shortcut key.
HandleMediaNextTrack();
// Handles the Play/Pause Toggle Media shortcut key.
HandleMediaPlayPause();
// Handles the Previous Track Media shortcut key.
HandleMediaPrevTrack();
// Requests that the client resends the NotifyMediaCaptureChanged() message.
RequestCaptureState();
// Suspends all WebContents-associated media sessions to stop managed players.
SuspendMediaSessions();
};

View File

@ -0,0 +1,68 @@
// Copyright 2018 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.
module ash.mojom;
import "mojo/public/mojom/base/string16.mojom";
import "ui/gfx/image/mojo/image.mojom";
// The types of menu items shown in shelf context and application list menus.
// These values roughly match ui::MenuModel::ItemType (sans TYPE_BUTTON_ITEM).
enum MenuItemType {
COMMAND, // Performs an action when selected.
CHECK, // Can be selected/checked to toggle a boolean state.
RADIO, // Can be selected/checked among a group of choices.
SEPARATOR, // Shows a horizontal line separator.
SUBMENU, // Presents a submenu within another menu.
ACTIONABLE_SUBMENU, // A SUBMENU that is also a COMMAND.
};
// For a separator we have the following types.
enum MenuSeparatorType {
// Normal - top to bottom: Spacing, line, spacing.
NORMAL_SEPARATOR = 0,
// Double thickness - top to bottom: Spacing, line, spacing.
DOUBLE_SEPARATOR,
// Upper - top to bottom: Line, spacing.
UPPER_SEPARATOR,
// Lower - top to bottom: Spacing, line.
LOWER_SEPARATOR,
// Spacing - top to bottom: Spacing only.
SPACING_SEPARATOR,
// Vertical separator within a row.
VERTICAL_SEPARATOR,
// Separator with left padding - top to bottom: Line only,
// horizontal: Starts after left padding.
PADDED_SEPARATOR,
};
// MenuItems are used to populate application menus for shelf items.
// Note: Some menu item types only support a subset of these item features.
// Please update comments below (MenuItemType -> [fields expected for usage])
// when anything changed to MenuItemType or MenuItem.
//
// COMMAND -> [command_id, label, image, enabled, checked].
// CHECK -> [command_id, label, image, enabled, checked].
// RADIO -> [command_id, label, image, enabled, checked, radio_group_id].
// SEPARATOR -> [separator_type].
// SUBMENU -> [command_id, label, image, enabled, submenu].
// ACTIONABLE_SUBMENU -> [command_id, label, image, enabled, submenu].
//
struct MenuItem {
MenuItemType type; // The type of the menu item.
int32 command_id; // The client's arbitrary item command id.
mojo_base.mojom.String16 label; // The string label, may be empty.
gfx.mojom.ImageSkia? image; // The image icon, may be null.
array<MenuItem>? submenu; // The optional nested submenu item list.
bool enabled; // The enabled state.
bool checked; // The checked state.
int64 radio_group_id; // The radio group id.
MenuSeparatorType separator_type; // The separator type.
};

View File

@ -0,0 +1,18 @@
# Copyright 2018 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.
mojom = "//ash/public/interfaces/menu.mojom"
public_headers = [
"//ui/base/models/menu_model.h",
"//ui/base/models/menu_separator_types.h",
]
traits_headers = [ "//ash/public/cpp/menu_struct_mojom_traits.h" ]
public_deps = [
"//ui/base",
"//ui/gfx/image/mojo:struct_traits",
]
type_mappings = [
"ash.mojom.MenuItemType=ui::MenuModel::ItemType",
"ash.mojom.MenuSeparatorType=ui::MenuSeparatorType",
]

View File

@ -0,0 +1,58 @@
// 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.
module ash.mojom;
// For GURL.
import "url/mojom/url.mojom";
// An exported object in ash which lets an ash consumer set a client interface.
interface NewWindowController {
SetClient(associated NewWindowClient client);
// TODO(crbug.com/755448): Remove this when the new shortcut viewer is
// enabled.
// Shows the keyboard shortcut overlay. TODO(mash): this calls the client
// function of the same name below, but it should be implemented inside ash.
ShowKeyboardOverlay();
};
// A delegate interface that an ash user sends to ash to handle certain window
// management responsibilities.
interface NewWindowClient {
// Invoked when the user uses Ctrl+T to open a new tab.
NewTab();
// Opens a new tab with the specified URL.
NewTabWithUrl(url.mojom.Url url);
// Invoked when the user uses Ctrl-N or Ctrl-Shift-N to open a new window.
NewWindow(bool incognito);
// Invoked when an accelerator is used to open the file manager.
OpenFileManager();
// Invoked when the user opens Crosh.
OpenCrosh();
// Invoked when an accelerator is used to open help center.
OpenGetHelp();
// Invoked when the user uses Shift+Ctrl+T to restore the closed tab.
RestoreTab();
// TODO(crbug.com/755448): Remove this when the new shortcut viewer is
// enabled.
// Shows the keyboard shortcut overlay.
ShowKeyboardOverlay();
// Show the keyboard shortcut viewer.
ShowKeyboardShortcutViewer();
// Shows the task manager window.
ShowTaskManager();
// Opens the feedback page for "Report Issue".
OpenFeedbackPage();
};

View File

@ -0,0 +1,52 @@
// Copyright 2017 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.
module ash.mojom;
// Represents a geolocation position fix. It's "simple" because it doesn't
// expose all the parameters of the position interface as defined by the
// Geolocation API Specification:
// (https://dev.w3.org/geo/api/spec-source.html#position_interface).
// The NightLightController is only interested in valid latitude and longitude.
// It also doesn't require any specific accuracy. The more accurate the
// positions, the more accurate sunset and sunrise times calculations. However,
// an IP-based geoposition is considered good enough.
struct SimpleGeoposition {
double latitude;
double longitude;
};
// Used by a client (e.g. Chrome) to provide the current user's geoposition.
interface NightLightController {
// These values are written to logs. New enum values can be added, but
// existing enums must never be renumbered or deleted and reused.
enum ScheduleType {
// Automatic toggling of NightLight is turned off.
kNone = 0,
// Turned automatically on at the user's local sunset time, and off at the
// user's local sunrise time.
kSunsetToSunrise = 1,
// Toggled automatically based on the custom set start and end times
// selected by the user from the system settings.
kCustom = 2,
};
// Sets the client that will be notified of changes in the Night Light
// schedule type.
SetClient(NightLightClient client);
// Provides the NightLightController with the user's geoposition so that it
// can calculate the sunset and sunrise times. This should only be called when
// the schedule type is set to "Sunset to Sunrise".
SetCurrentGeoposition(SimpleGeoposition position);
};
// Used by ash to notify a client (e.g. Chrome) of the changes in the Night
// Light schedule type.
interface NightLightClient {
// Notifies the client with the new schedule type whenever it changes.
OnScheduleTypeChanged(NightLightController.ScheduleType new_type);
};

View File

@ -0,0 +1,19 @@
// Copyright 2017 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.
module ash.mojom;
// Interface for ash client (e.g. Chrome) to connect to the note taking
// controller.
interface NoteTakingController {
// Sets the client interface.
SetClient(NoteTakingControllerClient client);
};
// Interface for ash to notify the client (e.g. Chrome) about the new note
// creation.
interface NoteTakingControllerClient {
// Called when the controller needs to create a new note.
CreateNote();
};

View File

@ -0,0 +1,24 @@
// Copyright 2017 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.
module ash.mojom;
import "components/account_id/interfaces/account_id.mojom";
import "services/preferences/public/mojom/preferences.mojom";
const string kPrefConnectorServiceName = "ash_pref_connector";
// A connector of PrefStoreConnectors. Provides ash with access to per-profile
// prefs.
interface PrefConnector {
// Provides a PrefStoreConnector for the signin screen profile prefs. Once
// connected the prefs continue to be available even after the user logs in.
GetPrefStoreConnectorForSigninScreen(
prefs.mojom.PrefStoreConnector& connector);
// Provides, via |connector|, a PrefStoreConnector for |account_id|. If
// |account_id| is invalid or unknown, |connector| will be closed.
GetPrefStoreConnectorForUser(signin.mojom.AccountId account_id,
prefs.mojom.PrefStoreConnector& connector);
};

View File

@ -0,0 +1,12 @@
// Copyright 2017 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.
module ash.mojom;
import "mojo/public/mojom/base/time.mojom";
interface ProcessCreationTimeRecorder {
// Sets the time the main process was created at, used for logging metrics.
SetMainProcessCreationTime(mojo_base.mojom.TimeTicks start_time);
};

View File

@ -0,0 +1,219 @@
// 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.
module ash.mojom;
import "ash/public/interfaces/user_info.mojom";
import "components/account_id/interfaces/account_id.mojom";
import "mojo/public/mojom/base/time.mojom";
// Matches session_manager::SessionState.
enum SessionState {
// Default value, when session state hasn't been initialized yet.
UNKNOWN,
// Running out of box UI.
OOBE,
// Running login UI (primary user) but user sign in hasn't completed yet.
LOGIN_PRIMARY,
// Running login UI (primary or secondary user), user sign in has been
// completed but login UI hasn't been hidden yet. This means that either
// some session initialization is happening or user has to go through some
// UI flow on the same login UI like select avatar, agree to terms of
// service etc.
LOGGED_IN_NOT_ACTIVE,
// A user(s) has logged in *and* login UI is hidden i.e. user session is
// not blocked.
ACTIVE,
// The session screen is locked.
LOCKED,
// Same as SESSION_STATE_LOGIN_PRIMARY but for multi-profiles sign in i.e.
// when there's at least one user already active in the session.
LOGIN_SECONDARY,
};
// Matches ash::CycleUserDirection.
enum CycleUserDirection {
NEXT, // Cycle to the next user.
PREVIOUS, // Cycle to the previous user.
};
// Info about a user session in ash. May be sent repeatedly for a single user
// because individual fields may change (e.g. the avatar image or custodians).
struct UserSession {
// A user session id for the user session. It is generated by session manager
// (chrome) when a user session starts and never changes during the lifetime
// of the session manager. The number starts at 1 for the first user session
// and incremented by one for each subsequent user session.
uint32 session_id;
// Contains general user information state, like the account id, display name,
// and avatar.
UserInfo user_info;
// For supervised users only, the email address of the custodian account.
// Empty for non-supervised users. Available after profile is loaded.
string custodian_email;
// For supervised users only, the email address of the second custodian
// account, if any. Available after profile is loaded.
string second_custodian_email;
// Whether the settings icon should be enabled in the system tray menu.
// Usually true after login, but can be false for specialized user sessions
// (e.g. adding supervised users).
bool should_enable_settings;
// Similar to |should_show_settings| but for the notification tray.
bool should_show_notification_tray;
};
// Matches ash::AddUserSessionPolicy.
enum AddUserSessionPolicy {
// Adding a user session is allowed.
ALLOWED,
// Disallowed due to primary user's policy.
ERROR_NOT_ALLOWED_PRIMARY_USER,
// Disallowed due to no eligible users.
ERROR_NO_ELIGIBLE_USERS,
// Disallowed due to reaching maximum supported user.
ERROR_MAXIMUM_USERS_REACHED,
};
// Info about an ash session.
struct SessionInfo {
// Whether the screen can be locked.
bool can_lock_screen;
// Whether the screen should be locked automatically before suspending.
bool should_lock_screen_automatically;
// Whether the session is in app mode, which includes a kiosk-like mode for
// fullscreen web content or running a single [forced] Chrome or ARC app.
bool is_running_in_app_mode;
// Whether the session is a demo session, which is an ephemeral session for
// Demo Mode.
bool is_demo_session;
// Sets whether adding a user session to ash is allowed.
AddUserSessionPolicy add_user_session_policy;
// Current state of the ash session.
SessionState state;
};
// Interface for ash client (e.g. Chrome) to set session info for ash.
interface SessionController {
// Sets the client interface.
SetClient(SessionControllerClient client);
// Sets the ash session info.
SetSessionInfo(SessionInfo info);
// Updates a user session. This is called when a user session is added or
// its meta data (e.g. name, avatar) is changed. There is no method to remove
// a user session because ash/chrome does not support that. All users are
// logged out at the same time.
UpdateUserSession(UserSession user_session);
// Sets the order of user sessions. The order is keyed by the session id.
// Currently, session manager set a LRU order with the first one being the
// active user session.
SetUserSessionOrder(array<uint32> user_session_ids);
// Prepares ash for lock screen. Currently this ensures the current active
// window could not be used to mimic the lock screen. Lock screen is created
// after this call returns.
PrepareForLock() => ();
// Runs the pre-lock animation to start locking ash. When the call returns,
// |locked| == true means that the ash post-lock animation is finished and ash
// is fully locked. Otherwise |locked| is false, which means something is
// wrong for the lock and ash is not locked. When the call returns with a true
// |locked|, screen locker runs the post lock jobs such as a11y announcement
// etc. Invoked by the screen locker during initialization.
StartLock() => (bool locked);
// Notifies ash that chrome lock animations are finished. This is the last
// event for locking. SessionController forwards it to PowerEventObserver.
NotifyChromeLockAnimationsComplete();
// Runs the pre-unlock animation. Invoked by the screen locker before
// dismissing. When the mojo call returns, screen locker takes that as a
// signal of finished unlock animation and dismisses itself.
RunUnlockAnimation() => ();
// Notifies that chrome is terminating.
NotifyChromeTerminating();
// Adds a countdown timer to the system tray menu and creates or updates a
// notification saying the session length is limited (e.g. a public session in
// a library). Setting |length_limit| to zero removes the notification.
// NOTE: Chrome enforces the limit, not ash. Ash could enforce it if local
// state prefs and user activity monitoring were available under mustash.
// http://crbug.com/729808
SetSessionLengthLimit(mojo_base.mojom.TimeDelta length_limit,
mojo_base.mojom.TimeTicks start_time);
// Returns whether it's ok to switch the active multiprofile user. May affect
// or be affected by system state such as window overview mode and screen
// casting.
CanSwitchActiveUser() => (bool can_switch);
// Shows a dialog to explain the implications of signing in multiple users.
// If |on_accept| is false, |permanently_accept| is ignored.
ShowMultiprofilesIntroDialog() => (bool on_accept, bool permanently_accept);
// Shows a dialog to confirm that the user wants to teleport a window to
// another desktop. If |on_accept| is false, |permanently_accept| is ignored.
ShowTeleportWarningDialog() => (bool on_accept, bool permanently_accept);
// Shows a dialog that explains that the given user is no longer allowed in
// the session due to a policy change, and aborts the session.
ShowMultiprofilesSessionAbortedDialog(string user_email);
// Adds session activation observer. The observer is called when session
// with |account_id| is becoming active or inactive. The observer is
// immediately called for upon registration with the current status.
AddSessionActivationObserverForAccountId(
signin.mojom.AccountId account_id, SessionActivationObserver observer);
};
// Interface for ash to request session service from its client (e.g. Chrome).
interface SessionControllerClient {
// Requests to lock screen.
RequestLockScreen();
// Requests signing out all users, ending the current session.
RequestSignOut();
// Switch to the active user with |account_id| (if the user has already signed
// in).
SwitchActiveUser(signin.mojom.AccountId account_id);
// Switch the active user to the next or previous user.
CycleActiveUser(CycleUserDirection direction);
// Show the multi-profile login UI to add another user to this session.
ShowMultiProfileLogin();
};
// Interface for ash to notify client of sessions status for a specific
// |account_id|.
interface SessionActivationObserver {
// Called the session is becoming active or inactive.
OnSessionActivated(bool activated);
// Called when lock screen state changes.
OnLockStateChanged(bool locked);
};

View File

@ -0,0 +1,18 @@
# 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.
mojom = "//ash/public/interfaces/session_controller.mojom"
public_headers = [
"//ash/public/cpp/session_types.h",
"//components/session_manager/session_manager_types.h",
]
traits_headers = [ "//ash/public/interfaces/session_controller_traits.h" ]
public_deps = [
"//components/session_manager:base",
]
type_mappings = [
"ash.mojom.AddUserSessionPolicy=ash::AddUserSessionPolicy",
"ash.mojom.CycleUserDirection=ash::CycleUserDirection",
"ash.mojom.SessionState=session_manager::SessionState",
]

View File

@ -0,0 +1,145 @@
// 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.
module ash.mojom;
import "ash/public/interfaces/menu.mojom";
import "mojo/public/mojom/base/string16.mojom";
import "ui/events/mojo/event.mojom";
import "ui/gfx/image/mojo/image.mojom";
// The actions that may be performed when a shelf item is selected.
// These values match ash::ShelfAction.
enum ShelfAction {
NONE, // No action was taken.
WINDOW_CREATED, // A new window was created.
WINDOW_ACTIVATED, // An existing inactive window was activated.
WINDOW_MINIMIZED, // The currently active window was minimized.
APP_LIST_SHOWN, // The app list launcher menu was shown.
};
// Represents the status of items in the shelf.
// These values match ash::ShelfItemStatus.
enum ShelfItemStatus {
CLOSED, // A closed shelf item, i.e. has no live instance.
RUNNING, // A shelf item that has live instance.
ATTENTION, // A shelf item that needs user's attention.
};
// The type of a shelf item.
// These values match ash::ShelfItemType.
enum ShelfItemType {
PINNED_APP, // A pinned app, which may be running or not.
APP_LIST, // An item that toggles visiblity of the app list.
BROWSER, // The browser shortcut, the browser may be running or not.
APP, // An unpinned running app window. Supports these app types:
// - Extension "V1" (legacy packaged and hosted) apps,
// - Extension "V2" (platform) apps,
// - ARC (App Runtime for Chrome - Android Play Store) apps.
DIALOG, // An open dialog.
BACK_BUTTON, // The back button, which is shown in tablet mode.
UNDEFINED, // Default value.
};
// Source of the launch or activation request, for tracking.
// These values match ash::ShelfLaunchSource.
enum ShelfLaunchSource {
UNKNOWN, // The item was launched from outside the app list.
APP_LIST, // The item was launched from a generic app list view.
APP_LIST_SEARCH, // The item was launched from an app list search view.
};
// The Shelf controller allows clients (eg. Chrome) to control the ash shelf.
interface ShelfController {
// Observers are immediately notified of the current shelf states when added.
AddObserver(associated ShelfObserver observer);
// Note: ShelfObservers are not notified of ShelfModel changes made by the
// ShelfItem functions below. Chrome is the solitary ShelfObserver and client
// of these functions, so notifications would be cyclical and problematic.
// Add |item| at |index|, which is clamped to be greater than 0 (AppList's
// index) and not exceeding the item count. Use a negative |index| to append.
AddShelfItem(int32 index, ShelfItem item);
// Remove the item with |id|. Bails if |id| is unknown or for the AppList.
RemoveShelfItem(ShelfID id);
// Moves item with |id| to |index|, which is in terms of the model after the
// item is removed, and is clamped to be greater than 0 (AppList's index) and
// not exceeding the item count. Bails if |id| is unknown or for the AppList.
MoveShelfItem(ShelfID id, int32 target_index);
// Updates |item| via ShelfID. Bails if the id is unknown or for the AppList.
// Clients may pass null images to signal no change and avoid transport costs.
UpdateShelfItem(ShelfItem item);
// Sets the |delegate| for the item with |id|.
SetShelfItemDelegate(ShelfID id, ShelfItemDelegate delegate);
};
// A Shelf observer, used to persist profile settings and cache a ShelfModel.
interface ShelfObserver {
// Called when the |item| has been added at |index|.
// This passes null images to avoid transport costs; clients don't use images.
OnShelfItemAdded(int32 index, ShelfItem item);
// Called when the item with |id| has been removed.
OnShelfItemRemoved(ShelfID id);
// Called when the item with |id| has been moved to |index|.
OnShelfItemMoved(ShelfID id, int32 index);
// Called when the |item| with matching ShelfID has been updated.
// This passes null images to avoid transport costs; clients don't use images.
OnShelfItemUpdated(ShelfItem item);
// Called when |delegate| for the item with |id| has been changed.
OnShelfItemDelegateChanged(ShelfID id, ShelfItemDelegate delegate);
};
// ShelfItemDelegate handles shelf item selection, menu command execution, etc.
interface ShelfItemDelegate {
// Called when the user selects a shelf item. The event, display, and source
// info should be provided if known; some implementations use these arguments.
// Defaults: (nullptr, kInvalidDisplayId, LAUNCH_FROM_UNKNOWN)
// The callback reports the action taken and any app menu items to show.
//
// NOTE: This codepath is not currently used for context menu triggering.
// TODO(crbug.com/691099): Remove |display_id| once panels are removed.
ItemSelected(ui.mojom.Event event,
int64 display_id,
ShelfLaunchSource source) => (ShelfAction action,
array<MenuItem>? menu_items);
// Called when spawning a shelf item context menu, returns custom menu items.
// TODO(mash): Clients should push context menu items to Ash's shelf model.
GetContextMenuItems(int64 display_id) => (array<MenuItem> items);
// Called on invocation of a shelf item's context or application menu command.
// |from_context_menu| is true if the command came from a context menu, or
// false if the command came from an application menu. If the |display_id| is
// unknown or irrelevant, callers may pass |display::kInvalidDisplayId|.
ExecuteCommand(bool from_context_menu,
int64 command_id,
int32 event_flags,
int64 display_id);
// Closes all windows associated with this shelf item.
Close();
};
// Identifier for shelf items and their windows.
// This structure matches ash::ShelfID.
struct ShelfID {
string app_id; // An app id string, used to match app windows.
// (eg. extension ids, arc ids, "AppList", etc.)
string launch_id; // A string used to support multiple items per app.
// (eg. Citrix may use 'Word' or 'Excel' launch ids)
};
// ShelfItems are used to populate the shelf.
// This structure matches ash::ShelfItem.
struct ShelfItem {
ShelfItemType type; // The type of the shelf item.
gfx.mojom.ImageSkia? image; // The icon shown on the shelf; null for updates
// with no icon change, null for ShelfObservers.
ShelfItemStatus status; // The running/closed/etc. status of the item.
ShelfID shelf_id; // The id for the shelf item and its windows.
mojo_base.mojom.String16 title; // The title to display for tooltips, etc.
bool pinned_by_policy; // Whether the item is pinned by policy prefs,
// the user cannot un-pin these items.
};

View File

@ -0,0 +1,27 @@
# 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.
mojom = "//ash/public/interfaces/shelf.mojom"
public_headers = [
"//ash/public/cpp/shelf_item.h",
"//ash/public/cpp/shelf_types.h",
"//ui/base/models/menu_model.h",
]
traits_headers = [ "//ash/public/cpp/shelf_struct_mojom_traits.h" ]
sources = [
"//ash/public/cpp/shelf_struct_mojom_traits.cc",
]
public_deps = [
"//ui/gfx/image/mojo:struct_traits",
]
type_mappings = [
"ash.mojom.ShelfAction=ash::ShelfAction",
"ash.mojom.ShelfAlignment=ash::ShelfAlignment",
"ash.mojom.ShelfAutoHideBehavior=ash::ShelfAutoHideBehavior",
"ash.mojom.ShelfID=ash::ShelfID",
"ash.mojom.ShelfItem=ash::ShelfItem",
"ash.mojom.ShelfItemStatus=ash::ShelfItemStatus",
"ash.mojom.ShelfItemType=ash::ShelfItemType",
"ash.mojom.ShelfLaunchSource=ash::ShelfLaunchSource",
]

View File

@ -0,0 +1,22 @@
// Copyright 2017 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.
module ash.mojom;
// All methods operate on the shelf on the primary display.
interface ShelfTestApi {
// Returns true if the shelf is visible (e.g. not auto-hidden).
IsVisible() => (bool visible);
// Forces a visibility update and then runs the callback.
UpdateVisibility() => ();
// Returns true if a window is overlapping the shelf, which changes its
// appearance slightly.
HasOverlappingWindow() => (bool overlap);
// Returns true if the shelf alignment is BOTTOM_LOCKED, which is not exposed
// via prefs.
IsAlignmentBottomLocked() => (bool locked);
};

View File

@ -0,0 +1,14 @@
// Copyright 2017 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.
module ash.mojom;
interface ShellTestApi {
// Returns true if a system modal window is open (e.g. the Wi-Fi network
// password dialog).
IsSystemModalWindowOpen() => (bool visible);
// Enables or disables the tablet mode window manager.
EnableTabletModeWindowManager(bool enable);
};

View File

@ -0,0 +1,18 @@
// 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.
module ash.mojom;
// Interface implemented by ash and used by chrome to provide shutdown policy
// information. Exists because device policy is owned by chrome, not ash.
interface ShutdownController {
// Sets a boolean pref that indicates whether the device automatically reboots
// when the user initiates a shutdown via an UI element. Used in enterprise
// environments for devices that should not be shut down.
SetRebootOnShutdown(bool reboot_on_shutdown);
// Triggers an animated shutdown after the login screen shutdown button was
// pressed.
RequestShutdownFromLoginScreen();
};

View File

@ -0,0 +1,24 @@
// Copyright 2018 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.
module ash.mojom;
enum SplitViewState {
NO_SNAP,
LEFT_SNAPPED,
RIGHT_SNAPPED,
BOTH_SNAPPED,
};
// Used to listen for split view state changes.
interface SplitViewObserver {
OnSplitViewStateChanged(SplitViewState current_state);
};
// The split view controller that allows clients (Chrome) to observe the split
// view state changes.
interface SplitViewController {
// Adds an observer.
AddObserver(SplitViewObserver observer);
};

View File

@ -0,0 +1,14 @@
// Copyright 2018 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.
module ash.mojom;
import "mojo/public/mojom/base/string16.mojom";
import "ui/gfx/geometry/mojo/geometry.mojom";
// All methods operate on the status area tray on the primary display.
interface StatusAreaWidgetTestApi {
// Taps on the Select-to-Speak tray and then runs the callback.
TapSelectToSpeakTray() => ();
};

Some files were not shown because too many files have changed in this diff Show More