Compare commits
	
		
			1 Commits
		
	
	
		
			drop-porta
			...
			wip/fmuell
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					035dfe2a19 | 
@@ -1,3 +0,0 @@
 | 
			
		||||
extends:
 | 
			
		||||
 - ./lint/eslintrc-gjs.yml
 | 
			
		||||
 - ./lint/eslintrc-shell.yml
 | 
			
		||||
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -21,8 +21,6 @@ data/org.gnome.shell.gschema.valid
 | 
			
		||||
data/org.gnome.Shell.PortalHelper.desktop
 | 
			
		||||
data/org.gnome.Shell.PortalHelper.service
 | 
			
		||||
data/theme/.sass-cache
 | 
			
		||||
data/theme/gnome-shell*.css.map
 | 
			
		||||
data/theme/gnome-shell*.css
 | 
			
		||||
docs/reference/*/*.args
 | 
			
		||||
docs/reference/*/*.bak
 | 
			
		||||
docs/reference/*/*.hierarchy
 | 
			
		||||
@@ -82,4 +80,3 @@ tests/run-test.sh
 | 
			
		||||
*~
 | 
			
		||||
*.patch
 | 
			
		||||
*.sw?
 | 
			
		||||
.vscode
 | 
			
		||||
 
 | 
			
		||||
@@ -1,98 +0,0 @@
 | 
			
		||||
stages:
 | 
			
		||||
 - review
 | 
			
		||||
 - build
 | 
			
		||||
 - test
 | 
			
		||||
 | 
			
		||||
variables:
 | 
			
		||||
    JS_LOG: "js-report.txt"
 | 
			
		||||
    POT_LOG: "pot-update.txt"
 | 
			
		||||
 | 
			
		||||
.only_default: &only_default
 | 
			
		||||
    only:
 | 
			
		||||
        - branches
 | 
			
		||||
        - tags
 | 
			
		||||
        - merge_requests
 | 
			
		||||
 | 
			
		||||
check_commit_log:
 | 
			
		||||
    image: registry.gitlab.gnome.org/gnome/mutter/master:v3
 | 
			
		||||
    stage: review
 | 
			
		||||
    variables:
 | 
			
		||||
        GIT_DEPTH: "100"
 | 
			
		||||
    script:
 | 
			
		||||
        - ./.gitlab-ci/check-commit-log.sh
 | 
			
		||||
    only:
 | 
			
		||||
        - merge_requests
 | 
			
		||||
 | 
			
		||||
js_check:
 | 
			
		||||
    image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v1
 | 
			
		||||
    stage: review
 | 
			
		||||
    script:
 | 
			
		||||
        - find js -name '*.js' -exec js60 -c -s '{}' ';' 2>&1 | tee $JS_LOG
 | 
			
		||||
        - (! grep -q . $JS_LOG)
 | 
			
		||||
    <<: *only_default
 | 
			
		||||
    artifacts:
 | 
			
		||||
        paths:
 | 
			
		||||
            - ${JS_LOG}
 | 
			
		||||
        when: on_failure
 | 
			
		||||
 | 
			
		||||
eslint:
 | 
			
		||||
    image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v1
 | 
			
		||||
    stage: review
 | 
			
		||||
    script:
 | 
			
		||||
        - ./.gitlab-ci/run-eslint.sh
 | 
			
		||||
    <<: *only_default
 | 
			
		||||
    artifacts:
 | 
			
		||||
        paths:
 | 
			
		||||
            - reports
 | 
			
		||||
        when: always
 | 
			
		||||
 | 
			
		||||
build:
 | 
			
		||||
    image: registry.gitlab.gnome.org/gnome/mutter/master:v3
 | 
			
		||||
    stage: build
 | 
			
		||||
    before_script:
 | 
			
		||||
        - .gitlab-ci/checkout-mutter.sh
 | 
			
		||||
        - meson mutter mutter/build --prefix=/usr -Dtests=false
 | 
			
		||||
        - ninja -C mutter/build install
 | 
			
		||||
    script:
 | 
			
		||||
        - meson . build -Dbuiltype=debugoptimized -Dman=false --werror
 | 
			
		||||
        - ninja -C build
 | 
			
		||||
        - ninja -C build install
 | 
			
		||||
    <<: *only_default
 | 
			
		||||
    artifacts:
 | 
			
		||||
        expire_in: 1 day
 | 
			
		||||
        paths:
 | 
			
		||||
            - mutter
 | 
			
		||||
            - build
 | 
			
		||||
 | 
			
		||||
test:
 | 
			
		||||
    image: registry.gitlab.gnome.org/gnome/mutter/master:v3
 | 
			
		||||
    stage: test
 | 
			
		||||
    variables:
 | 
			
		||||
        XDG_RUNTIME_DIR: "$CI_PROJECT_DIR/runtime-dir"
 | 
			
		||||
        NO_AT_BRIDGE: "1"
 | 
			
		||||
    before_script:
 | 
			
		||||
        - ninja -C mutter/build install
 | 
			
		||||
    script:
 | 
			
		||||
        - dbus-run-session -- xvfb-run meson test -C build --no-rebuild
 | 
			
		||||
    <<: *only_default
 | 
			
		||||
    artifacts:
 | 
			
		||||
        expire_in: 1 day
 | 
			
		||||
        paths:
 | 
			
		||||
            - build/meson-logs/testlog.txt
 | 
			
		||||
        when: on_failure
 | 
			
		||||
 | 
			
		||||
test-pot:
 | 
			
		||||
    image: registry.gitlab.gnome.org/gnome/mutter/master:v3
 | 
			
		||||
    stage: test
 | 
			
		||||
    before_script:
 | 
			
		||||
        - ninja -C mutter/build install
 | 
			
		||||
    script:
 | 
			
		||||
        # Check that pot files are generated correctly:
 | 
			
		||||
        # https://savannah.gnu.org/bugs/?50920#comment5
 | 
			
		||||
        - ninja -C build gnome-shell-pot 2>&1 | awk '
 | 
			
		||||
            BEGIN { start=0; }
 | 
			
		||||
            start==1 { print $0; }
 | 
			
		||||
            /gnome-shell-pot/ { start=1; }
 | 
			
		||||
          ' | tee $POT_LOG
 | 
			
		||||
        - (! grep -q . $POT_LOG)
 | 
			
		||||
    <<: *only_default
 | 
			
		||||
@@ -1,18 +0,0 @@
 | 
			
		||||
FROM registry.fedoraproject.org/fedora:latest
 | 
			
		||||
 | 
			
		||||
RUN dnf -y update && dnf -y upgrade && \
 | 
			
		||||
    dnf install -y 'dnf-command(copr)' git && \
 | 
			
		||||
 | 
			
		||||
    # For syntax checks with `find . -name '*.js' -exec js60 -c -s '{}' ';'`
 | 
			
		||||
    dnf install -y findutils mozjs60-devel && \
 | 
			
		||||
 | 
			
		||||
    # For static analysis with eslint
 | 
			
		||||
    dnf install -y nodejs && \
 | 
			
		||||
    npm install -g eslint && \
 | 
			
		||||
 | 
			
		||||
    # Shameless plug for my own tooling; useful for generating zip
 | 
			
		||||
    dnf copr enable -y fmuellner/gnome-shell-ci && \
 | 
			
		||||
    dnf install -y gnome-extensions-tool meson && \
 | 
			
		||||
 | 
			
		||||
    dnf clean all && \
 | 
			
		||||
    rm -rf /var/cache/dnf
 | 
			
		||||
@@ -1,31 +0,0 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
if [ -z "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then
 | 
			
		||||
  echo Cannot review non-merge request
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
git fetch $CI_MERGE_REQUEST_PROJECT_URL.git $CI_MERGE_REQUEST_TARGET_BRANCH_NAME
 | 
			
		||||
 | 
			
		||||
branch_point=$(git merge-base HEAD FETCH_HEAD)
 | 
			
		||||
 | 
			
		||||
commits=$(git log --format='format:%H' $branch_point..$CI_COMMIT_SHA)
 | 
			
		||||
 | 
			
		||||
if [ -z "$commits" ]; then
 | 
			
		||||
  echo Commit range empty
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
function commit_message_has_url() {
 | 
			
		||||
  commit=$1
 | 
			
		||||
  commit_message=$(git show -s --format='format:%b' $commit)
 | 
			
		||||
  echo "$commit_message" | grep -qe "\($CI_MERGE_REQUEST_PROJECT_URL/\(issues\|merge_requests\)/[0-9]\+\|https://bugzilla.gnome.org/show_bug.cgi?id=[0-9]\+\)"
 | 
			
		||||
  return $?
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
for commit in $commits; do
 | 
			
		||||
  if ! commit_message_has_url $commit; then
 | 
			
		||||
    echo "Missing merge request or issue URL on commit $(echo $commit | cut -c -8)"
 | 
			
		||||
    exit 1
 | 
			
		||||
  fi
 | 
			
		||||
done
 | 
			
		||||
@@ -1,33 +0,0 @@
 | 
			
		||||
#!/usr/bin/bash
 | 
			
		||||
 | 
			
		||||
mutter_target=
 | 
			
		||||
 | 
			
		||||
git clone https://gitlab.gnome.org/GNOME/mutter.git
 | 
			
		||||
 | 
			
		||||
if [ $? -ne 0 ]; then
 | 
			
		||||
  echo Checkout failed
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
cd mutter
 | 
			
		||||
 | 
			
		||||
if [ "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then
 | 
			
		||||
  merge_request_remote=${CI_MERGE_REQUEST_SOURCE_PROJECT_URL//gnome-shell/mutter}
 | 
			
		||||
  merge_request_branch=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME
 | 
			
		||||
 | 
			
		||||
  echo Looking for $merge_request_branch on remote ...
 | 
			
		||||
  if git fetch -q $merge_request_remote $merge_request_branch 2>/dev/null; then
 | 
			
		||||
    mutter_target=FETCH_HEAD
 | 
			
		||||
  else
 | 
			
		||||
    mutter_target=origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME
 | 
			
		||||
    echo Using $mutter_target instead
 | 
			
		||||
  fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -z "$mutter_target" ]; then
 | 
			
		||||
  mutter_target=$(git branch -r -l origin/$CI_COMMIT_REF_NAME)
 | 
			
		||||
  mutter_target=${mutter_target:-origin/master}
 | 
			
		||||
  echo Using $mutter_target instead
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
git checkout -q $mutter_target
 | 
			
		||||
@@ -1,114 +0,0 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
OUTPUT_REGULAR=reports/lint-regular-report.txt
 | 
			
		||||
OUTPUT_LEGACY=reports/lint-legacy-report.txt
 | 
			
		||||
OUTPUT_FINAL=reports/lint-common-report.txt
 | 
			
		||||
 | 
			
		||||
OUTPUT_MR=reports/lint-mr-report.txt
 | 
			
		||||
 | 
			
		||||
LINE_CHANGES=changed-lines.txt
 | 
			
		||||
 | 
			
		||||
is_empty() {
 | 
			
		||||
  (! grep -q . $1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
run_eslint() {
 | 
			
		||||
  ARGS_LEGACY='--config lint/eslintrc-legacy.yml'
 | 
			
		||||
 | 
			
		||||
  local extra_args=ARGS_$1
 | 
			
		||||
  local output_var=OUTPUT_$1
 | 
			
		||||
  local output=${!output_var}
 | 
			
		||||
 | 
			
		||||
  # ensure output exists even if eslint doesn't report any errors
 | 
			
		||||
  mkdir -p $(dirname $output)
 | 
			
		||||
  touch $output
 | 
			
		||||
 | 
			
		||||
  eslint -f unix ${!extra_args} -o $output js
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
list_commit_range_additions() {
 | 
			
		||||
  # Turn raw context-less git-diff into a list of
 | 
			
		||||
  # filename:lineno pairs of new (+) lines
 | 
			
		||||
  git diff -U0 "$@" -- js |
 | 
			
		||||
  awk '
 | 
			
		||||
    BEGIN { file=""; }
 | 
			
		||||
    /^+++ b/ { file=substr($0,7); }
 | 
			
		||||
    /^@@ / {
 | 
			
		||||
        len = split($3,a,",")
 | 
			
		||||
        start=a[1]
 | 
			
		||||
        count=(len > 1) ? a[2] : 1
 | 
			
		||||
 | 
			
		||||
        for (line=start; line<start+count; line++)
 | 
			
		||||
            printf "%s/%s:%d:\n",ENVIRON["PWD"],file,line;
 | 
			
		||||
    }'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
copy_matched_lines() {
 | 
			
		||||
  local source=$1
 | 
			
		||||
  local matches=$2
 | 
			
		||||
  local target=$3
 | 
			
		||||
 | 
			
		||||
  echo -n > $target
 | 
			
		||||
  for l in $(<$matches); do
 | 
			
		||||
    grep $l $source >> $target
 | 
			
		||||
  done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
create_common() {
 | 
			
		||||
  # comm requires sorted input;
 | 
			
		||||
  # we also strip the error message to make the following a "common" error:
 | 
			
		||||
  # regular:
 | 
			
		||||
  #  file.js:42:23 Indentation of 55, expected 42
 | 
			
		||||
  # legacy:
 | 
			
		||||
  #  file.js:42:23 Indentation of 55, extected 24
 | 
			
		||||
  prepare() {
 | 
			
		||||
    sed 's: .*::' $1 | sort
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  comm -12 <(prepare $OUTPUT_REGULAR) <(prepare $OUTPUT_LEGACY) >$OUTPUT_FINAL.tmp
 | 
			
		||||
 | 
			
		||||
  # Now add back the stripped error messages
 | 
			
		||||
  copy_matched_lines $OUTPUT_REGULAR $OUTPUT_FINAL.tmp $OUTPUT_FINAL
 | 
			
		||||
  rm $OUTPUT_FINAL.tmp
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Disable MR handling for now. We aren't ready to enforce
 | 
			
		||||
# non-legacy style just yet ...
 | 
			
		||||
unset CI_MERGE_REQUEST_TARGET_BRANCH_NAME
 | 
			
		||||
 | 
			
		||||
REMOTE=${1:-$CI_MERGE_REQUEST_PROJECT_URL.git}
 | 
			
		||||
BRANCH_NAME=${2:-$CI_MERGE_REQUEST_TARGET_BRANCH_NAME}
 | 
			
		||||
 | 
			
		||||
if [ "$BRANCH_NAME" ]; then
 | 
			
		||||
  git fetch $REMOTE $BRANCH_NAME
 | 
			
		||||
  branch_point=$(git merge-base HEAD FETCH_HEAD)
 | 
			
		||||
  commit_range=$branch_point...HEAD
 | 
			
		||||
 | 
			
		||||
  list_commit_range_additions $commit_range > $LINE_CHANGES
 | 
			
		||||
 | 
			
		||||
  # Don't bother with running lint when no JS changed
 | 
			
		||||
  if is_empty $LINE_CHANGES; then
 | 
			
		||||
    exit 0
 | 
			
		||||
  fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo Generating lint report using regular configuration
 | 
			
		||||
run_eslint REGULAR
 | 
			
		||||
echo Generating lint report using legacy configuration
 | 
			
		||||
run_eslint LEGACY
 | 
			
		||||
echo Done.
 | 
			
		||||
create_common
 | 
			
		||||
 | 
			
		||||
if ! is_empty $OUTPUT_FINAL; then
 | 
			
		||||
  cat $OUTPUT_FINAL
 | 
			
		||||
  exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Just show the report and succeed when not testing a MR
 | 
			
		||||
if [ -z "$BRANCH_NAME" ]; then
 | 
			
		||||
  exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
copy_matched_lines $OUTPUT_REGULAR $LINE_CHANGES $OUTPUT_MR
 | 
			
		||||
cat $OUTPUT_MR
 | 
			
		||||
is_empty $OUTPUT_MR
 | 
			
		||||
@@ -1,55 +0,0 @@
 | 
			
		||||
<!-- 
 | 
			
		||||
Please read https://wiki.gnome.org/Community/GettingInTouch/BugReportingGuidelines
 | 
			
		||||
first to ensure that you create a clear and specific issue.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
### Affected version
 | 
			
		||||
 | 
			
		||||
<!--
 | 
			
		||||
Provide at least the following information:
 | 
			
		||||
* Your OS and version
 | 
			
		||||
* Affected GNOME Shell version
 | 
			
		||||
* Does this issue appear in XOrg and/or Wayland
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
### Bug summary
 | 
			
		||||
 | 
			
		||||
<!-- 
 | 
			
		||||
Provide a short summary of the bug you encountered.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
### Steps to reproduce
 | 
			
		||||
 | 
			
		||||
<!-- 
 | 
			
		||||
1. Step one
 | 
			
		||||
2. Step two
 | 
			
		||||
3. ...
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
### What happened
 | 
			
		||||
 | 
			
		||||
<!-- 
 | 
			
		||||
What did GNOME Shell do that was unexpected?
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
### What did you expect to happen
 | 
			
		||||
 | 
			
		||||
<!-- 
 | 
			
		||||
What did you expect GNOME Shell to do?
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
### Relevant logs, screenshots, screencasts etc.
 | 
			
		||||
 | 
			
		||||
<!-- 
 | 
			
		||||
If you have further information, such as technical documentation, logs,
 | 
			
		||||
screenshots or screencasts related, please provide them here.
 | 
			
		||||
 | 
			
		||||
If the bug is a crash, please obtain a stack trace with installed debug
 | 
			
		||||
symbols (at least for GNOME Shell and Mutter) and attach it to
 | 
			
		||||
this issue following the instructions on
 | 
			
		||||
https://wiki.gnome.org/Community/GettingInTouch/Bugzilla/GettingTraces.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<!-- Do not remove the following line. -->
 | 
			
		||||
/label ~"1. Bug"
 | 
			
		||||
@@ -1,30 +0,0 @@
 | 
			
		||||
<!-- 
 | 
			
		||||
Please read https://wiki.gnome.org/Community/GettingInTouch/BugReportingGuidelines
 | 
			
		||||
first to ensure that you create a clear and specific issue.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
### Feature summary
 | 
			
		||||
 | 
			
		||||
<!-- 
 | 
			
		||||
Describe what you would like to be able to do with GNOME Shell
 | 
			
		||||
that you currently cannot do.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
### How would you like it to work
 | 
			
		||||
 | 
			
		||||
<!-- 
 | 
			
		||||
If you can think of a way GNOME Shell might be able to do this,
 | 
			
		||||
let us know here.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
### Relevant links, screenshots, screencasts etc.
 | 
			
		||||
 | 
			
		||||
<!-- 
 | 
			
		||||
If you have further information, such as technical documentation,
 | 
			
		||||
code, mockups or a similar feature in another desktop environments,
 | 
			
		||||
please provide them here.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<!-- Do not remove the following line. -->
 | 
			
		||||
/label ~"1. Feature"
 | 
			
		||||
							
								
								
									
										2
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							@@ -1,3 +1,3 @@
 | 
			
		||||
[submodule "subprojects/gvc"]
 | 
			
		||||
	path = subprojects/gvc
 | 
			
		||||
	url = https://gitlab.gnome.org/GNOME/libgnome-volume-control.git
 | 
			
		||||
	url = https://git.gnome.org/browse/libgnome-volume-control
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										31
									
								
								.project
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								.project
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<projectDescription>
 | 
			
		||||
	<name>gnome-shell</name>
 | 
			
		||||
	<comment></comment>
 | 
			
		||||
	<projects>
 | 
			
		||||
	</projects>
 | 
			
		||||
	<buildSpec>
 | 
			
		||||
		<buildCommand>
 | 
			
		||||
			<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
 | 
			
		||||
			<arguments>
 | 
			
		||||
			</arguments>
 | 
			
		||||
		</buildCommand>
 | 
			
		||||
		<buildCommand>
 | 
			
		||||
			<name>org.eclipse.linuxtools.cdt.autotools.genmakebuilder</name>
 | 
			
		||||
			<arguments>
 | 
			
		||||
			</arguments>
 | 
			
		||||
		</buildCommand>
 | 
			
		||||
		<buildCommand>
 | 
			
		||||
			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
 | 
			
		||||
			<arguments>
 | 
			
		||||
			</arguments>
 | 
			
		||||
		</buildCommand>
 | 
			
		||||
	</buildSpec>
 | 
			
		||||
	<natures>
 | 
			
		||||
		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
 | 
			
		||||
		<nature>org.eclipse.linuxtools.cdt.autotools.autotoolsNature</nature>
 | 
			
		||||
		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
 | 
			
		||||
		<nature>org.eclipse.cdt.core.cnature</nature>
 | 
			
		||||
		<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
 | 
			
		||||
	</natures>
 | 
			
		||||
</projectDescription>
 | 
			
		||||
							
								
								
									
										148
									
								
								.settings/org.eclipse.cdt.core.prefs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										148
									
								
								.settings/org.eclipse.cdt.core.prefs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,148 @@
 | 
			
		||||
#Fri Nov 28 14:33:30 EST 2008
 | 
			
		||||
eclipse.preferences.version=1
 | 
			
		||||
org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation=16
 | 
			
		||||
org.eclipse.cdt.core.formatter.alignment_for_base_clause_in_type_declaration=80
 | 
			
		||||
org.eclipse.cdt.core.formatter.alignment_for_compact_if=0
 | 
			
		||||
org.eclipse.cdt.core.formatter.alignment_for_conditional_expression=80
 | 
			
		||||
org.eclipse.cdt.core.formatter.alignment_for_declarator_list=16
 | 
			
		||||
org.eclipse.cdt.core.formatter.alignment_for_enumerator_list=48
 | 
			
		||||
org.eclipse.cdt.core.formatter.alignment_for_expression_list=0
 | 
			
		||||
org.eclipse.cdt.core.formatter.alignment_for_expressions_in_array_initializer=16
 | 
			
		||||
org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration=16
 | 
			
		||||
org.eclipse.cdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
 | 
			
		||||
org.eclipse.cdt.core.formatter.brace_position_for_array_initializer=next_line_shifted
 | 
			
		||||
org.eclipse.cdt.core.formatter.brace_position_for_block=next_line_shifted
 | 
			
		||||
org.eclipse.cdt.core.formatter.brace_position_for_block_in_case=next_line_shifted
 | 
			
		||||
org.eclipse.cdt.core.formatter.brace_position_for_method_declaration=next_line
 | 
			
		||||
org.eclipse.cdt.core.formatter.brace_position_for_namespace_declaration=next_line
 | 
			
		||||
org.eclipse.cdt.core.formatter.brace_position_for_switch=next_line_shifted
 | 
			
		||||
org.eclipse.cdt.core.formatter.brace_position_for_type_declaration=next_line
 | 
			
		||||
org.eclipse.cdt.core.formatter.compact_else_if=true
 | 
			
		||||
org.eclipse.cdt.core.formatter.continuation_indentation=2
 | 
			
		||||
org.eclipse.cdt.core.formatter.continuation_indentation_for_array_initializer=2
 | 
			
		||||
org.eclipse.cdt.core.formatter.format_guardian_clause_on_one_line=false
 | 
			
		||||
org.eclipse.cdt.core.formatter.indent_access_specifier_compare_to_type_header=false
 | 
			
		||||
org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_access_specifier=true
 | 
			
		||||
org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_namespace_header=true
 | 
			
		||||
org.eclipse.cdt.core.formatter.indent_breaks_compare_to_cases=true
 | 
			
		||||
org.eclipse.cdt.core.formatter.indent_declaration_compare_to_template_header=true
 | 
			
		||||
org.eclipse.cdt.core.formatter.indent_empty_lines=false
 | 
			
		||||
org.eclipse.cdt.core.formatter.indent_statements_compare_to_block=true
 | 
			
		||||
org.eclipse.cdt.core.formatter.indent_statements_compare_to_body=true
 | 
			
		||||
org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_cases=true
 | 
			
		||||
org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_switch=false
 | 
			
		||||
org.eclipse.cdt.core.formatter.indentation.size=8
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_new_line_after_template_declaration=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_new_line_before_else_in_if_statement=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_new_line_before_identifier_in_function_declaration=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_new_line_before_while_in_do_statement=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_new_line_in_empty_block=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_assignment_operator=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_binary_operator=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_arguments=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_parameters=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_closing_brace_in_block=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_base_clause=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_case=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_conditional=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_base_types=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_declarator_list=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_expression_list=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_arguments=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_parameters=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_arguments=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_parameters=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_bracket=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_postfix_operator=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_prefix_operator=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_question_in_conditional=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_semicolon_in_for=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_after_unary_operator=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_assignment_operator=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_binary_operator=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_arguments=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_parameters=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_bracket=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_base_clause=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_case=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_conditional=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_default=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_base_types=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_declarator_list=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_expression_list=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_arguments=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_parameters=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_arguments=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_parameters=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_block=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_namespace_declaration=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_bracket=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_for=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_if=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_while=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_postfix_operator=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_prefix_operator=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_question_in_conditional=insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_semicolon=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_before_unary_operator=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_between_empty_brackets=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
 | 
			
		||||
org.eclipse.cdt.core.formatter.keep_else_statement_on_same_line=false
 | 
			
		||||
org.eclipse.cdt.core.formatter.keep_empty_array_initializer_on_one_line=false
 | 
			
		||||
org.eclipse.cdt.core.formatter.keep_imple_if_on_one_line=false
 | 
			
		||||
org.eclipse.cdt.core.formatter.keep_then_statement_on_same_line=false
 | 
			
		||||
org.eclipse.cdt.core.formatter.lineSplit=80
 | 
			
		||||
org.eclipse.cdt.core.formatter.number_of_empty_lines_to_preserve=1
 | 
			
		||||
org.eclipse.cdt.core.formatter.put_empty_statement_on_new_line=true
 | 
			
		||||
org.eclipse.cdt.core.formatter.tabulation.char=space
 | 
			
		||||
org.eclipse.cdt.core.formatter.tabulation.size=2
 | 
			
		||||
org.eclipse.cdt.core.formatter.use_tabs_only_for_leading_indentations=false
 | 
			
		||||
							
								
								
									
										4
									
								
								.settings/org.eclipse.cdt.ui.prefs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								.settings/org.eclipse.cdt.ui.prefs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
#Fri Nov 28 14:33:30 EST 2008
 | 
			
		||||
eclipse.preferences.version=1
 | 
			
		||||
formatter_profile=org.eclipse.cdt.ui.default.gnu_profile
 | 
			
		||||
formatter_settings_version=1
 | 
			
		||||
							
								
								
									
										315
									
								
								.settings/org.eclipse.wst.jsdt.core.prefs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										315
									
								
								.settings/org.eclipse.wst.jsdt.core.prefs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,315 @@
 | 
			
		||||
#Fri Nov 28 14:43:43 EST 2008
 | 
			
		||||
eclipse.preferences.version=1
 | 
			
		||||
org.eclipse.wst.jsdt.core.codeComplete.argumentPrefixes=
 | 
			
		||||
org.eclipse.wst.jsdt.core.codeComplete.argumentSuffixes=
 | 
			
		||||
org.eclipse.wst.jsdt.core.codeComplete.fieldPrefixes=
 | 
			
		||||
org.eclipse.wst.jsdt.core.codeComplete.fieldSuffixes=
 | 
			
		||||
org.eclipse.wst.jsdt.core.codeComplete.localPrefixes=
 | 
			
		||||
org.eclipse.wst.jsdt.core.codeComplete.localSuffixes=
 | 
			
		||||
org.eclipse.wst.jsdt.core.codeComplete.staticFieldPrefixes=
 | 
			
		||||
org.eclipse.wst.jsdt.core.codeComplete.staticFieldSuffixes=
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.codegen.inlineJsrBytecode=disabled
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.codegen.targetPlatform=1.2
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.codegen.unusedLocal=preserve
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.compliance=1.4
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.debug.lineNumber=generate
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.debug.localVariable=generate
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.debug.sourceFile=generate
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.assertIdentifier=warning
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.deprecation=warning
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.discouragedReference=warning
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.emptyStatement=ignore
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.enumIdentifier=warning
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.fallthroughCase=ignore
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.fieldHiding=ignore
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.forbiddenReference=ignore
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.hiddenCatchBlock=warning
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.indirectStaticAccess=ignore
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.localVariableHiding=ignore
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.looseVarDecleration=warning
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.noEffectAssignment=warning
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.nullReference=ignore
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.optionalSemicolon=warning
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.parameterAssignment=ignore
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.potentialNullReference=ignore
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.redundantNullCheck=ignore
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.undefinedField=warning
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.undocumentedEmptyBlock=ignore
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.unnecessaryElse=ignore
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.unresolvedFieldReference=ignore
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.unresolvedMethodReference=ignore
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.unresolvedTypeReference=ignore
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.unusedLabel=warning
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.unusedLocal=warning
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.unusedParameter=ignore
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.problem.unusedPrivateMember=warning
 | 
			
		||||
org.eclipse.wst.jsdt.core.compiler.source=1.3
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.align_type_members_on_columns=false
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_enum_constant=16
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_method_invocation=16
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.alignment_for_assignment=0
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.alignment_for_binary_expression=16
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.alignment_for_compact_if=16
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.alignment_for_conditional_expression=80
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.alignment_for_enum_constants=0
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.alignment_for_expressions_in_array_initializer=16
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.alignment_for_multiple_fields=16
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.alignment_for_parameters_in_method_declaration=16
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.alignment_for_selector_in_method_invocation=16
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.alignment_for_superclass_in_type_declaration=16
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.blank_lines_after_imports=1
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.blank_lines_after_package=1
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_field=0
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_first_class_body_declaration=0
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_imports=1
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_member_type=1
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_method=1
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_new_chunk=1
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.blank_lines_before_package=0
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.blank_lines_between_import_groups=1
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.blank_lines_between_type_declarations=0
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.brace_position_for_array_initializer=end_of_line
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.brace_position_for_block=end_of_line
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.brace_position_for_block_in_case=end_of_line
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.brace_position_for_enum_constant=end_of_line
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.brace_position_for_enum_declaration=end_of_line
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.brace_position_for_method_declaration=end_of_line
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.brace_position_for_objlit_initializer=end_of_line
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.brace_position_for_switch=end_of_line
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.brace_position_for_type_declaration=end_of_line
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.comment.format_block_comments=true
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.comment.format_header=false
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.comment.format_html=true
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.comment.format_javadoc_comments=true
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.comment.format_line_comments=true
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.comment.format_source_code=true
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.comment.indent_parameter_description=true
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.comment.indent_root_tags=true
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.comment.insert_new_line_before_root_tags=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.comment.insert_new_line_for_parameter=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.comment.line_length=80
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.compact_else_if=true
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.continuation_indentation=2
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.continuation_indentation_for_array_initializer=2
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.continuation_indentation_for_objlit_initializer=1
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.format_guardian_clause_on_one_line=false
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.indent_body_declarations_compare_to_type_header=true
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.indent_breaks_compare_to_cases=true
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.indent_empty_lines=false
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.indent_statements_compare_to_block=true
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.indent_statements_compare_to_body=true
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.indent_switchstatements_compare_to_cases=true
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.indent_switchstatements_compare_to_switch=false
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.indentation.size=4
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_annotation=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_comma_in_objlit_initializer=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_new_line_after_opening_brace_in_objlit_initializer=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_closing_brace_in_objlit_initializer=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_block=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_method_body=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_and_in_type_parameter=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_assignment_operator=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_at_in_annotation=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_binary_operator=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_brace_in_block=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_assert=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_case=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_conditional=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_for=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_annotation=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_for_increments=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_for_inits=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_ellipsis=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_postfix_operator=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_prefix_operator=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_question_in_conditional=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_semicolon_in_for=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_after_unary_operator=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_and_in_type_parameter=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_assignment_operator=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_binary_operator=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_assert=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_case=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_conditional=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_default=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_for=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_ellipsis=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_block=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_for=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_if=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_opening_paren_in_while=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_postfix_operator=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_prefix_operator=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_question_in_conditional=insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_semicolon=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_before_unary_operator=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.keep_else_statement_on_same_line=false
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.keep_empty_array_initializer_on_one_line=false
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.keep_empty_objlit_initializer_on_one_line=false
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.keep_imple_if_on_one_line=false
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.keep_then_statement_on_same_line=false
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.lineSplit=80
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.never_indent_block_comments_on_first_column=false
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.never_indent_line_comments_on_first_column=false
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.number_of_empty_lines_to_preserve=1
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.put_empty_statement_on_new_line=true
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.tabulation.char=space
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.tabulation.size=4
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.use_tabs_only_for_leading_indentations=false
 | 
			
		||||
org.eclipse.wst.jsdt.core.formatter.wrap_before_binary_operator=true
 | 
			
		||||
							
								
								
									
										10
									
								
								.settings/org.eclipse.wst.jsdt.ui.prefs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								.settings/org.eclipse.wst.jsdt.ui.prefs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
#Fri Nov 28 14:39:12 EST 2008
 | 
			
		||||
eclipse.preferences.version=1
 | 
			
		||||
formatter_profile=_gjs
 | 
			
		||||
formatter_settings_version=11
 | 
			
		||||
org.eclipse.wst.jsdt.ui.exception.name=e
 | 
			
		||||
org.eclipse.wst.jsdt.ui.gettersetter.use.is=true
 | 
			
		||||
org.eclipse.wst.jsdt.ui.javadoc=false
 | 
			
		||||
org.eclipse.wst.jsdt.ui.keywordthis=false
 | 
			
		||||
org.eclipse.wst.jsdt.ui.overrideannotation=true
 | 
			
		||||
org.eclipse.wst.jsdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates/>
 | 
			
		||||
							
								
								
									
										1
									
								
								.settings/org.eclipse.wst.jsdt.ui.superType.container
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.settings/org.eclipse.wst.jsdt.ui.superType.container
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
org.eclipse.wst.jsdt.launching.baseBrowserLibrary
 | 
			
		||||
							
								
								
									
										1
									
								
								.settings/org.eclipse.wst.jsdt.ui.superType.name
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.settings/org.eclipse.wst.jsdt.ui.superType.name
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
Window
 | 
			
		||||
							
								
								
									
										208
									
								
								HACKING.md
									
									
									
									
									
								
							
							
						
						
									
										208
									
								
								HACKING.md
									
									
									
									
									
								
							@@ -10,15 +10,15 @@ Life isn't fun if you can't break the rules. If a rule seems unnecessarily
 | 
			
		||||
restrictive while you're coding, ignore it, and let the patch reviewer decide
 | 
			
		||||
what to do.
 | 
			
		||||
 | 
			
		||||
## Indentation, braces and whitespace
 | 
			
		||||
## Indentation and whitespace
 | 
			
		||||
 | 
			
		||||
* Use four-space indents.
 | 
			
		||||
* Braces are on the same line as their associated statements.
 | 
			
		||||
* You should only omit braces if *both* sides of the statement are on one line.
 | 
			
		||||
* One space after the `function` keyword.
 | 
			
		||||
* No space between the function name in a declaration or a call.
 | 
			
		||||
* One space before the parens in the `if` statements, or `while`, or `for` loops.
 | 
			
		||||
Use four-space indents. Braces are on the same line as their associated
 | 
			
		||||
statements.  You should only omit braces if *both* sides of the statement are
 | 
			
		||||
on one line.
 | 
			
		||||
 | 
			
		||||
* One space after the `function` keyword.  No space between the function name
 | 
			
		||||
* in a declaration or a call.  One space before the parens in the `if`
 | 
			
		||||
* statements, or `while`, or `for` loops.
 | 
			
		||||
```javascript
 | 
			
		||||
    function foo(a, b) {
 | 
			
		||||
        let bar;
 | 
			
		||||
@@ -29,8 +29,9 @@ what to do.
 | 
			
		||||
            bar = do_thing(b);
 | 
			
		||||
 | 
			
		||||
        if (var == 5) {
 | 
			
		||||
            for (let i = 0; i < 10; i++)
 | 
			
		||||
            for (let i = 0; i < 10; i++) {
 | 
			
		||||
                print(i);
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            print(20);
 | 
			
		||||
        }
 | 
			
		||||
@@ -79,10 +80,14 @@ e.g. `imports.ui.popupMenu`.
 | 
			
		||||
Each import block should be sorted alphabetically. Don't import modules you
 | 
			
		||||
don't use.
 | 
			
		||||
```javascript
 | 
			
		||||
    const { GLib, Gio, St } = imports.gi;
 | 
			
		||||
    const GLib = imports.gi.GLib;
 | 
			
		||||
    const Gio = imports.gi.Gio;
 | 
			
		||||
    const Lang = imports.lang;
 | 
			
		||||
    const St = imports.gi.St;
 | 
			
		||||
 | 
			
		||||
    const Main = imports.ui.main;
 | 
			
		||||
    const Params = imports.misc.params;
 | 
			
		||||
    const Tweener = imports.ui.tweener;
 | 
			
		||||
    const Util = imports.misc.util;
 | 
			
		||||
```
 | 
			
		||||
The alphabetical ordering should be done independently of the location of the
 | 
			
		||||
@@ -101,8 +106,9 @@ under the imports:
 | 
			
		||||
Always use either `const` or `let` when defining a variable.
 | 
			
		||||
```javascript
 | 
			
		||||
    // Iterating over an array
 | 
			
		||||
    for (let i = 0; i < arr.length; ++i)
 | 
			
		||||
    for (let i = 0; i < arr.length; ++i) {
 | 
			
		||||
        let item = arr[i];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Iterating over an object's properties
 | 
			
		||||
    for (let prop in someobj) {
 | 
			
		||||
@@ -115,63 +121,64 @@ See [What's new in JavaScript 1.7](https://developer.mozilla.org/en/JavaScript/N
 | 
			
		||||
 | 
			
		||||
## Classes
 | 
			
		||||
 | 
			
		||||
There are many approaches to classes in JavaScript. We use standard ES6 classes
 | 
			
		||||
whenever possible, that is when not inheriting from GObjects.
 | 
			
		||||
There are many approaches to classes in JavaScript. We use our own class framework
 | 
			
		||||
(sigh), which is built in gjs. The advantage is that it supports inheriting from
 | 
			
		||||
GObjects, although this feature isn't used very often in the Shell itself.
 | 
			
		||||
```javascript
 | 
			
		||||
    var IconLabelMenuItem = class extends PopupMenu.PopupMenuBaseItem {
 | 
			
		||||
        constructor(icon, label) {
 | 
			
		||||
            super({ reactive: false });
 | 
			
		||||
    var IconLabelMenuItem = new Lang.Class({
 | 
			
		||||
        Name: 'IconLabelMenuItem',
 | 
			
		||||
        Extends: PopupMenu.PopupMenuBaseItem,
 | 
			
		||||
 | 
			
		||||
        _init(icon, label) {
 | 
			
		||||
            this.parent({ reactive: false });
 | 
			
		||||
            this.actor.add_child(icon);
 | 
			
		||||
            this.actor.add_child(label);
 | 
			
		||||
        }
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        open() {
 | 
			
		||||
            log("menu opened!");
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
For GObject inheritence, we use the GObject.registerClass() function provided
 | 
			
		||||
by gjs.
 | 
			
		||||
```javascript
 | 
			
		||||
    var MyActor = GObject.registerClass(
 | 
			
		||||
    class MyActor extends Clutter.Actor {
 | 
			
		||||
        _init(params) {
 | 
			
		||||
            super._init(params);
 | 
			
		||||
 | 
			
		||||
            this.name = 'MyCustomActor';
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
* 'Name' is required. 'Extends' is optional. If you leave it out, you will
 | 
			
		||||
  automatically inherit from Object.
 | 
			
		||||
 | 
			
		||||
* Leave a blank line between the "class header" (Name, Extends, and other
 | 
			
		||||
  things)  and the "class body" (methods). Leave a blank line between each
 | 
			
		||||
  method.
 | 
			
		||||
 | 
			
		||||
* No space before the colon, one space after.
 | 
			
		||||
 | 
			
		||||
* No trailing comma after the last item.
 | 
			
		||||
 | 
			
		||||
* Make sure to use a semicolon after the closing paren to the class. It's
 | 
			
		||||
  still a giant function call, even though it may resemble a more
 | 
			
		||||
  conventional syntax.
 | 
			
		||||
 | 
			
		||||
## GObject Introspection
 | 
			
		||||
 | 
			
		||||
GObject Introspection is a powerful feature that allows us to have native
 | 
			
		||||
bindings for almost any library built around GObject. If a library requires
 | 
			
		||||
you to inherit from a type to use it, you can do so:
 | 
			
		||||
```javascript
 | 
			
		||||
    var MyClutterActor = GObject.registerClass(
 | 
			
		||||
    class MyClutterActor extends Clutter.Actor {
 | 
			
		||||
    var MyClutterActor = new Lang.Class({
 | 
			
		||||
        Name: 'MyClutterActor',
 | 
			
		||||
        Extends: Clutter.Actor,
 | 
			
		||||
 | 
			
		||||
        vfunc_get_preferred_width(forHeight) {
 | 
			
		||||
        vfunc_get_preferred_width(actor, forHeight) {
 | 
			
		||||
             return [100, 100];
 | 
			
		||||
        }
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        vfunc_get_preferred_height(forWidth) {
 | 
			
		||||
        vfunc_get_preferred_height(actor, forWidth) {
 | 
			
		||||
             return [100, 100];
 | 
			
		||||
        }
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        vfunc_paint(paintContext) {
 | 
			
		||||
             let framebuffer = paintContext.get_framebuffer();
 | 
			
		||||
             let coglContext = framebuffer.get_context();
 | 
			
		||||
        vfunc_paint(actor) {
 | 
			
		||||
             let alloc = this.get_allocation_box();
 | 
			
		||||
 | 
			
		||||
             let pipeline = new Cogl.Pipeline(coglContext);
 | 
			
		||||
             pipeline.set_color4ub(255, 0, 0, 255);
 | 
			
		||||
 | 
			
		||||
             framebuffer.draw_rectangle(pipeline,
 | 
			
		||||
		 alloc.x1, alloc.y1,
 | 
			
		||||
		 alloc.x2, alloc.y2);
 | 
			
		||||
             Cogl.set_source_color4ub(255, 0, 0, 255);
 | 
			
		||||
             Cogl.rectangle(alloc.x1, alloc.y1,
 | 
			
		||||
                            alloc.x2, alloc.y2);
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
```
 | 
			
		||||
@@ -190,40 +197,30 @@ and "double quotes" for strings that the user may see. This allows us to
 | 
			
		||||
quickly find untranslated or mistranslated strings by grepping through the
 | 
			
		||||
sources for double quotes without a gettext call around them.
 | 
			
		||||
 | 
			
		||||
## `actor` (deprecated) and `_delegate`
 | 
			
		||||
## `actor` and `_delegate`
 | 
			
		||||
 | 
			
		||||
gjs allows us to set so-called "expando properties" on introspected objects,
 | 
			
		||||
allowing us to treat them like any other. Because the Shell was built before
 | 
			
		||||
you could inherit from GTypes natively in JS, in some cases we have a wrapper
 | 
			
		||||
class that has a property called `actor` (now deprecated). We call this
 | 
			
		||||
wrapper class the "delegate".
 | 
			
		||||
you could inherit from GTypes natively in JS, we usually have a wrapper class
 | 
			
		||||
that has a property called `actor`. We call this wrapper class the "delegate".
 | 
			
		||||
 | 
			
		||||
We sometimes use expando properties to set a property called `_delegate` on
 | 
			
		||||
the actor itself:
 | 
			
		||||
```javascript
 | 
			
		||||
    var MyActor = GObject.registerClass(
 | 
			
		||||
    class MyActor extends Clutter.Actor {
 | 
			
		||||
        _init(params) {
 | 
			
		||||
            super._init(params);
 | 
			
		||||
            this._delegate = this;
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
```
 | 
			
		||||
    var MyClass = new Lang.Class({
 | 
			
		||||
        Name: 'MyClass',
 | 
			
		||||
 | 
			
		||||
Or using the deprecated `actor`:
 | 
			
		||||
```javascript
 | 
			
		||||
    var MyClass = class {
 | 
			
		||||
        constructor() {
 | 
			
		||||
        _init() {
 | 
			
		||||
            this.actor = new St.Button({ text: "This is a button" });
 | 
			
		||||
            this.actor._delegate = this;
 | 
			
		||||
 | 
			
		||||
            this.actor.connect('clicked', this._onClicked.bind(this));
 | 
			
		||||
        }
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        _onClicked(actor) {
 | 
			
		||||
            actor.set_label("You clicked the button!");
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
The 'delegate' property is important for anything which trying to get the
 | 
			
		||||
@@ -231,7 +228,6 @@ delegate object from an associated actor. For instance, the drag and drop
 | 
			
		||||
system calls the `handleDragOver` function on the delegate of a "drop target"
 | 
			
		||||
when the user drags an item over it. If you do not set the `_delegate`
 | 
			
		||||
property, your actor will not be able to be dropped onto.
 | 
			
		||||
In case the class is an actor itself, the `_delegate` can be just set to `this`.
 | 
			
		||||
 | 
			
		||||
## Functional style
 | 
			
		||||
 | 
			
		||||
@@ -250,25 +246,28 @@ variable that can be captured in closures.
 | 
			
		||||
All closures should be wrapped with Function.prototype.bind or use arrow
 | 
			
		||||
notation.
 | 
			
		||||
```javascript
 | 
			
		||||
    let closure1 = () => this._fnorbate();
 | 
			
		||||
    const Lang = imports.lang;
 | 
			
		||||
 | 
			
		||||
    let closure1 = () => { this._fnorbate(); };
 | 
			
		||||
    let closure2 = this._fnorbate.bind(this);
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
A more realistic example would be connecting to a signal on a method of a
 | 
			
		||||
prototype:
 | 
			
		||||
```javascript
 | 
			
		||||
    const Lang = imports.lang;
 | 
			
		||||
    const FnorbLib = imports.fborbLib;
 | 
			
		||||
 | 
			
		||||
    var MyClass = class {
 | 
			
		||||
    var MyClass = new Lang.Class({
 | 
			
		||||
        _init() {
 | 
			
		||||
            let fnorb = new FnorbLib.Fnorb();
 | 
			
		||||
            fnorb.connect('frobate', this._onFnorbFrobate.bind(this));
 | 
			
		||||
        }
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        _onFnorbFrobate(fnorb) {
 | 
			
		||||
            this._updateFnorb();
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    });
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Object literal syntax
 | 
			
		||||
@@ -293,49 +292,36 @@ If your usage of an object is like a hash table (and thus conceptually the keys
 | 
			
		||||
can have special chars in them), don't use quotes, but use brackets: `{ bar: 42
 | 
			
		||||
}`, `foo['bar']`.
 | 
			
		||||
 | 
			
		||||
## Animations
 | 
			
		||||
 | 
			
		||||
Most objects that are animated are actors, and most properties used in animations
 | 
			
		||||
are animatable, which means they can use implicit animations:
 | 
			
		||||
## Getters, setters, and Tweener
 | 
			
		||||
 | 
			
		||||
Getters and setters should be used when you are dealing with an API that is
 | 
			
		||||
designed around setting properties, like Tweener. If you want to animate an
 | 
			
		||||
arbitrary property, create a getter and setter, and use Tweener to animate the
 | 
			
		||||
property.
 | 
			
		||||
```javascript
 | 
			
		||||
    moveActor(actor, x, y) {
 | 
			
		||||
        actor.ease({
 | 
			
		||||
            x,
 | 
			
		||||
            y,
 | 
			
		||||
            duration: 500, // ms
 | 
			
		||||
            mode: Clutter.AnimationMode.EASE_OUT_QUAD
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
The above is a convenience wrapper around the actual Clutter API, and should generally
 | 
			
		||||
be preferred over the more verbose:
 | 
			
		||||
 | 
			
		||||
```javascript
 | 
			
		||||
    moveActor(actor, x, y) {
 | 
			
		||||
        actor.save_easing_state();
 | 
			
		||||
 | 
			
		||||
        actor.set_easing_duration(500);
 | 
			
		||||
        actor.set_easing_mode(Clutter.AnimationMode.EASE_OUT_QUAD);
 | 
			
		||||
        actor.set({
 | 
			
		||||
            x,
 | 
			
		||||
            y
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        actor.restore_easing_state();
 | 
			
		||||
    }
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
There is a similar convenience API around Clutter.PropertyTransition to animate
 | 
			
		||||
actor (or actor meta) properties that cannot use implicit animations:
 | 
			
		||||
 | 
			
		||||
```javascript
 | 
			
		||||
    desaturateActor(actor, desaturate) {
 | 
			
		||||
        let factor = desaturate ? 1.0 : 0.0;
 | 
			
		||||
        actor.ease_property('@effects.desaturate.factor', factor, {
 | 
			
		||||
            duration: 500, // ms
 | 
			
		||||
            mode: Clutter.AnimationMode.EASE_OUT_QUAD
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
    var ANIMATION_TIME = 2000;
 | 
			
		||||
 | 
			
		||||
    var MyClass = new Lang.Class({
 | 
			
		||||
        Name: 'MyClass',
 | 
			
		||||
 | 
			
		||||
        _init() {
 | 
			
		||||
            this.actor = new St.BoxLayout();
 | 
			
		||||
            this._position = 0;
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        get position() {
 | 
			
		||||
            return this._position;
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        set position(value) {
 | 
			
		||||
            this._position = value;
 | 
			
		||||
            this.actor.set_position(value, value);
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    let myThing = new MyClass();
 | 
			
		||||
    Tweener.addTween(myThing,
 | 
			
		||||
                     { position: 100,
 | 
			
		||||
                       time: ANIMATION_TIME,
 | 
			
		||||
                       transition: 'easeOutQuad' });
 | 
			
		||||
```
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										506
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										506
									
								
								NEWS
									
									
									
									
									
								
							@@ -1,509 +1,3 @@
 | 
			
		||||
3.35.3
 | 
			
		||||
======
 | 
			
		||||
* Add discrete GPU support for NVidia drivers [Bastien; #1810]
 | 
			
		||||
* Fix DND of window previews with tablet devices [Carlos; !897]
 | 
			
		||||
* Update pad OSD actions dynamically on mode changes [Carlos; !898]
 | 
			
		||||
* st: Add dedicated PasswordEntry widget [Umang; !619]
 | 
			
		||||
* Allow stand-alone builds of gnome-extensions tool [Florian; !877]
 | 
			
		||||
* extension-tool: Don't treat missing .js handler as error [Chuck; !905]
 | 
			
		||||
* Disallow top bar menus without top bar [Florian; #2002]
 | 
			
		||||
* Misc. bug fixes and cleanups [Georges, Florian, Robert, Umang; !901,
 | 
			
		||||
  #789937, !909, !910, !911, !913, !916]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Michael Catanzaro, Chuck, Carlos Garnacho, Umang Jain, Robert Mader,
 | 
			
		||||
  Florian Müllner, Georges Basile Stavracas Neto, Bastien Nocera
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Fabio Tomat [fur], Fran Dieguez [gl], Jordi Mas [ca], Daniel Mustieles [es]
 | 
			
		||||
 | 
			
		||||
3.35.2
 | 
			
		||||
======
 | 
			
		||||
* Fix unredirection after cancelled animations [Florian; #1788]
 | 
			
		||||
* Include shadow in window screenshots [Robert; !762]
 | 
			
		||||
* Show indicator when microphone is active [Florian; !729]
 | 
			
		||||
* Use inheritance instead of delegate pattern [Marco; !559]
 | 
			
		||||
* Use cached coordinates for window sorting in overview [Andrew; !763]
 | 
			
		||||
* Wiggle login/unlock password entries on failure [Georges; !769]
 | 
			
		||||
* Update window titles in app menu [Florian; #1830]
 | 
			
		||||
* Fix window animations getting stuck by workspace switches [Jonas D.; !784]
 | 
			
		||||
* Fix not-responding dialog size when using geometry scaling [Jonas D.; !783]
 | 
			
		||||
* Handle buggy MPRIS clients more gracefully [Philip; #1362]
 | 
			
		||||
* Deprecate StBoxLayout's child properties [Florian; !780]
 | 
			
		||||
* Remove StBin's align properties [Florian; !803]
 | 
			
		||||
* Use correct timezones for events [Milan, Florian; !806, #1895]
 | 
			
		||||
* Reduce overhead of tracking stylesheet changes [Carlos; !779]
 | 
			
		||||
* Replace action icons in system menu with regular menu items [Florian; #270]
 | 
			
		||||
* Refine polkit dialogs [Jonas D.; !788]
 | 
			
		||||
* Fix battery icon glitch in "100% but charging" case [Philip; !814]
 | 
			
		||||
* Fix windows getting stuck on screen if closed while animating [Florian; !815]
 | 
			
		||||
* Use font from interface settings [Florian; #688288]
 | 
			
		||||
* Show polkit confirmation dialog for users with no password
 | 
			
		||||
  [Joaquim, Jonas D.; !829]
 | 
			
		||||
* Use better OSK layout fallback for unsupported variants [Florian; #1907]
 | 
			
		||||
* Hide stopped spinner in top bar [Joonas; !832]
 | 
			
		||||
* Reuse existing icons when updating the app picker grid [Georges; !841]
 | 
			
		||||
* Show switcher popups immediately on second key press [Florian; #1928]
 | 
			
		||||
* Add position-based animation to page indicators [Alexander; !843]
 | 
			
		||||
* Improve modifier-less keyboard navigation of switcher popups [Florian; #1883]
 | 
			
		||||
* Improve weather integration [Florian; #1927, #1926]
 | 
			
		||||
* Add back sound feedback when scrolling volume indicator [Florian; #53]
 | 
			
		||||
* Fix creating app folders with no pre-existing folders [Jonas D.; #1652]
 | 
			
		||||
* Improve DND page switching in app picker [Florian, Jonas D.; #1693]
 | 
			
		||||
* Fix disable command of gnome-extensions tool [Florian; #1946]
 | 
			
		||||
* Tweak styling of notifications/media constrols [Joonas; !855, !865]
 | 
			
		||||
* Enable clean session shutdown after gnome-shell failure [Benjamin; !858]
 | 
			
		||||
* Also remove scaled keys when texture cache is cleared [Daniel M.; !567]
 | 
			
		||||
* Don't show overflow indicator in switchers that fit screen [Florian; #1834]
 | 
			
		||||
* Move libcroco dependency in-tree [Federico; !861]
 | 
			
		||||
* Move to app folder location when it is created/renamed [Georges; !883]
 | 
			
		||||
* Dismiss switcher popups when a system modal dialogs opens [Florian; #1536]
 | 
			
		||||
* Fix weather forecasts for automatic location when Weather is not sandboxed
 | 
			
		||||
  [Florian; #1823]
 | 
			
		||||
* Place launched applications into a systemd scope [Benjamin; !863]
 | 
			
		||||
* Fixed crashes [Jonas D., Carlos; !787, !813]
 | 
			
		||||
* Misc. bug fixes and cleanups [Marco, Georges, Daniel V., Florian, Robert,
 | 
			
		||||
  Kalev, Philip, Jonas D., Will, Carlos, Jonas Å., cunidev, Joonas, Federico;
 | 
			
		||||
  !747, !765, !421, !759, !749, !730, !770, #1799, !774, !773, !776, !777,
 | 
			
		||||
  !782, !794, !778, !792, !790, !190, !796, !795, !797, !798, !800, !804, !808,
 | 
			
		||||
  !807, !810, !811, !563, !809, !805, !817, !818, !822, !830, !828, !823, !835,
 | 
			
		||||
  !840, !842, !833, !845, !846, !847, !851, #1916, !862, !866, #1979, !827,
 | 
			
		||||
  #1976, !884, !873, !885, !799, !887, !891, !816]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Marco Trevisan (Treviño), Benjamin Berg, Philip Chimento, Milan Crha,
 | 
			
		||||
  Jonas Dreßler, Carlos Garnacho, Joonas Henriksson, Kalev Lember, Robert Mader,
 | 
			
		||||
  Alexander Mikhaylenko, Daniel García Moreno, Florian Müllner,
 | 
			
		||||
  Georges Basile Stavracas Neto, Federico Mena Quintero, Joaquim Rocha,
 | 
			
		||||
  Will Thompson, Daniel van Vugt, Andrew Watson, cunidev, Jonas Ådahl
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Daniel Mustieles [es], Goran Vidović [hr], Fabio Tomat [fur],
 | 
			
		||||
  Danial Behzadi [fa], Andika Triwidada [id], Efstathios Iosifidis [el],
 | 
			
		||||
  Ricardo Silva Veloso [pt_BR]
 | 
			
		||||
 | 
			
		||||
3.35.1
 | 
			
		||||
======
 | 
			
		||||
* Misc. bug fixes and cleanups [Marco; Matthias; !758, #701212]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Marco Trevisan (Treviño)
 | 
			
		||||
 | 
			
		||||
3.34.1
 | 
			
		||||
======
 | 
			
		||||
* Fix "Frequent" view icons disappearing on hover [Jonas D.; #1502]
 | 
			
		||||
* Allow editing app folder names [Georges, Marco; !675, !720]
 | 
			
		||||
* Skip property transitions while hidden [Florian; !708]
 | 
			
		||||
* Make menu animations more consistent [Florian, GB_2; #1595, !717]
 | 
			
		||||
* Improve performance when enabling/disabling all extensions [Jonas D.; !96]
 | 
			
		||||
* Fix extra icons appearing in "Frequent" view animation [Georges; !696]
 | 
			
		||||
* Fix fading out desktop icons [Harshula; #1616]
 | 
			
		||||
* Fix box-shadow glitch with prerendered resources [Daniel; #1186]
 | 
			
		||||
* Fix accidentally skipped animations [Florian; #1572]
 | 
			
		||||
* Fix screenshots and window animations when scaled [Robert; !728]
 | 
			
		||||
* Don't leak NOTIFY_SOCKET environment variable to applications [Benjamin; !741]
 | 
			
		||||
* Fix lock-up on X11 when ibus is already running on startup [Marco; #1712]
 | 
			
		||||
* Fix screen dimming on idle [Marco; #1683]
 | 
			
		||||
* Do not notify systemd before initialization is complete [Iain; !750]
 | 
			
		||||
* Support SAE secrets in network agent [Lubomir; !751]
 | 
			
		||||
* Fix various regressions with dynamic workspaces [Florian; #1497]
 | 
			
		||||
* Fixed crashes [Florian, Marco; #1678, !746]
 | 
			
		||||
* Misc. bug fixes and cleanups [Marco, Jonas D., Florian, Iain, Georges,
 | 
			
		||||
  Jonas Å., Martin, Takao, Carlos; !700, !705, !709, !711, !707, #1538, !710,
 | 
			
		||||
  !713, !699, !715, !718, !716, !719, !721, #1243, !725, !731, #1614, !683,
 | 
			
		||||
  !732, !121, !735, !736, !740, #573, #1641, #1571]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Marco Trevisan (Treviño), Benjamin Berg, Jonas Dreßler, Takao Fujiwara, GB_2,
 | 
			
		||||
  Carlos Garnacho, Harshula Jayasuriya, Iain Lane, Robert Mader,
 | 
			
		||||
  Daniel García Moreno, Florian Müllner, Georges Basile Stavracas Neto,
 | 
			
		||||
  Lubomir Rintel, Martin Zurowietz, Jonas Ådahl
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Rafael Fontenelle [pt_BR], Fran Dieguez [gl], Balázs Úr [hu],
 | 
			
		||||
  Milo Casagrande [it], Daniel Șerbănescu [ro], Kukuh Syafaat [id],
 | 
			
		||||
  Jiri Grönroos [fi], Daniel Mustieles [es], Piotr Drąg [pl],
 | 
			
		||||
  Anders Jonsson [sv], Marek Černocký [cs], Jordi Mas [ca],
 | 
			
		||||
  Aurimas Černius [lt], Christian Kirbach [de], Emin Tufan Çetin [tr],
 | 
			
		||||
  Enrico Nicoletto [pt_BR], Danial Behzadi [fa], Марко Костић [sr],
 | 
			
		||||
  Alexandre Franke [fr], Charles Monzat [fr], Kjartan Maraas [nb],
 | 
			
		||||
  Ryuta Fujii [ja], Nathan Follens [nl], Dušan Kazik [sk], Fabio Tomat [fur],
 | 
			
		||||
  Matej Urbančič [sl], Ask Hjorth Larsen [da], Alan Mortensen [da]
 | 
			
		||||
 | 
			
		||||
3.34.0
 | 
			
		||||
======
 | 
			
		||||
* Handle startup/shutdown of misc X11 services [Carlos; !680]
 | 
			
		||||
* Fix sound volume mute/unmute [Iain; #1557]
 | 
			
		||||
* Correctly terminate pasted text [Carlos; #1570]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Carlos Garnacho, Iain Lane
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Tom Tryfonidis [el], Milo Casagrande [it], Ryuta Fujii [ja],
 | 
			
		||||
  Efstathios Iosifidis [el], Carmen Bianca BAKKER [eo], Sabri Ünal [tr],
 | 
			
		||||
  Dušan Kazik [sk], Balázs Meskó [hu], Claude Paroz [fr]
 | 
			
		||||
 | 
			
		||||
3.33.92
 | 
			
		||||
=======
 | 
			
		||||
* Animate pointer a11y pie timer [Jonas D.; !688]
 | 
			
		||||
* Fix restarting shell in systemd user session [Benjamin; !690]
 | 
			
		||||
* Misc. bug fixes and cleanups [Florian, Jonas D., Jonas Å., Will;
 | 
			
		||||
  !691, !689, !692, #1552, !698]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Jonas Ådahl, Benjamin Berg, Piotr Drąg, Jonas Dreßler, Florian Müllner,
 | 
			
		||||
  Will Thompson
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Daniel Șerbănescu [ro], Danial Behzadi [fa], Daniel Mustieles [es],
 | 
			
		||||
  Jiri Grönroos [fi], Asier Sarasua Garmendia [eu], Piotr Drąg [pl],
 | 
			
		||||
  Rūdolfs Mazurs [lv], Anders Jonsson [sv], Fran Dieguez [gl], Jordi Mas [ca],
 | 
			
		||||
  Matej Urbančič [sl], Zander Brown [en_GB], Ryuta Fujii [ja], Tim Sabsch [de],
 | 
			
		||||
  Fabio Tomat [fur], Pawan Chitrakar [ne], A S Alam [pa], Changwoo Ryu [ko],
 | 
			
		||||
  Aurimas Černius [lt], Daniel Rusek [cs], Marek Černocký [cs],
 | 
			
		||||
  Kukuh Syafaat [id], Goran Vidović [hr], Rafael Fontenelle [pt_BR]
 | 
			
		||||
 | 
			
		||||
3.33.91
 | 
			
		||||
=======
 | 
			
		||||
* Fix regression when adjusting brightness [Florian; #1500]
 | 
			
		||||
* Fix pointer a11y timeout animation [Jonas D.; #1533]
 | 
			
		||||
* Add new extensions CLI tool [Florian; #1234]
 | 
			
		||||
* Only track top-level windows [Carlos; #556]
 | 
			
		||||
* Misc. bug fixes and cleanups [Jonas D., Jonas Å., Piotr, Florian;
 | 
			
		||||
  !678, !682, !686]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Jonas Ådahl, Jonas Dreßler, Carlos Garnacho, Florian Müllner
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Asier Sarasua Garmendia [eu], Sveinn í Felli [is], Anders Jonsson [sv],
 | 
			
		||||
  Jordi Mas [ca], Kukuh Syafaat [id], Florentina Mușat [ro], Jiri Grönroos [fi],
 | 
			
		||||
  Aurimas Černius [lt], Daniel Mustieles [es], Piotr Drąg [pl],
 | 
			
		||||
  Danial Behzadi [fa]
 | 
			
		||||
 | 
			
		||||
3.33.90
 | 
			
		||||
=======
 | 
			
		||||
* Implement DND app picker folder management [Georges; !643, !645, !664, !671]
 | 
			
		||||
* Make Clocks/Weather integration work with sandboxed apps [Florian; #1158]
 | 
			
		||||
* Support startup via systemd user instance [Benjamin; !507]
 | 
			
		||||
* Replace Tweener with Clutter animations [Florian; !663, !22, !666, !668, !669]
 | 
			
		||||
* Minimize travel distance in overview animation [Sergey; !267]
 | 
			
		||||
* Rescan icon theme when installed apps changed [Georges; !661]
 | 
			
		||||
* Consistently animate new window actions [Jonas; !662, !673]
 | 
			
		||||
* Misc. bug fixes and cleanups [Florian, Daniel, Ray, Bastien, Jonas, Niels,
 | 
			
		||||
  Marco, Georges; !635, !636, !637, #1462, !628, !640, !641, !627, !644, !647,
 | 
			
		||||
  !385, #1474, !651, #1144, !646, !653, !652, !655, #1482, !656, $654, !665,
 | 
			
		||||
  !667, !670, #1357, !672, !657, #1507, !674, !677]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Benjamin Berg, Sergey Bugaev, Jonas Dreßler, Niels De Graef, Florian Müllner,
 | 
			
		||||
  Georges Basile Stavracas Neto, Bastien Nocera, Ray Strode,
 | 
			
		||||
  Marco Trevisan (Treviño), verdre, Daniel van Vugt
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Asier Sarasua Garmendia [eu], Rafael Fontenelle [pt_BR],
 | 
			
		||||
  Kristjan SCHMIDT [eo], Jor Teron [mjw], Daniel Mustieles [es],
 | 
			
		||||
  Kukuh Syafaat [id], Jordi Mas [ca], Fabio Tomat [fur], Daniel Șerbănescu [ro],
 | 
			
		||||
  Anders Jonsson [sv]
 | 
			
		||||
 | 
			
		||||
3.33.4
 | 
			
		||||
======
 | 
			
		||||
* Fix unintentional interference between gestures [Jonas; !598]
 | 
			
		||||
* Fix unintentional loop while polkit dialog is active [Ray; !602]
 | 
			
		||||
* Fix alt-tab icon size on HiDPI [Jonas; !587]
 | 
			
		||||
* Style fixes and improvements [Frederik, Jakub; !610, #1446, #1449]
 | 
			
		||||
* Fix style updates for non-background CSS properties [Florian; #1212]
 | 
			
		||||
* Fix cursor visibility in screen recordings [Illya; #1208]
 | 
			
		||||
* Add option for disabling the hot corner [Florian; #688320]
 | 
			
		||||
* Use more fine-grained levels in battery indicator [Florian; !561, #1442]
 | 
			
		||||
* Fix the calculation of the maximum number of app search results [Jonas; !110]
 | 
			
		||||
* Handle horizontal workspace layout with gestures/animations [Florian; !575]
 | 
			
		||||
* Improve handling of session mode extensions [Florian, Didier; #789852]
 | 
			
		||||
* Misc. bug fixes and cleanups [Jonas, Florian, Sonny, Carlos, Mario, Benjamin,
 | 
			
		||||
  Marco, Ting-Wei; !599, !600, !591, !606, !152, !607, !604, !495, !608, !611,
 | 
			
		||||
  !614, !612, !615, !618, #369, !620, #774, !621, !616, #1065, !609, !626,
 | 
			
		||||
  !491, !631, !632, !633, #1457]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Benjamin Berg, Jonas Dreßler, Frederik Feichtmeier, Carlos Garnacho,
 | 
			
		||||
  Illya Klymov, Ting-Wei Lan, Florian Müllner, Sonny Piers, Mario Sanchez Prada,
 | 
			
		||||
  Didier Roche, Jakub Steiner, Ray Strode, Jor Teron, Marco Trevisan (Treviño)
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Jordi Mas [ca], Jor Teron [mjw]
 | 
			
		||||
 | 
			
		||||
3.33.3
 | 
			
		||||
======
 | 
			
		||||
* Prepare for optional X11 [Carlos; !378]
 | 
			
		||||
* Fix opening window menu [Marco; !557]
 | 
			
		||||
* Reload search providers when installed applications change [Cosimo; !562]
 | 
			
		||||
* Implement locate-pointer accessibility feature [Olivier; #981]
 | 
			
		||||
* Allow to disable window menus via session mode [Cosimo; !569]
 | 
			
		||||
* Implement mouse accessibility [Olivier; !474]
 | 
			
		||||
* Call GDM's RegisterSession() after startup [Iain; !570]
 | 
			
		||||
* Fix extended keys popups being hidden by on-screen keyboard [Marco; !583]
 | 
			
		||||
* Fix top bar being hidden by lock screen [Jonas; !571]
 | 
			
		||||
* Update theme to better match GTK's Adwaita [Frederik; #841]
 | 
			
		||||
* Set up GJS profiler when GJS_TRACE_FD is set [Christian; !573]
 | 
			
		||||
* Misc. bug fixes and cleanups [Jonas, Cosimo, Robert, Florian, Marco, Simon,
 | 
			
		||||
  Laurent, Niels, Will; !551, !555, !464, #1333, !565, !572, !568, !558, #1205,
 | 
			
		||||
  #1336, !579, !576, #1392, !582, !586, #1406, #1351]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Laurent Bigonville, Cosimo Cecchi, Piotr Drąg, Jonas Dreßler,
 | 
			
		||||
  Frederik Feichtmeier, Olivier Fourdan, Carlos Garnacho, Niels De Graef,
 | 
			
		||||
  Christian Hergert, Iain Lane, Robert Mader, Florian Müllner, Simon Schampijer,
 | 
			
		||||
  Jakub Steiner, Will Thompson, Marco Trevisan (Treviño)
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Kukuh Syafaat [id], Balázs Meskó [hu], Daniel Mustieles [es],
 | 
			
		||||
  Fabio Tomat [fur], Nathan Follens [nl], Goran Vidović [hr], Jordi Mas [ca]
 | 
			
		||||
 | 
			
		||||
3.33.2
 | 
			
		||||
======
 | 
			
		||||
* Fix keeping actors visible in scrollviews [Marco; #1061]
 | 
			
		||||
* Move some chrome above popup windows [Jonas D.; !358]
 | 
			
		||||
* Include 'sandboxed-app-id' in winodw introspection info [Florian; #1289]
 | 
			
		||||
* Port to libecal-2.0 [Milan; !501]
 | 
			
		||||
* Support TCRYPT in mount password dialog [segfault; !126]
 | 
			
		||||
* Misc. bug fixes and cleanups [Florian, Marco, Veerasamy; !517, #745, !499,
 | 
			
		||||
  !510, !515, !546, !549]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Cosimo Cecchi, Milan Crha, Jonas Dreßler, Florian Müllner, segfault,
 | 
			
		||||
  Veerasamy Sevagen, Marco Trevisan (Treviño)
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Daniel Mustieles [es]
 | 
			
		||||
 | 
			
		||||
3.33.1
 | 
			
		||||
======
 | 
			
		||||
* Refine the app menu [Florian; #968]
 | 
			
		||||
* Refine window preview style [Feichtmeier; !461]
 | 
			
		||||
* Only emit ::style-changed on actual changes [Carlos; #1153]
 | 
			
		||||
* Disable emoji on-screen keyboard support on X11 [Florian; #1172]
 | 
			
		||||
* Fix tablet button mapping overlay [Carlos; #1220]
 | 
			
		||||
* Don't crash for world clock locations with no timezone [Florian; #1062]
 | 
			
		||||
* Don't leak old on-screen keyboard layout groups [Carlos; mutter#556]
 | 
			
		||||
* Fix ellipsization in dialog subtitles/bodies [Marco; !531]
 | 
			
		||||
* Fix glitch of fullscreen window in workspace switch animation [Jonas D.; !322]
 | 
			
		||||
* Fix distortion of some image contents [Florian; !525]
 | 
			
		||||
* Allow dragging unfocused tiled/maximized windows from top bar [Dylan; #679290]
 | 
			
		||||
* Handle network interface name changes [Fabrice; !534]
 | 
			
		||||
* Avoid unnecessary style changes when computing :first/:last-child
 | 
			
		||||
  [Florian; !529]
 | 
			
		||||
* Misc. bug fixes and cleanups [Florian, Marco, Robert, Georges, Carlos, Simon,
 | 
			
		||||
  Jonas D.; !487, !441, !502, !503, !504, !506, #822, !551, !512, !509, !511,
 | 
			
		||||
  #1054, !524, #1065, !331, !540]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Fabrice Bellet, Jonas Dreßler, Feichtmeier, Carlos Garnacho, Robert Mader,
 | 
			
		||||
  Dylan McCall, Simon McVittie, Florian Müllner, Georges Basile Stavracas Neto,
 | 
			
		||||
  Marco Trevisan (Treviño)
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Daniel Mustieles [es], Kukuh Syafaat [id], Fabio Tomat [fur],
 | 
			
		||||
  Carmen Bianca BAKKER [eo], Dingzhong Chen [zh_CN], Tim Sabsch [de]
 | 
			
		||||
 | 
			
		||||
3.32.1
 | 
			
		||||
======
 | 
			
		||||
* Fix avatar scaling on login screen [Florian; #1024]
 | 
			
		||||
* Fix distortion of desktop zoom [Florian; #646]
 | 
			
		||||
* Fix mouse cursor visibility when using desktop zoom [Florian, Marco; #1020]
 | 
			
		||||
* Fix screen dimming after wake-up on lock screen [Xiaoguang; #900]
 | 
			
		||||
* Fix Alt+Esc switcher [Florian; #1064]
 | 
			
		||||
* Respect struts for popover placement [Andrea; #1102]
 | 
			
		||||
* Fix app icons updates after theme changes [Florian; #1117]
 | 
			
		||||
* Fix desktop zoom after resolution changes [Marco; #1120]
 | 
			
		||||
* Implement stick-to-finger workspace switch overview gestures [Florian; #516]
 | 
			
		||||
* Make World Clocks offsets relative to local time [Florian; #1157]
 | 
			
		||||
* Fix top app icon disappearing from dash [Florian; #1053]
 | 
			
		||||
* Update switch style to match new Adwaita [Jakub; !496]
 | 
			
		||||
* Ensure CSS units are pixel-aligned when scaling is used [Carlos; #91]
 | 
			
		||||
* Misc. bug fixes and cleanups [Florian, Jakub, Robert, Alex, Carlos, Phil,
 | 
			
		||||
  Marco, Benjamin, AsciiWolf, Ray, verdre; !444, #1016, #1018, !449, #1036,
 | 
			
		||||
  !455, #1094, !440, #1023, #624, #1017, !476, !473, !480, #1130, !485, !481,
 | 
			
		||||
  !490, !489, #1151, !435, #1160, !482, #1150, #1166, !384]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  AsciiWolf, Andrea Azzarone, Benjamin Berg, Carlos Garnacho, Victor Ibragimov,
 | 
			
		||||
  Robert Mader, Alex Monday, Florian Müllner, Jakub Steiner, Ray Strode,
 | 
			
		||||
  Marco Trevisan (Treviño), verdre, Xiaoguang Wang, Phil Wyett
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Victor Ibragimov [tg, af, et, ja], Bruce Cowan [en_GB], Piotr Drąg [tg],
 | 
			
		||||
  Charles Monzat [fr], Khaled Hosny [ar], Goran Vidović [hr],
 | 
			
		||||
  Cheng-Chia Tseng [zh_TW], Carmen Bianca BAKKER [eo], Daniel Mustieles [es],
 | 
			
		||||
  Dušan Kazik [sk]
 | 
			
		||||
 | 
			
		||||
3.32.0
 | 
			
		||||
======
 | 
			
		||||
* Fix sizing issues in on-screen-keyboard emoji panel [Carlos; !439]
 | 
			
		||||
* Fix test linker failure on Debian/Ubuntu [Iain; !442]
 | 
			
		||||
* Avoid assertion when sizing fallback app icons from CSS [Florian; #1027]
 | 
			
		||||
* Fix mis-sized menu arrows after texture cache changes [Florian; !452]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Carlos Garnacho, Iain Lane, Florian Müllner
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Gábor Kelemen [hu], Victor Ibragimov [tg], Ryuta Fujii [ja], Piotr Drąg [af,
 | 
			
		||||
  tg], Mart Raudsepp [et]
 | 
			
		||||
 | 
			
		||||
3.31.92
 | 
			
		||||
=======
 | 
			
		||||
* Fix visual glitch in submenus [Alex; #987]
 | 
			
		||||
* Support fractional scaling [Jonas, Marco; #765011, !5]
 | 
			
		||||
* Only consider visible children for :first-child/:last-child [Florian; !312]
 | 
			
		||||
* Hide trailing separator in search results [verdre; !311]
 | 
			
		||||
* Remember choice in inhibit-shortcuts dialogue [Olivier; !382]
 | 
			
		||||
* Don't toggle on-screen keyboard on every focus change [Carlos; !397]
 | 
			
		||||
* Fix legacy tray icons not responding to events on wayland [Florian; #191]
 | 
			
		||||
* Fix generating French OSK layout [Florian; #997]
 | 
			
		||||
* Use borderless round user images [Florian; #811]
 | 
			
		||||
* Misc. bug fixes and cleanups [Andrea, Robert, Florian, Marco, Niels,
 | 
			
		||||
  Benjamin; !414, !417, !420, #996, !408, !422, !425, #1006, !427, !315,
 | 
			
		||||
  #989, !430, !431, !432, #1015, !429, !423, !419, !434]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Jonas Ådahl, Alan, Andrea Azzarone, Benjamin Berg, Olivier Fourdan,
 | 
			
		||||
  Carlos Garnacho, Niels De Graef, Robert Mader, Alex Monday, Florian Müllner,
 | 
			
		||||
  Marco Trevisan (Treviño), verdre
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Carmen Bianca BAKKER [eo], Asier Sarasua Garmendia [eu], Stas Solovey [ru],
 | 
			
		||||
  Changwoo Ryu [ko], Julien Humbert [fr], Milo Casagrande [it],
 | 
			
		||||
  Марко Костић [sr], Ask Hjorth Larsen [da], Kukuh Syafaat [id],
 | 
			
		||||
  Daniel Șerbănescu [ro], Bernd Homuth [de], Trần Ngọc Quân [vi],
 | 
			
		||||
  Nathan Follens [nl], Rūdolfs Mazurs [lv], Aurimas Černius [lt]
 | 
			
		||||
 | 
			
		||||
3.31.91
 | 
			
		||||
=======
 | 
			
		||||
* Don't close on-screen-keyboard's language menu on hover [Florian; #171]
 | 
			
		||||
* Don't let unfullscreen gesture interfere with top bar taps [Jonas D.; #552]
 | 
			
		||||
* Always use symbolic user icon in system menu [Florian; #957]
 | 
			
		||||
* Add flags parameter in GrabAccelerators API [Andrea; #68]
 | 
			
		||||
* Misc. bug fixes and cleanups [Florian, Jonas A.; !399, !398, !400, !402,
 | 
			
		||||
  !407, !410, !411]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Jonas Ådahl, Andrea Azzarone, Arnaud Bonatti, Jonas Dreßler, Florian Müllner
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Jordi Mas [ca], Ryuta Fujii [ja], Marek Cernocky [cs], Fran Dieguez [gl],
 | 
			
		||||
  Jiri Grönroos [fi], Serdar Sağlam [tr], Anders Jonsson [sv],
 | 
			
		||||
  Matej Urbančič [sl], Gun Chleoc [gd], Kukuh Syafaat [id],
 | 
			
		||||
  Baurzhan Muftakhidinov [kk], Alan Mortensen [da], Rafael Fontenelle [pt_BR],
 | 
			
		||||
  Sveinn í Felli [is]
 | 
			
		||||
 | 
			
		||||
3.31.90
 | 
			
		||||
=======
 | 
			
		||||
* Fix input methods after ibus restarts [Takao; #295]
 | 
			
		||||
* Refresh world clocks and weather sections [Florian; #262]
 | 
			
		||||
* Port to ES6 classes (update your extensions!) [Florian; !361]
 | 
			
		||||
* networkAgent: Advise users when WPS support is available [Lubomir; !329]
 | 
			
		||||
* Performance improvements [Carlos; #832, #815]
 | 
			
		||||
* Fix drag-and-drop with wacom pens [Carlos; #540]
 | 
			
		||||
* Fix CAPS LOCK indication on wayland [Carlos; #762881]
 | 
			
		||||
* Show details of non-sensitive notifications on lock screen [Philip; #726]
 | 
			
		||||
* Refine extension-prefs' error UI [Florian; !193]
 | 
			
		||||
* Add switch-to-application-n keybindings [Florian; #648000]
 | 
			
		||||
* Remove top bar translucency [Florian; #408]
 | 
			
		||||
* Support emojis and keypads in on-screen keyboard [Carlos; #675]
 | 
			
		||||
* Don't allow popups to re-enable keyboard shortcuts on lock screen
 | 
			
		||||
  (CVE-2019-3820) [Florian, Ray; #851]
 | 
			
		||||
* Replace app menu [Florian; #624]
 | 
			
		||||
* Include commonly copied+pasted extension helpers [Florian; !150]
 | 
			
		||||
* Misc. bug fixes and cleanups [Florian, Daniel, Philip, Sergio, Pascal,
 | 
			
		||||
  Georges, verdre, Carlos, Christopher; #780, #909, !316, !308, !309, #915,
 | 
			
		||||
  !350, !362, !357, !365, !366, !283, !367, #942, !371, !373, !374, !343,
 | 
			
		||||
  !375, !292, !317, !377, !379, !346, !383, #953, !388]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Sergio Costas, Christopher Davis, Bilal Elmoussaoui, Takao Fujiwara,
 | 
			
		||||
  Carlos Garnacho, Niels De Graef, Christian Kellner, Ignat Loskutov,
 | 
			
		||||
  Florian Müllner, Georges Basile Stavracas Neto, Pascal Nowack, Lubomir Rintel,
 | 
			
		||||
  Jakub Steiner, Ray Strode, verdre, Daniel van Vugt, Philip Withnall
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Daniel Mustieles [es], Carmen Bianca BAKKER [eo], Charles Monzat [fr],
 | 
			
		||||
  Pieter Schalk Schoeman [af], Jordi Mas [ca], Matej Urbančič [sl],
 | 
			
		||||
  Fran Dieguez [gl], Balázs Úr [hu], A S Alam [pa], Fabio Tomat [fur],
 | 
			
		||||
  Aurimas Černius [lt], Piotr Drąg [pl], Marek Cernocky [cs], Ryuta Fujii [ja]
 | 
			
		||||
 | 
			
		||||
3.31.4
 | 
			
		||||
======
 | 
			
		||||
* Improve icon grid performance [Daniel; #174]
 | 
			
		||||
* Remove browser plugin [Michael; #766776]
 | 
			
		||||
* Add DBus API for introspecting the application state [Jonas, Olivier; !326]
 | 
			
		||||
* Always allow leaving the overview via the hot-corner [Pascal; #429]
 | 
			
		||||
* Misc. bug fixes [Florian, Jasper, Andrea, Sam, Dani, Cosimo, Jonas, Carlos;
 | 
			
		||||
  #643595, #673767, !293, #783, #781, !298, !297, #782, !301, !314, !305, #799,
 | 
			
		||||
  #632, !327]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Jonas Ådahl, Andrea Azzarone, Michael Catanzaro, Cosimo Cecchi, daniruiz,
 | 
			
		||||
  Olivier Fourdan, Carlos Garnacho, Sam Hewitt, Andre Klapper, Florian Müllner,
 | 
			
		||||
  Pascal Nowack, Jasper St. Pierre, RyuzakiKK, Marco Trevisan (Treviño),
 | 
			
		||||
  João Paulo Rechi Vita, Daniel van Vugt
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Kristjan SCHMIDT [eo], Matej Urbančič [sl], Daniel Mustieles [es],
 | 
			
		||||
  Fabio Tomat [fur], Emin Tufan Çetin [tr], Anders Jonsson [sv],
 | 
			
		||||
  Ryuta Fujii [ja]
 | 
			
		||||
 | 
			
		||||
3.31.2
 | 
			
		||||
======
 | 
			
		||||
* Port away from and remove ShellGenericContainer [Georges; !153]
 | 
			
		||||
* popupMenu: Fix keyboard activation when numlock is active [Andrea; #550]
 | 
			
		||||
* Do not block all shortcuts while app folders are expanded [Florian; #648]
 | 
			
		||||
* Fix regression in handling new input sources [Carlos; #691]
 | 
			
		||||
* Reask password after udisk errors for no/wrong passwords [Sebastian; #640]
 | 
			
		||||
* Improve performance of app icon animations [Daniel; !253, !261]
 | 
			
		||||
* Avoid focus changes when updating keyboard options [Takao; #391]
 | 
			
		||||
* notifications: Support icon theme names in 'image-path' hint [Marco; !285]
 | 
			
		||||
* Respect natural-scroll setting for workspace swipe gesture [Erik; #516]
 | 
			
		||||
* Confine window preview titles to workspace area [Florian; !214]
 | 
			
		||||
* Misc. bug fixes [Florian, Carmen, Georges, Cosimo, Carlos; #602, #693,
 | 
			
		||||
  #666, #647, !66, #768, #430, !286, !258, !287, gtk#1447]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Andrea Azzarone, Carmen Bianca Bakker, Cosimo Cecchi, Sergio Costas,
 | 
			
		||||
  Erik Duxstad, Takao Fujiwara, Carlos Garnacho, Florian Müllner,
 | 
			
		||||
  Georges Basile Stavracas Neto, Sebastian Pinnau, Didier Roche, Jakub Steiner,
 | 
			
		||||
  Marco Trevisan (Treviño), verdre, Daniel van Vugt
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Kristjan SCHMIDT [eo], Dušan Kazik [sk], Matej Urbančič [sl],
 | 
			
		||||
  Anish Sheela [ml], Rafael Fontenelle [pt_BR], Daniel Mustieles [es]
 | 
			
		||||
 | 
			
		||||
3.30.1
 | 
			
		||||
======
 | 
			
		||||
* Cancel search on overview hiding [Marco; !205]
 | 
			
		||||
* Fix disappearing network icon [Iain; #140]
 | 
			
		||||
* Improve switch-monitor shortcut handling [Daniel; !208]
 | 
			
		||||
* Fix missing key information in keyring dialog [Florian; #574]
 | 
			
		||||
* De-duplicate all entries in run command history [Pascal; #524]
 | 
			
		||||
* Fix frozen disk unlock dialogs [Florian; #565]
 | 
			
		||||
* Fix unresponsive-app dialog blocking input in other windows [Florian; #273]
 | 
			
		||||
* Fix handling of forward-key-event input method signal [Carlos; #531]
 | 
			
		||||
* Misc. bug fixes [Florian, Marco, Carlos, Pascal, Andrea; #520, #791233,
 | 
			
		||||
  !188, #539, !217, #536, #537, #578, !236, #579, !228, #618, #471, !255]
 | 
			
		||||
 | 
			
		||||
Contributors:
 | 
			
		||||
  Andrea Azzarone, Jürg Billeter, Daniel Drake, Carlos Garnacho, Andre Klapper,
 | 
			
		||||
  Iain Lane, Florian Müllner, Bastien Nocera, Pascal Nowack, Jakub Steiner,
 | 
			
		||||
  Ray Strode, Will Thompson, Marco Trevisan (Treviño), Adam Williamson,
 | 
			
		||||
  Andrew Zaborowski
 | 
			
		||||
 | 
			
		||||
Translators:
 | 
			
		||||
  Yuras Shumovich [be], Stas Solovey [ru], Justin van Steijn [nl],
 | 
			
		||||
  Dušan Kazik [sk], Khaled Hosny [ar], Madis O [et], Mart Raudsepp [et],
 | 
			
		||||
  Марко Костић [sr], Piotr Drąg [pl], Marek Černocký [cs], Fran Dieguez [gl],
 | 
			
		||||
  Ask Hjorth Larsen [da], Balázs Meskó [hu], Jiri Grönroos [fi],
 | 
			
		||||
  Cheng-Chia Tseng [zh_TW]
 | 
			
		||||
 | 
			
		||||
3.30.0
 | 
			
		||||
======
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -11,14 +11,6 @@ see the [project wiki][project-wiki].
 | 
			
		||||
 | 
			
		||||
Bugs should be reported to the GNOME [bug tracking system][bug-tracker].
 | 
			
		||||
 | 
			
		||||
## Contributing
 | 
			
		||||
 | 
			
		||||
To contribute, open merge requests at https://gitlab.gnome.org/GNOME/gnome-shell.
 | 
			
		||||
 | 
			
		||||
Commit messages should follow the [GNOME commit message
 | 
			
		||||
guidelines](https://wiki.gnome.org/Git/CommitMessages). We require an URL
 | 
			
		||||
to either an issue or a merge request in each commit.
 | 
			
		||||
 | 
			
		||||
## License
 | 
			
		||||
GNOME Shell is distributed under the terms of the GNU General Public License,
 | 
			
		||||
version 2 or later. See the [COPYING][license] file for details.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										40
									
								
								README.mdwn
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								README.mdwn
									
									
									
									
									
								
							@@ -1,40 +0,0 @@
 | 
			
		||||
cldr2json
 | 
			
		||||
=========
 | 
			
		||||
 | 
			
		||||
This script converts Unicode CLDR android keyboard layouts to JSON usable by
 | 
			
		||||
GNOME Shell.
 | 
			
		||||
 | 
			
		||||
CLDR keyboard layouts can be found at
 | 
			
		||||
<http://www.unicode.org/Public/cldr/latest/keyboards.zip>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Usage
 | 
			
		||||
=====
 | 
			
		||||
 | 
			
		||||
    ./cldr2json <input file or directory> <output directory>
 | 
			
		||||
 | 
			
		||||
example:
 | 
			
		||||
 | 
			
		||||
    ./cldr2json cldr/keyboards/android/ json_layouts/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Keyboard layout mapping
 | 
			
		||||
=======================
 | 
			
		||||
 | 
			
		||||
Unicode CLDR layout identifiers are language codes, while XKB layout
 | 
			
		||||
identifiers are... something else. The mapping between the two currently uses
 | 
			
		||||
heuristic based on the layout descriptions, in this order:
 | 
			
		||||
 | 
			
		||||
- if the CLDR layout description matches an XKB layout description, chose its
 | 
			
		||||
  XKB identifier
 | 
			
		||||
- if one word of the CLDR layout description matches an XKB layout
 | 
			
		||||
  description, chose its XKB identifier
 | 
			
		||||
- if the CLDR layout description matches one word of an XKB layout description,
 | 
			
		||||
  chose its XKB identifier
 | 
			
		||||
 | 
			
		||||
That doesn't always work. For instance it fails for "en" language, that should
 | 
			
		||||
match "us" XKB identifier. For such cases, there is a mapping in
 | 
			
		||||
LOCALE_TO_XKB_OVERRIDES at the top of the script. If you discover a weird
 | 
			
		||||
mapping of if you get a "failed to find XKB mapping for <locale>" warning then
 | 
			
		||||
please consider adding an override there.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										17
									
								
								browser-plugin/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								browser-plugin/README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
The GNOME Shell Browser Plugin provides integration with gnome-shell and the
 | 
			
		||||
corresponding extensions repository, codenamed "SweetTooth". The plugin allows
 | 
			
		||||
the extensions repository to provide good integration, letting the website
 | 
			
		||||
know which extensions are enabled and disabled, and allowing the website to
 | 
			
		||||
enable, disable and install them.
 | 
			
		||||
 | 
			
		||||
Bugs should be reported to the GNOME [bug tracking system][bug-tracker].
 | 
			
		||||
 | 
			
		||||
## License
 | 
			
		||||
The GNOME Shell Browser Plugin, like GNOME Shell itself is distributed under
 | 
			
		||||
the GNU General Public License, version 2 or later. The plugin also contains
 | 
			
		||||
header files from the "NPAPI SDK" project, tri-licensed under MPL 1.1, GPL 2.0
 | 
			
		||||
and LGPL 2.1. These headers are third-party sources and can be retrieved from:
 | 
			
		||||
 | 
			
		||||
  http://code.google.com/p/npapi-sdk/
 | 
			
		||||
 | 
			
		||||
[bug-tracker]: https://gitlab.gnome.org/GNOME/gnome-shell/issues
 | 
			
		||||
							
								
								
									
										1058
									
								
								browser-plugin/browser-plugin.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1058
									
								
								browser-plugin/browser-plugin.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										19
									
								
								browser-plugin/meson.build
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								browser-plugin/meson.build
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
plugin_sources = [
 | 
			
		||||
  'browser-plugin.c',
 | 
			
		||||
  'npapi/npapi.h',
 | 
			
		||||
  'npapi/npfunctions.h',
 | 
			
		||||
  'npapi/npruntime.h',
 | 
			
		||||
  'npapi/nptypes.h'
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
shared_module('gnome-shell-browser-plugin', plugin_sources,
 | 
			
		||||
  dependencies: [gio_dep, json_glib_dep],
 | 
			
		||||
  c_args: ['-DG_LOG_DOMAIN="GnomeShellBrowserPlugin"'],
 | 
			
		||||
  # Browsers can unload and reload the module while browsing, which is not
 | 
			
		||||
  # supported by GObject.
 | 
			
		||||
  # We pass -Wl,-z,nodelete to the linker to ensure the module is never
 | 
			
		||||
  # unloaded. See https://bugzilla.gnome.org/show_bug.cgi?id=737932.
 | 
			
		||||
  link_args: ['-Wl,-z,nodelete'],
 | 
			
		||||
  install: true,
 | 
			
		||||
  install_dir: plugindir
 | 
			
		||||
)
 | 
			
		||||
							
								
								
									
										893
									
								
								browser-plugin/npapi/npapi.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										893
									
								
								browser-plugin/npapi/npapi.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,893 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 | 
			
		||||
/* ***** BEGIN LICENSE BLOCK *****
 | 
			
		||||
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 | 
			
		||||
 *
 | 
			
		||||
 * The contents of this file are subject to the Mozilla Public License Version
 | 
			
		||||
 * 1.1 (the "License"); you may not use this file except in compliance with
 | 
			
		||||
 * the License. You may obtain a copy of the License at
 | 
			
		||||
 * http://www.mozilla.org/MPL/
 | 
			
		||||
 *
 | 
			
		||||
 * Software distributed under the License is distributed on an "AS IS" basis,
 | 
			
		||||
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 | 
			
		||||
 * for the specific language governing rights and limitations under the
 | 
			
		||||
 * License.
 | 
			
		||||
 *
 | 
			
		||||
 * The Original Code is mozilla.org code.
 | 
			
		||||
 *
 | 
			
		||||
 * The Initial Developer of the Original Code is
 | 
			
		||||
 * Netscape Communications Corporation.
 | 
			
		||||
 * Portions created by the Initial Developer are Copyright (C) 1998
 | 
			
		||||
 * the Initial Developer. All Rights Reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Contributor(s):
 | 
			
		||||
 *
 | 
			
		||||
 * Alternatively, the contents of this file may be used under the terms of
 | 
			
		||||
 * either the GNU General Public License Version 2 or later (the "GPL"), or
 | 
			
		||||
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 | 
			
		||||
 * in which case the provisions of the GPL or the LGPL are applicable instead
 | 
			
		||||
 * of those above. If you wish to allow use of your version of this file only
 | 
			
		||||
 * under the terms of either the GPL or the LGPL, and not to allow others to
 | 
			
		||||
 * use your version of this file under the terms of the MPL, indicate your
 | 
			
		||||
 * decision by deleting the provisions above and replace them with the notice
 | 
			
		||||
 * and other provisions required by the GPL or the LGPL. If you do not delete
 | 
			
		||||
 * the provisions above, a recipient may use your version of this file under
 | 
			
		||||
 * the terms of any one of the MPL, the GPL or the LGPL.
 | 
			
		||||
 *
 | 
			
		||||
 * ***** END LICENSE BLOCK ***** */
 | 
			
		||||
 | 
			
		||||
#ifndef npapi_h_
 | 
			
		||||
#define npapi_h_
 | 
			
		||||
 | 
			
		||||
#if defined(__OS2__)
 | 
			
		||||
#pragma pack(1)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "nptypes.h"
 | 
			
		||||
 | 
			
		||||
#if defined(__OS2__) || defined(OS2)
 | 
			
		||||
#ifndef XP_OS2
 | 
			
		||||
#define XP_OS2 1
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(_WIN32) && !defined(__SYMBIAN32__)
 | 
			
		||||
#include <windef.h>
 | 
			
		||||
#ifndef XP_WIN
 | 
			
		||||
#define XP_WIN 1
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__SYMBIAN32__)
 | 
			
		||||
#ifndef XP_SYMBIAN
 | 
			
		||||
#define XP_SYMBIAN 1
 | 
			
		||||
#undef XP_WIN
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__APPLE_CC__) && !defined(XP_UNIX)
 | 
			
		||||
#ifndef XP_MACOSX
 | 
			
		||||
#define XP_MACOSX 1
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(XP_MACOSX) && defined(__LP64__)
 | 
			
		||||
#define NP_NO_QUICKDRAW
 | 
			
		||||
#define NP_NO_CARBON
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(XP_MACOSX)
 | 
			
		||||
#include <ApplicationServices/ApplicationServices.h>
 | 
			
		||||
#include <OpenGL/OpenGL.h>
 | 
			
		||||
#ifndef NP_NO_CARBON
 | 
			
		||||
#include <Carbon/Carbon.h>
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(XP_UNIX)
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#if defined(MOZ_X11)
 | 
			
		||||
#include <X11/Xlib.h>
 | 
			
		||||
#include <X11/Xutil.h>
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(XP_SYMBIAN)
 | 
			
		||||
#include <QEvent>
 | 
			
		||||
#include <QRegion>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*----------------------------------------------------------------------*/
 | 
			
		||||
/*                        Plugin Version Constants                      */
 | 
			
		||||
/*----------------------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
#define NP_VERSION_MAJOR 0
 | 
			
		||||
#define NP_VERSION_MINOR 27
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* The OS/2 version of Netscape uses RC_DATA to define the
 | 
			
		||||
   mime types, file extensions, etc that are required.
 | 
			
		||||
   Use a vertical bar to separate types, end types with \0.
 | 
			
		||||
   FileVersion and ProductVersion are 32bit ints, all other
 | 
			
		||||
   entries are strings that MUST be terminated with a \0.
 | 
			
		||||
 | 
			
		||||
AN EXAMPLE:
 | 
			
		||||
 | 
			
		||||
RCDATA NP_INFO_ProductVersion { 1,0,0,1,}
 | 
			
		||||
 | 
			
		||||
RCDATA NP_INFO_MIMEType    { "video/x-video|",
 | 
			
		||||
                             "video/x-flick\0" }
 | 
			
		||||
RCDATA NP_INFO_FileExtents { "avi|",
 | 
			
		||||
                             "flc\0" }
 | 
			
		||||
RCDATA NP_INFO_FileOpenName{ "MMOS2 video player(*.avi)|",
 | 
			
		||||
                             "MMOS2 Flc/Fli player(*.flc)\0" }
 | 
			
		||||
 | 
			
		||||
RCDATA NP_INFO_FileVersion       { 1,0,0,1 }
 | 
			
		||||
RCDATA NP_INFO_CompanyName       { "Netscape Communications\0" }
 | 
			
		||||
RCDATA NP_INFO_FileDescription   { "NPAVI32 Extension DLL\0"
 | 
			
		||||
RCDATA NP_INFO_InternalName      { "NPAVI32\0" )
 | 
			
		||||
RCDATA NP_INFO_LegalCopyright    { "Copyright Netscape Communications \251 1996\0"
 | 
			
		||||
RCDATA NP_INFO_OriginalFilename  { "NVAPI32.DLL" }
 | 
			
		||||
RCDATA NP_INFO_ProductName       { "NPAVI32 Dynamic Link Library\0" }
 | 
			
		||||
*/
 | 
			
		||||
/* RC_DATA types for version info - required */
 | 
			
		||||
#define NP_INFO_ProductVersion      1
 | 
			
		||||
#define NP_INFO_MIMEType            2
 | 
			
		||||
#define NP_INFO_FileOpenName        3
 | 
			
		||||
#define NP_INFO_FileExtents         4
 | 
			
		||||
/* RC_DATA types for version info - used if found */
 | 
			
		||||
#define NP_INFO_FileDescription     5
 | 
			
		||||
#define NP_INFO_ProductName         6
 | 
			
		||||
/* RC_DATA types for version info - optional */
 | 
			
		||||
#define NP_INFO_CompanyName         7
 | 
			
		||||
#define NP_INFO_FileVersion         8
 | 
			
		||||
#define NP_INFO_InternalName        9
 | 
			
		||||
#define NP_INFO_LegalCopyright      10
 | 
			
		||||
#define NP_INFO_OriginalFilename    11
 | 
			
		||||
 | 
			
		||||
#ifndef RC_INVOKED
 | 
			
		||||
 | 
			
		||||
/*----------------------------------------------------------------------*/
 | 
			
		||||
/*                       Definition of Basic Types                      */
 | 
			
		||||
/*----------------------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
typedef unsigned char NPBool;
 | 
			
		||||
typedef int16_t       NPError;
 | 
			
		||||
typedef int16_t       NPReason;
 | 
			
		||||
typedef char*         NPMIMEType;
 | 
			
		||||
 | 
			
		||||
/*----------------------------------------------------------------------*/
 | 
			
		||||
/*                       Structures and definitions                     */
 | 
			
		||||
/*----------------------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
#if !defined(__LP64__)
 | 
			
		||||
#if defined(XP_MACOSX)
 | 
			
		||||
#pragma options align=mac68k
 | 
			
		||||
#endif
 | 
			
		||||
#endif /* __LP64__ */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *  NPP is a plug-in's opaque instance handle
 | 
			
		||||
 */
 | 
			
		||||
typedef struct _NPP
 | 
			
		||||
{
 | 
			
		||||
  void* pdata;      /* plug-in private data */
 | 
			
		||||
  void* ndata;      /* netscape private data */
 | 
			
		||||
} NPP_t;
 | 
			
		||||
 | 
			
		||||
typedef NPP_t*  NPP;
 | 
			
		||||
 | 
			
		||||
typedef struct _NPStream
 | 
			
		||||
{
 | 
			
		||||
  void*    pdata; /* plug-in private data */
 | 
			
		||||
  void*    ndata; /* netscape private data */
 | 
			
		||||
  const    char* url;
 | 
			
		||||
  uint32_t end;
 | 
			
		||||
  uint32_t lastmodified;
 | 
			
		||||
  void*    notifyData;
 | 
			
		||||
  const    char* headers; /* Response headers from host.
 | 
			
		||||
                           * Exists only for >= NPVERS_HAS_RESPONSE_HEADERS.
 | 
			
		||||
                           * Used for HTTP only; NULL for non-HTTP.
 | 
			
		||||
                           * Available from NPP_NewStream onwards.
 | 
			
		||||
                           * Plugin should copy this data before storing it.
 | 
			
		||||
                           * Includes HTTP status line and all headers,
 | 
			
		||||
                           * preferably verbatim as received from server,
 | 
			
		||||
                           * headers formatted as in HTTP ("Header: Value"),
 | 
			
		||||
                           * and newlines (\n, NOT \r\n) separating lines.
 | 
			
		||||
                           * Terminated by \n\0 (NOT \n\n\0). */
 | 
			
		||||
} NPStream;
 | 
			
		||||
 | 
			
		||||
typedef struct _NPByteRange
 | 
			
		||||
{
 | 
			
		||||
  int32_t  offset; /* negative offset means from the end */
 | 
			
		||||
  uint32_t length;
 | 
			
		||||
  struct _NPByteRange* next;
 | 
			
		||||
} NPByteRange;
 | 
			
		||||
 | 
			
		||||
typedef struct _NPSavedData
 | 
			
		||||
{
 | 
			
		||||
  int32_t len;
 | 
			
		||||
  void*   buf;
 | 
			
		||||
} NPSavedData;
 | 
			
		||||
 | 
			
		||||
typedef struct _NPRect
 | 
			
		||||
{
 | 
			
		||||
  uint16_t top;
 | 
			
		||||
  uint16_t left;
 | 
			
		||||
  uint16_t bottom;
 | 
			
		||||
  uint16_t right;
 | 
			
		||||
} NPRect;
 | 
			
		||||
 | 
			
		||||
typedef struct _NPSize
 | 
			
		||||
{
 | 
			
		||||
  int32_t width;
 | 
			
		||||
  int32_t height;
 | 
			
		||||
} NPSize;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
  NPFocusNext = 0,
 | 
			
		||||
  NPFocusPrevious = 1
 | 
			
		||||
} NPFocusDirection;
 | 
			
		||||
 | 
			
		||||
/* Return values for NPP_HandleEvent */
 | 
			
		||||
#define kNPEventNotHandled 0
 | 
			
		||||
#define kNPEventHandled 1
 | 
			
		||||
/* Exact meaning must be spec'd in event model. */
 | 
			
		||||
#define kNPEventStartIME 2
 | 
			
		||||
 | 
			
		||||
#if defined(XP_UNIX)
 | 
			
		||||
/*
 | 
			
		||||
 * Unix specific structures and definitions
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Callback Structures.
 | 
			
		||||
 *
 | 
			
		||||
 * These are used to pass additional platform specific information.
 | 
			
		||||
 */
 | 
			
		||||
enum {
 | 
			
		||||
  NP_SETWINDOW = 1,
 | 
			
		||||
  NP_PRINT
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
  int32_t type;
 | 
			
		||||
} NPAnyCallbackStruct;
 | 
			
		||||
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
  int32_t      type;
 | 
			
		||||
#if defined(MOZ_X11)
 | 
			
		||||
  Display*     display;
 | 
			
		||||
  Visual*      visual;
 | 
			
		||||
  Colormap     colormap;
 | 
			
		||||
  unsigned int depth;
 | 
			
		||||
#endif
 | 
			
		||||
} NPSetWindowCallbackStruct;
 | 
			
		||||
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
  int32_t type;
 | 
			
		||||
  FILE* fp;
 | 
			
		||||
} NPPrintCallbackStruct;
 | 
			
		||||
 | 
			
		||||
#endif /* XP_UNIX */
 | 
			
		||||
 | 
			
		||||
#if defined(XP_MACOSX)
 | 
			
		||||
typedef enum {
 | 
			
		||||
#ifndef NP_NO_QUICKDRAW
 | 
			
		||||
  NPDrawingModelQuickDraw = 0,
 | 
			
		||||
#endif
 | 
			
		||||
  NPDrawingModelCoreGraphics = 1,
 | 
			
		||||
  NPDrawingModelOpenGL = 2,
 | 
			
		||||
  NPDrawingModelCoreAnimation = 3,
 | 
			
		||||
  NPDrawingModelInvalidatingCoreAnimation = 4
 | 
			
		||||
} NPDrawingModel;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
#ifndef NP_NO_CARBON
 | 
			
		||||
  NPEventModelCarbon = 0,
 | 
			
		||||
#endif
 | 
			
		||||
  NPEventModelCocoa = 1
 | 
			
		||||
} NPEventModel;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 *   The following masks are applied on certain platforms to NPNV and
 | 
			
		||||
 *   NPPV selectors that pass around pointers to COM interfaces. Newer
 | 
			
		||||
 *   compilers on some platforms may generate vtables that are not
 | 
			
		||||
 *   compatible with older compilers. To prevent older plugins from
 | 
			
		||||
 *   not understanding a new browser's ABI, these masks change the
 | 
			
		||||
 *   values of those selectors on those platforms. To remain backwards
 | 
			
		||||
 *   compatible with different versions of the browser, plugins can
 | 
			
		||||
 *   use these masks to dynamically determine and use the correct C++
 | 
			
		||||
 *   ABI that the browser is expecting. This does not apply to Windows
 | 
			
		||||
 *   as Microsoft's COM ABI will likely not change.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#define NP_ABI_GCC3_MASK  0x10000000
 | 
			
		||||
/*
 | 
			
		||||
 *   gcc 3.x generated vtables on UNIX and OSX are incompatible with
 | 
			
		||||
 *   previous compilers.
 | 
			
		||||
 */
 | 
			
		||||
#if (defined(XP_UNIX) && defined(__GNUC__) && (__GNUC__ >= 3))
 | 
			
		||||
#define _NP_ABI_MIXIN_FOR_GCC3 NP_ABI_GCC3_MASK
 | 
			
		||||
#else
 | 
			
		||||
#define _NP_ABI_MIXIN_FOR_GCC3 0
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(XP_MACOSX)
 | 
			
		||||
#define NP_ABI_MACHO_MASK 0x01000000
 | 
			
		||||
#define _NP_ABI_MIXIN_FOR_MACHO NP_ABI_MACHO_MASK
 | 
			
		||||
#else
 | 
			
		||||
#define _NP_ABI_MIXIN_FOR_MACHO 0
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define NP_ABI_MASK (_NP_ABI_MIXIN_FOR_GCC3 | _NP_ABI_MIXIN_FOR_MACHO)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * List of variable names for which NPP_GetValue shall be implemented
 | 
			
		||||
 */
 | 
			
		||||
typedef enum {
 | 
			
		||||
  NPPVpluginNameString = 1,
 | 
			
		||||
  NPPVpluginDescriptionString,
 | 
			
		||||
  NPPVpluginWindowBool,
 | 
			
		||||
  NPPVpluginTransparentBool,
 | 
			
		||||
  NPPVjavaClass,
 | 
			
		||||
  NPPVpluginWindowSize,
 | 
			
		||||
  NPPVpluginTimerInterval,
 | 
			
		||||
  NPPVpluginScriptableInstance = (10 | NP_ABI_MASK),
 | 
			
		||||
  NPPVpluginScriptableIID = 11,
 | 
			
		||||
  NPPVjavascriptPushCallerBool = 12,
 | 
			
		||||
  NPPVpluginKeepLibraryInMemory = 13,
 | 
			
		||||
  NPPVpluginNeedsXEmbed         = 14,
 | 
			
		||||
 | 
			
		||||
  /* Get the NPObject for scripting the plugin. Introduced in NPAPI minor version 14.
 | 
			
		||||
   */
 | 
			
		||||
  NPPVpluginScriptableNPObject  = 15,
 | 
			
		||||
 | 
			
		||||
  /* Get the plugin value (as \0-terminated UTF-8 string data) for
 | 
			
		||||
   * form submission if the plugin is part of a form. Use
 | 
			
		||||
   * NPN_MemAlloc() to allocate memory for the string data. Introduced
 | 
			
		||||
   * in NPAPI minor version 15.
 | 
			
		||||
   */
 | 
			
		||||
  NPPVformValue = 16,
 | 
			
		||||
 | 
			
		||||
  NPPVpluginUrlRequestsDisplayedBool = 17,
 | 
			
		||||
 | 
			
		||||
  /* Checks if the plugin is interested in receiving the http body of
 | 
			
		||||
   * all http requests (including failed ones, http status != 200).
 | 
			
		||||
   */
 | 
			
		||||
  NPPVpluginWantsAllNetworkStreams = 18,
 | 
			
		||||
 | 
			
		||||
  /* Browsers can retrieve a native ATK accessibility plug ID via this variable. */
 | 
			
		||||
  NPPVpluginNativeAccessibleAtkPlugId = 19,
 | 
			
		||||
 | 
			
		||||
  /* Checks to see if the plug-in would like the browser to load the "src" attribute. */
 | 
			
		||||
  NPPVpluginCancelSrcStream = 20,
 | 
			
		||||
 | 
			
		||||
  NPPVsupportsAdvancedKeyHandling = 21,
 | 
			
		||||
 | 
			
		||||
  NPPVpluginUsesDOMForCursorBool = 22
 | 
			
		||||
 | 
			
		||||
#if defined(XP_MACOSX)
 | 
			
		||||
  /* Used for negotiating drawing models */
 | 
			
		||||
  , NPPVpluginDrawingModel = 1000
 | 
			
		||||
  /* Used for negotiating event models */
 | 
			
		||||
  , NPPVpluginEventModel = 1001
 | 
			
		||||
  /* In the NPDrawingModelCoreAnimation drawing model, the browser asks the plug-in for a Core Animation layer. */
 | 
			
		||||
  , NPPVpluginCoreAnimationLayer = 1003
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (MOZ_PLATFORM_MAEMO == 5) || (MOZ_PLATFORM_MAEMO == 6)
 | 
			
		||||
  , NPPVpluginWindowlessLocalBool = 2002
 | 
			
		||||
#endif
 | 
			
		||||
} NPPVariable;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * List of variable names for which NPN_GetValue should be implemented.
 | 
			
		||||
 */
 | 
			
		||||
typedef enum {
 | 
			
		||||
  NPNVxDisplay = 1,
 | 
			
		||||
  NPNVxtAppContext,
 | 
			
		||||
  NPNVnetscapeWindow,
 | 
			
		||||
  NPNVjavascriptEnabledBool,
 | 
			
		||||
  NPNVasdEnabledBool,
 | 
			
		||||
  NPNVisOfflineBool,
 | 
			
		||||
 | 
			
		||||
  NPNVserviceManager = (10 | NP_ABI_MASK),
 | 
			
		||||
  NPNVDOMElement     = (11 | NP_ABI_MASK),
 | 
			
		||||
  NPNVDOMWindow      = (12 | NP_ABI_MASK),
 | 
			
		||||
  NPNVToolkit        = (13 | NP_ABI_MASK),
 | 
			
		||||
  NPNVSupportsXEmbedBool = 14,
 | 
			
		||||
 | 
			
		||||
  /* Get the NPObject wrapper for the browser window. */
 | 
			
		||||
  NPNVWindowNPObject = 15,
 | 
			
		||||
 | 
			
		||||
  /* Get the NPObject wrapper for the plugins DOM element. */
 | 
			
		||||
  NPNVPluginElementNPObject = 16,
 | 
			
		||||
 | 
			
		||||
  NPNVSupportsWindowless = 17,
 | 
			
		||||
 | 
			
		||||
  NPNVprivateModeBool = 18,
 | 
			
		||||
 | 
			
		||||
  NPNVsupportsAdvancedKeyHandling = 21
 | 
			
		||||
 | 
			
		||||
#if defined(XP_MACOSX)
 | 
			
		||||
  /* Used for negotiating drawing models */
 | 
			
		||||
  , NPNVpluginDrawingModel = 1000
 | 
			
		||||
#ifndef NP_NO_QUICKDRAW
 | 
			
		||||
  , NPNVsupportsQuickDrawBool = 2000
 | 
			
		||||
#endif
 | 
			
		||||
  , NPNVsupportsCoreGraphicsBool = 2001
 | 
			
		||||
  , NPNVsupportsOpenGLBool = 2002
 | 
			
		||||
  , NPNVsupportsCoreAnimationBool = 2003
 | 
			
		||||
  , NPNVsupportsInvalidatingCoreAnimationBool = 2004
 | 
			
		||||
#ifndef NP_NO_CARBON
 | 
			
		||||
  , NPNVsupportsCarbonBool = 3000 /* TRUE if the browser supports the Carbon event model */
 | 
			
		||||
#endif
 | 
			
		||||
  , NPNVsupportsCocoaBool = 3001 /* TRUE if the browser supports the Cocoa event model */
 | 
			
		||||
  , NPNVsupportsUpdatedCocoaTextInputBool = 3002 /* TRUE if the browser supports the updated
 | 
			
		||||
                                                    Cocoa text input specification. */
 | 
			
		||||
  , NPNVsupportsCompositingCoreAnimationPluginsBool = 74656 /* TRUE if the browser supports
 | 
			
		||||
                                                               CA model compositing */
 | 
			
		||||
#endif
 | 
			
		||||
#if (MOZ_PLATFORM_MAEMO == 5) || (MOZ_PLATFORM_MAEMO == 6)
 | 
			
		||||
  , NPNVSupportsWindowlessLocal = 2002
 | 
			
		||||
#endif
 | 
			
		||||
} NPNVariable;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
  NPNURLVCookie = 501,
 | 
			
		||||
  NPNURLVProxy
 | 
			
		||||
} NPNURLVariable;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * The type of Toolkit the widgets use
 | 
			
		||||
 */
 | 
			
		||||
typedef enum {
 | 
			
		||||
  NPNVGtk12 = 1,
 | 
			
		||||
  NPNVGtk2
 | 
			
		||||
} NPNToolkitType;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * The type of a NPWindow - it specifies the type of the data structure
 | 
			
		||||
 * returned in the window field.
 | 
			
		||||
 */
 | 
			
		||||
typedef enum {
 | 
			
		||||
  NPWindowTypeWindow = 1,
 | 
			
		||||
  NPWindowTypeDrawable
 | 
			
		||||
} NPWindowType;
 | 
			
		||||
 | 
			
		||||
typedef struct _NPWindow
 | 
			
		||||
{
 | 
			
		||||
  void* window;  /* Platform specific window handle */
 | 
			
		||||
                 /* OS/2: x - Position of bottom left corner */
 | 
			
		||||
                 /* OS/2: y - relative to visible netscape window */
 | 
			
		||||
  int32_t  x;      /* Position of top left corner relative */
 | 
			
		||||
  int32_t  y;      /* to a netscape page. */
 | 
			
		||||
  uint32_t width;  /* Maximum window size */
 | 
			
		||||
  uint32_t height;
 | 
			
		||||
  NPRect   clipRect; /* Clipping rectangle in port coordinates */
 | 
			
		||||
#if (defined(XP_UNIX) || defined(XP_SYMBIAN)) && !defined(XP_MACOSX)
 | 
			
		||||
  void * ws_info; /* Platform-dependent additional data */
 | 
			
		||||
#endif /* XP_UNIX */
 | 
			
		||||
  NPWindowType type; /* Is this a window or a drawable? */
 | 
			
		||||
} NPWindow;
 | 
			
		||||
 | 
			
		||||
typedef struct _NPImageExpose
 | 
			
		||||
{
 | 
			
		||||
  char*    data;       /* image pointer */
 | 
			
		||||
  int32_t  stride;     /* Stride of data image pointer */
 | 
			
		||||
  int32_t  depth;      /* Depth of image pointer */
 | 
			
		||||
  int32_t  x;          /* Expose x */
 | 
			
		||||
  int32_t  y;          /* Expose y */
 | 
			
		||||
  uint32_t width;      /* Expose width */
 | 
			
		||||
  uint32_t height;     /* Expose height */
 | 
			
		||||
  NPSize   dataSize;   /* Data buffer size */
 | 
			
		||||
  float    translateX; /* translate X matrix value */
 | 
			
		||||
  float    translateY; /* translate Y matrix value */
 | 
			
		||||
  float    scaleX;     /* scale X matrix value */
 | 
			
		||||
  float    scaleY;     /* scale Y matrix value */
 | 
			
		||||
} NPImageExpose;
 | 
			
		||||
 | 
			
		||||
typedef struct _NPFullPrint
 | 
			
		||||
{
 | 
			
		||||
  NPBool pluginPrinted;/* Set TRUE if plugin handled fullscreen printing */
 | 
			
		||||
  NPBool printOne;     /* TRUE if plugin should print one copy to default
 | 
			
		||||
                          printer */
 | 
			
		||||
  void* platformPrint; /* Platform-specific printing info */
 | 
			
		||||
} NPFullPrint;
 | 
			
		||||
 | 
			
		||||
typedef struct _NPEmbedPrint
 | 
			
		||||
{
 | 
			
		||||
  NPWindow window;
 | 
			
		||||
  void* platformPrint; /* Platform-specific printing info */
 | 
			
		||||
} NPEmbedPrint;
 | 
			
		||||
 | 
			
		||||
typedef struct _NPPrint
 | 
			
		||||
{
 | 
			
		||||
  uint16_t mode;               /* NP_FULL or NP_EMBED */
 | 
			
		||||
  union
 | 
			
		||||
  {
 | 
			
		||||
    NPFullPrint fullPrint;   /* if mode is NP_FULL */
 | 
			
		||||
    NPEmbedPrint embedPrint; /* if mode is NP_EMBED */
 | 
			
		||||
  } print;
 | 
			
		||||
} NPPrint;
 | 
			
		||||
 | 
			
		||||
#if defined(XP_MACOSX)
 | 
			
		||||
#ifndef NP_NO_CARBON
 | 
			
		||||
typedef EventRecord NPEvent;
 | 
			
		||||
#endif
 | 
			
		||||
#elif defined(XP_SYMBIAN)
 | 
			
		||||
typedef QEvent NPEvent;
 | 
			
		||||
#elif defined(XP_WIN)
 | 
			
		||||
typedef struct _NPEvent
 | 
			
		||||
{
 | 
			
		||||
  uint16_t event;
 | 
			
		||||
  uintptr_t wParam;
 | 
			
		||||
  uintptr_t lParam;
 | 
			
		||||
} NPEvent;
 | 
			
		||||
#elif defined(XP_OS2)
 | 
			
		||||
typedef struct _NPEvent
 | 
			
		||||
{
 | 
			
		||||
  uint32_t event;
 | 
			
		||||
  uint32_t wParam;
 | 
			
		||||
  uint32_t lParam;
 | 
			
		||||
} NPEvent;
 | 
			
		||||
#elif defined(XP_UNIX) && defined(MOZ_X11)
 | 
			
		||||
typedef XEvent NPEvent;
 | 
			
		||||
#else
 | 
			
		||||
typedef void*  NPEvent;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(XP_MACOSX)
 | 
			
		||||
typedef void* NPRegion;
 | 
			
		||||
#ifndef NP_NO_QUICKDRAW
 | 
			
		||||
typedef RgnHandle NPQDRegion;
 | 
			
		||||
#endif
 | 
			
		||||
typedef CGPathRef NPCGRegion;
 | 
			
		||||
#elif defined(XP_WIN)
 | 
			
		||||
typedef HRGN NPRegion;
 | 
			
		||||
#elif defined(XP_UNIX) && defined(MOZ_X11)
 | 
			
		||||
typedef Region NPRegion;
 | 
			
		||||
#elif defined(XP_SYMBIAN)
 | 
			
		||||
typedef QRegion* NPRegion;
 | 
			
		||||
#else
 | 
			
		||||
typedef void *NPRegion;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
typedef struct _NPNSString NPNSString;
 | 
			
		||||
typedef struct _NPNSWindow NPNSWindow;
 | 
			
		||||
typedef struct _NPNSMenu   NPNSMenu;
 | 
			
		||||
 | 
			
		||||
#if defined(XP_MACOSX)
 | 
			
		||||
typedef NPNSMenu NPMenu;
 | 
			
		||||
#else
 | 
			
		||||
typedef void *NPMenu;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
  NPCoordinateSpacePlugin = 1,
 | 
			
		||||
  NPCoordinateSpaceWindow,
 | 
			
		||||
  NPCoordinateSpaceFlippedWindow,
 | 
			
		||||
  NPCoordinateSpaceScreen,
 | 
			
		||||
  NPCoordinateSpaceFlippedScreen
 | 
			
		||||
} NPCoordinateSpace;
 | 
			
		||||
 | 
			
		||||
#if defined(XP_MACOSX)
 | 
			
		||||
 | 
			
		||||
#ifndef NP_NO_QUICKDRAW
 | 
			
		||||
typedef struct NP_Port
 | 
			
		||||
{
 | 
			
		||||
  CGrafPtr port;
 | 
			
		||||
  int32_t portx; /* position inside the topmost window */
 | 
			
		||||
  int32_t porty;
 | 
			
		||||
} NP_Port;
 | 
			
		||||
#endif /* NP_NO_QUICKDRAW */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * NP_CGContext is the type of the NPWindow's 'window' when the plugin specifies NPDrawingModelCoreGraphics
 | 
			
		||||
 * as its drawing model.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
typedef struct NP_CGContext
 | 
			
		||||
{
 | 
			
		||||
  CGContextRef context;
 | 
			
		||||
  void *window; /* A WindowRef under the Carbon event model. */
 | 
			
		||||
} NP_CGContext;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * NP_GLContext is the type of the NPWindow's 'window' when the plugin specifies NPDrawingModelOpenGL as its
 | 
			
		||||
 * drawing model.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
typedef struct NP_GLContext
 | 
			
		||||
{
 | 
			
		||||
  CGLContextObj context;
 | 
			
		||||
#ifdef NP_NO_CARBON
 | 
			
		||||
  NPNSWindow *window;
 | 
			
		||||
#else
 | 
			
		||||
  void *window; /* Can be either an NSWindow or a WindowRef depending on the event model */
 | 
			
		||||
#endif
 | 
			
		||||
} NP_GLContext;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
  NPCocoaEventDrawRect = 1,
 | 
			
		||||
  NPCocoaEventMouseDown,
 | 
			
		||||
  NPCocoaEventMouseUp,
 | 
			
		||||
  NPCocoaEventMouseMoved,
 | 
			
		||||
  NPCocoaEventMouseEntered,
 | 
			
		||||
  NPCocoaEventMouseExited,
 | 
			
		||||
  NPCocoaEventMouseDragged,
 | 
			
		||||
  NPCocoaEventKeyDown,
 | 
			
		||||
  NPCocoaEventKeyUp,
 | 
			
		||||
  NPCocoaEventFlagsChanged,
 | 
			
		||||
  NPCocoaEventFocusChanged,
 | 
			
		||||
  NPCocoaEventWindowFocusChanged,
 | 
			
		||||
  NPCocoaEventScrollWheel,
 | 
			
		||||
  NPCocoaEventTextInput
 | 
			
		||||
} NPCocoaEventType;
 | 
			
		||||
 | 
			
		||||
typedef struct _NPCocoaEvent {
 | 
			
		||||
  NPCocoaEventType type;
 | 
			
		||||
  uint32_t version;
 | 
			
		||||
  union {
 | 
			
		||||
    struct {
 | 
			
		||||
      uint32_t modifierFlags;
 | 
			
		||||
      double   pluginX;
 | 
			
		||||
      double   pluginY;
 | 
			
		||||
      int32_t  buttonNumber;
 | 
			
		||||
      int32_t  clickCount;
 | 
			
		||||
      double   deltaX;
 | 
			
		||||
      double   deltaY;
 | 
			
		||||
      double   deltaZ;
 | 
			
		||||
    } mouse;
 | 
			
		||||
    struct {
 | 
			
		||||
      uint32_t    modifierFlags;
 | 
			
		||||
      NPNSString *characters;
 | 
			
		||||
      NPNSString *charactersIgnoringModifiers;
 | 
			
		||||
      NPBool      isARepeat;
 | 
			
		||||
      uint16_t    keyCode;
 | 
			
		||||
    } key;
 | 
			
		||||
    struct {
 | 
			
		||||
      CGContextRef context;
 | 
			
		||||
      double x;
 | 
			
		||||
      double y;
 | 
			
		||||
      double width;
 | 
			
		||||
      double height;
 | 
			
		||||
    } draw;
 | 
			
		||||
    struct {
 | 
			
		||||
      NPBool hasFocus;
 | 
			
		||||
    } focus;
 | 
			
		||||
    struct {
 | 
			
		||||
      NPNSString *text;
 | 
			
		||||
    } text;
 | 
			
		||||
  } data;
 | 
			
		||||
} NPCocoaEvent;
 | 
			
		||||
 | 
			
		||||
#ifndef NP_NO_CARBON
 | 
			
		||||
/* Non-standard event types that can be passed to HandleEvent */
 | 
			
		||||
enum NPEventType {
 | 
			
		||||
  NPEventType_GetFocusEvent = (osEvt + 16),
 | 
			
		||||
  NPEventType_LoseFocusEvent,
 | 
			
		||||
  NPEventType_AdjustCursorEvent,
 | 
			
		||||
  NPEventType_MenuCommandEvent,
 | 
			
		||||
  NPEventType_ClippingChangedEvent,
 | 
			
		||||
  NPEventType_ScrollingBeginsEvent = 1000,
 | 
			
		||||
  NPEventType_ScrollingEndsEvent
 | 
			
		||||
};
 | 
			
		||||
#endif /* NP_NO_CARBON */
 | 
			
		||||
 | 
			
		||||
#endif /* XP_MACOSX */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Values for mode passed to NPP_New:
 | 
			
		||||
 */
 | 
			
		||||
#define NP_EMBED 1
 | 
			
		||||
#define NP_FULL  2
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Values for stream type passed to NPP_NewStream:
 | 
			
		||||
 */
 | 
			
		||||
#define NP_NORMAL     1
 | 
			
		||||
#define NP_SEEK       2
 | 
			
		||||
#define NP_ASFILE     3
 | 
			
		||||
#define NP_ASFILEONLY 4
 | 
			
		||||
 | 
			
		||||
#define NP_MAXREADY (((unsigned)(~0)<<1)>>1)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Flags for NPP_ClearSiteData.
 | 
			
		||||
 */
 | 
			
		||||
#define NP_CLEAR_ALL   0
 | 
			
		||||
#define NP_CLEAR_CACHE (1 << 0)
 | 
			
		||||
 | 
			
		||||
#if !defined(__LP64__)
 | 
			
		||||
#if defined(XP_MACOSX)
 | 
			
		||||
#pragma options align=reset
 | 
			
		||||
#endif
 | 
			
		||||
#endif /* __LP64__ */
 | 
			
		||||
 | 
			
		||||
/*----------------------------------------------------------------------*/
 | 
			
		||||
/*       Error and Reason Code definitions                              */
 | 
			
		||||
/*----------------------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Values of type NPError:
 | 
			
		||||
 */
 | 
			
		||||
#define NPERR_BASE                         0
 | 
			
		||||
#define NPERR_NO_ERROR                    (NPERR_BASE + 0)
 | 
			
		||||
#define NPERR_GENERIC_ERROR               (NPERR_BASE + 1)
 | 
			
		||||
#define NPERR_INVALID_INSTANCE_ERROR      (NPERR_BASE + 2)
 | 
			
		||||
#define NPERR_INVALID_FUNCTABLE_ERROR     (NPERR_BASE + 3)
 | 
			
		||||
#define NPERR_MODULE_LOAD_FAILED_ERROR    (NPERR_BASE + 4)
 | 
			
		||||
#define NPERR_OUT_OF_MEMORY_ERROR         (NPERR_BASE + 5)
 | 
			
		||||
#define NPERR_INVALID_PLUGIN_ERROR        (NPERR_BASE + 6)
 | 
			
		||||
#define NPERR_INVALID_PLUGIN_DIR_ERROR    (NPERR_BASE + 7)
 | 
			
		||||
#define NPERR_INCOMPATIBLE_VERSION_ERROR  (NPERR_BASE + 8)
 | 
			
		||||
#define NPERR_INVALID_PARAM               (NPERR_BASE + 9)
 | 
			
		||||
#define NPERR_INVALID_URL                 (NPERR_BASE + 10)
 | 
			
		||||
#define NPERR_FILE_NOT_FOUND              (NPERR_BASE + 11)
 | 
			
		||||
#define NPERR_NO_DATA                     (NPERR_BASE + 12)
 | 
			
		||||
#define NPERR_STREAM_NOT_SEEKABLE         (NPERR_BASE + 13)
 | 
			
		||||
#define NPERR_TIME_RANGE_NOT_SUPPORTED    (NPERR_BASE + 14)
 | 
			
		||||
#define NPERR_MALFORMED_SITE              (NPERR_BASE + 15)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Values of type NPReason:
 | 
			
		||||
 */
 | 
			
		||||
#define NPRES_BASE          0
 | 
			
		||||
#define NPRES_DONE         (NPRES_BASE + 0)
 | 
			
		||||
#define NPRES_NETWORK_ERR  (NPRES_BASE + 1)
 | 
			
		||||
#define NPRES_USER_BREAK   (NPRES_BASE + 2)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Don't use these obsolete error codes any more.
 | 
			
		||||
 */
 | 
			
		||||
#define NP_NOERR  NP_NOERR_is_obsolete_use_NPERR_NO_ERROR
 | 
			
		||||
#define NP_EINVAL NP_EINVAL_is_obsolete_use_NPERR_GENERIC_ERROR
 | 
			
		||||
#define NP_EABORT NP_EABORT_is_obsolete_use_NPRES_USER_BREAK
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Version feature information
 | 
			
		||||
 */
 | 
			
		||||
#define NPVERS_HAS_STREAMOUTPUT             8
 | 
			
		||||
#define NPVERS_HAS_NOTIFICATION             9
 | 
			
		||||
#define NPVERS_HAS_LIVECONNECT              9
 | 
			
		||||
#define NPVERS_68K_HAS_LIVECONNECT          11
 | 
			
		||||
#define NPVERS_HAS_WINDOWLESS               11
 | 
			
		||||
#define NPVERS_HAS_XPCONNECT_SCRIPTING      13
 | 
			
		||||
#define NPVERS_HAS_NPRUNTIME_SCRIPTING      14
 | 
			
		||||
#define NPVERS_HAS_FORM_VALUES              15
 | 
			
		||||
#define NPVERS_HAS_POPUPS_ENABLED_STATE     16
 | 
			
		||||
#define NPVERS_HAS_RESPONSE_HEADERS         17
 | 
			
		||||
#define NPVERS_HAS_NPOBJECT_ENUM            18
 | 
			
		||||
#define NPVERS_HAS_PLUGIN_THREAD_ASYNC_CALL 19
 | 
			
		||||
#define NPVERS_HAS_ALL_NETWORK_STREAMS      20
 | 
			
		||||
#define NPVERS_HAS_URL_AND_AUTH_INFO        21
 | 
			
		||||
#define NPVERS_HAS_PRIVATE_MODE             22
 | 
			
		||||
#define NPVERS_MACOSX_HAS_COCOA_EVENTS      23
 | 
			
		||||
#define NPVERS_HAS_ADVANCED_KEY_HANDLING    25
 | 
			
		||||
#define NPVERS_HAS_URL_REDIRECT_HANDLING    26
 | 
			
		||||
#define NPVERS_HAS_CLEAR_SITE_DATA          27
 | 
			
		||||
 | 
			
		||||
/*----------------------------------------------------------------------*/
 | 
			
		||||
/*                        Function Prototypes                           */
 | 
			
		||||
/*----------------------------------------------------------------------*/
 | 
			
		||||
 | 
			
		||||
#if defined(__OS2__)
 | 
			
		||||
#define NP_LOADDS _System
 | 
			
		||||
#else
 | 
			
		||||
#define NP_LOADDS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* NPP_* functions are provided by the plugin and called by the navigator. */
 | 
			
		||||
 | 
			
		||||
#if defined(XP_UNIX)
 | 
			
		||||
const char* NPP_GetMIMEDescription(void);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
NPError NP_LOADDS NPP_New(NPMIMEType pluginType, NPP instance,
 | 
			
		||||
                          uint16_t mode, int16_t argc, char* argn[],
 | 
			
		||||
                          char* argv[], NPSavedData* saved);
 | 
			
		||||
NPError NP_LOADDS NPP_Destroy(NPP instance, NPSavedData** save);
 | 
			
		||||
NPError NP_LOADDS NPP_SetWindow(NPP instance, NPWindow* window);
 | 
			
		||||
NPError NP_LOADDS NPP_NewStream(NPP instance, NPMIMEType type,
 | 
			
		||||
                                NPStream* stream, NPBool seekable,
 | 
			
		||||
                                uint16_t* stype);
 | 
			
		||||
NPError NP_LOADDS NPP_DestroyStream(NPP instance, NPStream* stream,
 | 
			
		||||
                                    NPReason reason);
 | 
			
		||||
int32_t NP_LOADDS NPP_WriteReady(NPP instance, NPStream* stream);
 | 
			
		||||
int32_t NP_LOADDS NPP_Write(NPP instance, NPStream* stream, int32_t offset,
 | 
			
		||||
                            int32_t len, void* buffer);
 | 
			
		||||
void    NP_LOADDS NPP_StreamAsFile(NPP instance, NPStream* stream,
 | 
			
		||||
                                   const char* fname);
 | 
			
		||||
void    NP_LOADDS NPP_Print(NPP instance, NPPrint* platformPrint);
 | 
			
		||||
int16_t NP_LOADDS NPP_HandleEvent(NPP instance, void* event);
 | 
			
		||||
void    NP_LOADDS NPP_URLNotify(NPP instance, const char* url,
 | 
			
		||||
                                NPReason reason, void* notifyData);
 | 
			
		||||
NPError NP_LOADDS NPP_GetValue(NPP instance, NPPVariable variable, void *value);
 | 
			
		||||
NPError NP_LOADDS NPP_SetValue(NPP instance, NPNVariable variable, void *value);
 | 
			
		||||
NPBool  NP_LOADDS NPP_GotFocus(NPP instance, NPFocusDirection direction);
 | 
			
		||||
void    NP_LOADDS NPP_LostFocus(NPP instance);
 | 
			
		||||
void    NP_LOADDS NPP_URLRedirectNotify(NPP instance, const char* url, int32_t status, void* notifyData);
 | 
			
		||||
NPError NP_LOADDS NPP_ClearSiteData(const char* site, uint64_t flags, uint64_t maxAge);
 | 
			
		||||
char**  NP_LOADDS NPP_GetSitesWithData(void);
 | 
			
		||||
 | 
			
		||||
/* NPN_* functions are provided by the navigator and called by the plugin. */
 | 
			
		||||
void        NP_LOADDS NPN_Version(int* plugin_major, int* plugin_minor,
 | 
			
		||||
                                  int* netscape_major, int* netscape_minor);
 | 
			
		||||
NPError     NP_LOADDS NPN_GetURLNotify(NPP instance, const char* url,
 | 
			
		||||
                                       const char* target, void* notifyData);
 | 
			
		||||
NPError     NP_LOADDS NPN_GetURL(NPP instance, const char* url,
 | 
			
		||||
                                 const char* target);
 | 
			
		||||
NPError     NP_LOADDS NPN_PostURLNotify(NPP instance, const char* url,
 | 
			
		||||
                                        const char* target, uint32_t len,
 | 
			
		||||
                                        const char* buf, NPBool file,
 | 
			
		||||
                                        void* notifyData);
 | 
			
		||||
NPError     NP_LOADDS NPN_PostURL(NPP instance, const char* url,
 | 
			
		||||
                                  const char* target, uint32_t len,
 | 
			
		||||
                                  const char* buf, NPBool file);
 | 
			
		||||
NPError     NP_LOADDS NPN_RequestRead(NPStream* stream, NPByteRange* rangeList);
 | 
			
		||||
NPError     NP_LOADDS NPN_NewStream(NPP instance, NPMIMEType type,
 | 
			
		||||
                                    const char* target, NPStream** stream);
 | 
			
		||||
int32_t     NP_LOADDS NPN_Write(NPP instance, NPStream* stream, int32_t len,
 | 
			
		||||
                                void* buffer);
 | 
			
		||||
NPError     NP_LOADDS NPN_DestroyStream(NPP instance, NPStream* stream,
 | 
			
		||||
                                        NPReason reason);
 | 
			
		||||
void        NP_LOADDS NPN_Status(NPP instance, const char* message);
 | 
			
		||||
const char* NP_LOADDS NPN_UserAgent(NPP instance);
 | 
			
		||||
void*       NP_LOADDS NPN_MemAlloc(uint32_t size);
 | 
			
		||||
void        NP_LOADDS NPN_MemFree(void* ptr);
 | 
			
		||||
uint32_t    NP_LOADDS NPN_MemFlush(uint32_t size);
 | 
			
		||||
void        NP_LOADDS NPN_ReloadPlugins(NPBool reloadPages);
 | 
			
		||||
NPError     NP_LOADDS NPN_GetValue(NPP instance, NPNVariable variable,
 | 
			
		||||
                                   void *value);
 | 
			
		||||
NPError     NP_LOADDS NPN_SetValue(NPP instance, NPPVariable variable,
 | 
			
		||||
                                   void *value);
 | 
			
		||||
void        NP_LOADDS NPN_InvalidateRect(NPP instance, NPRect *invalidRect);
 | 
			
		||||
void        NP_LOADDS NPN_InvalidateRegion(NPP instance,
 | 
			
		||||
                                           NPRegion invalidRegion);
 | 
			
		||||
void        NP_LOADDS NPN_ForceRedraw(NPP instance);
 | 
			
		||||
void        NP_LOADDS NPN_PushPopupsEnabledState(NPP instance, NPBool enabled);
 | 
			
		||||
void        NP_LOADDS NPN_PopPopupsEnabledState(NPP instance);
 | 
			
		||||
void        NP_LOADDS NPN_PluginThreadAsyncCall(NPP instance,
 | 
			
		||||
                                                void (*func) (void *),
 | 
			
		||||
                                                void *userData);
 | 
			
		||||
NPError     NP_LOADDS NPN_GetValueForURL(NPP instance, NPNURLVariable variable,
 | 
			
		||||
                                         const char *url, char **value,
 | 
			
		||||
                                         uint32_t *len);
 | 
			
		||||
NPError     NP_LOADDS NPN_SetValueForURL(NPP instance, NPNURLVariable variable,
 | 
			
		||||
                                         const char *url, const char *value,
 | 
			
		||||
                                         uint32_t len);
 | 
			
		||||
NPError     NP_LOADDS NPN_GetAuthenticationInfo(NPP instance,
 | 
			
		||||
                                                const char *protocol,
 | 
			
		||||
                                                const char *host, int32_t port,
 | 
			
		||||
                                                const char *scheme,
 | 
			
		||||
                                                const char *realm,
 | 
			
		||||
                                                char **username, uint32_t *ulen,
 | 
			
		||||
                                                char **password,
 | 
			
		||||
                                                uint32_t *plen);
 | 
			
		||||
uint32_t    NP_LOADDS NPN_ScheduleTimer(NPP instance, uint32_t interval, NPBool repeat, void (*timerFunc)(NPP npp, uint32_t timerID));
 | 
			
		||||
void        NP_LOADDS NPN_UnscheduleTimer(NPP instance, uint32_t timerID);
 | 
			
		||||
NPError     NP_LOADDS NPN_PopUpContextMenu(NPP instance, NPMenu* menu);
 | 
			
		||||
NPBool      NP_LOADDS NPN_ConvertPoint(NPP instance, double sourceX, double sourceY, NPCoordinateSpace sourceSpace, double *destX, double *destY, NPCoordinateSpace destSpace);
 | 
			
		||||
NPBool      NP_LOADDS NPN_HandleEvent(NPP instance, void *event, NPBool handled);
 | 
			
		||||
NPBool      NP_LOADDS NPN_UnfocusInstance(NPP instance, NPFocusDirection direction);
 | 
			
		||||
void        NP_LOADDS NPN_URLRedirectResponse(NPP instance, void* notifyData, NPBool allow);
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}  /* end extern "C" */
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* RC_INVOKED */
 | 
			
		||||
#if defined(__OS2__)
 | 
			
		||||
#pragma pack()
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* npapi_h_ */
 | 
			
		||||
							
								
								
									
										322
									
								
								browser-plugin/npapi/npfunctions.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										322
									
								
								browser-plugin/npapi/npfunctions.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,322 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
 | 
			
		||||
/* ***** BEGIN LICENSE BLOCK *****
 | 
			
		||||
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 | 
			
		||||
 *
 | 
			
		||||
 * The contents of this file are subject to the Mozilla Public License Version
 | 
			
		||||
 * 1.1 (the "License"); you may not use this file except in compliance with
 | 
			
		||||
 * the License. You may obtain a copy of the License at
 | 
			
		||||
 * http://www.mozilla.org/MPL/
 | 
			
		||||
 *
 | 
			
		||||
 * Software distributed under the License is distributed on an "AS IS" basis,
 | 
			
		||||
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 | 
			
		||||
 * for the specific language governing rights and limitations under the
 | 
			
		||||
 * License.
 | 
			
		||||
 *
 | 
			
		||||
 * The Original Code is mozilla.org code.
 | 
			
		||||
 *
 | 
			
		||||
 * The Initial Developer of the Original Code is
 | 
			
		||||
 * Netscape Communications Corporation.
 | 
			
		||||
 * Portions created by the Initial Developer are Copyright (C) 1998
 | 
			
		||||
 * the Initial Developer. All Rights Reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Contributor(s):
 | 
			
		||||
 *
 | 
			
		||||
 * Alternatively, the contents of this file may be used under the terms of
 | 
			
		||||
 * either the GNU General Public License Version 2 or later (the "GPL"), or
 | 
			
		||||
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 | 
			
		||||
 * in which case the provisions of the GPL or the LGPL are applicable instead
 | 
			
		||||
 * of those above. If you wish to allow use of your version of this file only
 | 
			
		||||
 * under the terms of either the GPL or the LGPL, and not to allow others to
 | 
			
		||||
 * use your version of this file under the terms of the MPL, indicate your
 | 
			
		||||
 * decision by deleting the provisions above and replace them with the notice
 | 
			
		||||
 * and other provisions required by the GPL or the LGPL. If you do not delete
 | 
			
		||||
 * the provisions above, a recipient may use your version of this file under
 | 
			
		||||
 * the terms of any one of the MPL, the GPL or the LGPL.
 | 
			
		||||
 *
 | 
			
		||||
 * ***** END LICENSE BLOCK ***** */
 | 
			
		||||
 | 
			
		||||
#ifndef npfunctions_h_
 | 
			
		||||
#define npfunctions_h_
 | 
			
		||||
 | 
			
		||||
#ifdef __OS2__
 | 
			
		||||
#pragma pack(1)
 | 
			
		||||
#define NP_LOADDS _System
 | 
			
		||||
#else
 | 
			
		||||
#define NP_LOADDS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "npapi.h"
 | 
			
		||||
#include "npruntime.h"
 | 
			
		||||
 | 
			
		||||
typedef NPError      (* NP_LOADDS NPP_NewProcPtr)(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char* argn[], char* argv[], NPSavedData* saved);
 | 
			
		||||
typedef NPError      (* NP_LOADDS NPP_DestroyProcPtr)(NPP instance, NPSavedData** save);
 | 
			
		||||
typedef NPError      (* NP_LOADDS NPP_SetWindowProcPtr)(NPP instance, NPWindow* window);
 | 
			
		||||
typedef NPError      (* NP_LOADDS NPP_NewStreamProcPtr)(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16_t* stype);
 | 
			
		||||
typedef NPError      (* NP_LOADDS NPP_DestroyStreamProcPtr)(NPP instance, NPStream* stream, NPReason reason);
 | 
			
		||||
typedef int32_t      (* NP_LOADDS NPP_WriteReadyProcPtr)(NPP instance, NPStream* stream);
 | 
			
		||||
typedef int32_t      (* NP_LOADDS NPP_WriteProcPtr)(NPP instance, NPStream* stream, int32_t offset, int32_t len, void* buffer);
 | 
			
		||||
typedef void         (* NP_LOADDS NPP_StreamAsFileProcPtr)(NPP instance, NPStream* stream, const char* fname);
 | 
			
		||||
typedef void         (* NP_LOADDS NPP_PrintProcPtr)(NPP instance, NPPrint* platformPrint);
 | 
			
		||||
typedef int16_t      (* NP_LOADDS NPP_HandleEventProcPtr)(NPP instance, void* event);
 | 
			
		||||
typedef void         (* NP_LOADDS NPP_URLNotifyProcPtr)(NPP instance, const char* url, NPReason reason, void* notifyData);
 | 
			
		||||
/* Any NPObjects returned to the browser via NPP_GetValue should be retained
 | 
			
		||||
   by the plugin on the way out. The browser is responsible for releasing. */
 | 
			
		||||
typedef NPError      (* NP_LOADDS NPP_GetValueProcPtr)(NPP instance, NPPVariable variable, void *ret_value);
 | 
			
		||||
typedef NPError      (* NP_LOADDS NPP_SetValueProcPtr)(NPP instance, NPNVariable variable, void *value);
 | 
			
		||||
typedef NPBool       (* NP_LOADDS NPP_GotFocusPtr)(NPP instance, NPFocusDirection direction);
 | 
			
		||||
typedef void         (* NP_LOADDS NPP_LostFocusPtr)(NPP instance);
 | 
			
		||||
typedef void         (* NP_LOADDS NPP_URLRedirectNotifyPtr)(NPP instance, const char* url, int32_t status, void* notifyData);
 | 
			
		||||
typedef NPError      (* NP_LOADDS NPP_ClearSiteDataPtr)(const char* site, uint64_t flags, uint64_t maxAge);
 | 
			
		||||
typedef char**       (* NP_LOADDS NPP_GetSitesWithDataPtr)(void);
 | 
			
		||||
 | 
			
		||||
typedef NPError      (*NPN_GetValueProcPtr)(NPP instance, NPNVariable variable, void *ret_value);
 | 
			
		||||
typedef NPError      (*NPN_SetValueProcPtr)(NPP instance, NPPVariable variable, void *value);
 | 
			
		||||
typedef NPError      (*NPN_GetURLNotifyProcPtr)(NPP instance, const char* url, const char* window, void* notifyData);
 | 
			
		||||
typedef NPError      (*NPN_PostURLNotifyProcPtr)(NPP instance, const char* url, const char* window, uint32_t len, const char* buf, NPBool file, void* notifyData);
 | 
			
		||||
typedef NPError      (*NPN_GetURLProcPtr)(NPP instance, const char* url, const char* window);
 | 
			
		||||
typedef NPError      (*NPN_PostURLProcPtr)(NPP instance, const char* url, const char* window, uint32_t len, const char* buf, NPBool file);
 | 
			
		||||
typedef NPError      (*NPN_RequestReadProcPtr)(NPStream* stream, NPByteRange* rangeList);
 | 
			
		||||
typedef NPError      (*NPN_NewStreamProcPtr)(NPP instance, NPMIMEType type, const char* window, NPStream** stream);
 | 
			
		||||
typedef int32_t      (*NPN_WriteProcPtr)(NPP instance, NPStream* stream, int32_t len, void* buffer);
 | 
			
		||||
typedef NPError      (*NPN_DestroyStreamProcPtr)(NPP instance, NPStream* stream, NPReason reason);
 | 
			
		||||
typedef void         (*NPN_StatusProcPtr)(NPP instance, const char* message);
 | 
			
		||||
/* Browser manages the lifetime of the buffer returned by NPN_UserAgent, don't
 | 
			
		||||
   depend on it sticking around and don't free it. */
 | 
			
		||||
typedef const char*  (*NPN_UserAgentProcPtr)(NPP instance);
 | 
			
		||||
typedef void*        (*NPN_MemAllocProcPtr)(uint32_t size);
 | 
			
		||||
typedef void         (*NPN_MemFreeProcPtr)(void* ptr);
 | 
			
		||||
typedef uint32_t     (*NPN_MemFlushProcPtr)(uint32_t size);
 | 
			
		||||
typedef void         (*NPN_ReloadPluginsProcPtr)(NPBool reloadPages);
 | 
			
		||||
typedef void*        (*NPN_GetJavaEnvProcPtr)(void);
 | 
			
		||||
typedef void*        (*NPN_GetJavaPeerProcPtr)(NPP instance);
 | 
			
		||||
typedef void         (*NPN_InvalidateRectProcPtr)(NPP instance, NPRect *rect);
 | 
			
		||||
typedef void         (*NPN_InvalidateRegionProcPtr)(NPP instance, NPRegion region);
 | 
			
		||||
typedef void         (*NPN_ForceRedrawProcPtr)(NPP instance);
 | 
			
		||||
typedef NPIdentifier (*NPN_GetStringIdentifierProcPtr)(const NPUTF8* name);
 | 
			
		||||
typedef void         (*NPN_GetStringIdentifiersProcPtr)(const NPUTF8** names, int32_t nameCount, NPIdentifier* identifiers);
 | 
			
		||||
typedef NPIdentifier (*NPN_GetIntIdentifierProcPtr)(int32_t intid);
 | 
			
		||||
typedef bool         (*NPN_IdentifierIsStringProcPtr)(NPIdentifier identifier);
 | 
			
		||||
typedef NPUTF8*      (*NPN_UTF8FromIdentifierProcPtr)(NPIdentifier identifier);
 | 
			
		||||
typedef int32_t      (*NPN_IntFromIdentifierProcPtr)(NPIdentifier identifier);
 | 
			
		||||
typedef NPObject*    (*NPN_CreateObjectProcPtr)(NPP npp, NPClass *aClass);
 | 
			
		||||
typedef NPObject*    (*NPN_RetainObjectProcPtr)(NPObject *obj);
 | 
			
		||||
typedef void         (*NPN_ReleaseObjectProcPtr)(NPObject *obj);
 | 
			
		||||
typedef bool         (*NPN_InvokeProcPtr)(NPP npp, NPObject* obj, NPIdentifier methodName, const NPVariant *args, uint32_t argCount, NPVariant *result);
 | 
			
		||||
typedef bool         (*NPN_InvokeDefaultProcPtr)(NPP npp, NPObject* obj, const NPVariant *args, uint32_t argCount, NPVariant *result);
 | 
			
		||||
typedef bool         (*NPN_EvaluateProcPtr)(NPP npp, NPObject *obj, NPString *script, NPVariant *result);
 | 
			
		||||
typedef bool         (*NPN_GetPropertyProcPtr)(NPP npp, NPObject *obj, NPIdentifier propertyName, NPVariant *result);
 | 
			
		||||
typedef bool         (*NPN_SetPropertyProcPtr)(NPP npp, NPObject *obj, NPIdentifier propertyName, const NPVariant *value);
 | 
			
		||||
typedef bool         (*NPN_RemovePropertyProcPtr)(NPP npp, NPObject *obj, NPIdentifier propertyName);
 | 
			
		||||
typedef bool         (*NPN_HasPropertyProcPtr)(NPP npp, NPObject *obj, NPIdentifier propertyName);
 | 
			
		||||
typedef bool         (*NPN_HasMethodProcPtr)(NPP npp, NPObject *obj, NPIdentifier propertyName);
 | 
			
		||||
typedef void         (*NPN_ReleaseVariantValueProcPtr)(NPVariant *variant);
 | 
			
		||||
typedef void         (*NPN_SetExceptionProcPtr)(NPObject *obj, const NPUTF8 *message);
 | 
			
		||||
typedef void         (*NPN_PushPopupsEnabledStateProcPtr)(NPP npp, NPBool enabled);
 | 
			
		||||
typedef void         (*NPN_PopPopupsEnabledStateProcPtr)(NPP npp);
 | 
			
		||||
typedef bool         (*NPN_EnumerateProcPtr)(NPP npp, NPObject *obj, NPIdentifier **identifier, uint32_t *count);
 | 
			
		||||
typedef void         (*NPN_PluginThreadAsyncCallProcPtr)(NPP instance, void (*func)(void *), void *userData);
 | 
			
		||||
typedef bool         (*NPN_ConstructProcPtr)(NPP npp, NPObject* obj, const NPVariant *args, uint32_t argCount, NPVariant *result);
 | 
			
		||||
typedef NPError      (*NPN_GetValueForURLPtr)(NPP npp, NPNURLVariable variable, const char *url, char **value, uint32_t *len);
 | 
			
		||||
typedef NPError      (*NPN_SetValueForURLPtr)(NPP npp, NPNURLVariable variable, const char *url, const char *value, uint32_t len);
 | 
			
		||||
typedef NPError      (*NPN_GetAuthenticationInfoPtr)(NPP npp, const char *protocol, const char *host, int32_t port, const char *scheme, const char *realm, char **username, uint32_t *ulen, char **password, uint32_t *plen);
 | 
			
		||||
typedef uint32_t     (*NPN_ScheduleTimerPtr)(NPP instance, uint32_t interval, NPBool repeat, void (*timerFunc)(NPP npp, uint32_t timerID));
 | 
			
		||||
typedef void         (*NPN_UnscheduleTimerPtr)(NPP instance, uint32_t timerID);
 | 
			
		||||
typedef NPError      (*NPN_PopUpContextMenuPtr)(NPP instance, NPMenu* menu);
 | 
			
		||||
typedef NPBool       (*NPN_ConvertPointPtr)(NPP instance, double sourceX, double sourceY, NPCoordinateSpace sourceSpace, double *destX, double *destY, NPCoordinateSpace destSpace);
 | 
			
		||||
typedef NPBool       (*NPN_HandleEventPtr)(NPP instance, void *event, NPBool handled);
 | 
			
		||||
typedef NPBool       (*NPN_UnfocusInstancePtr)(NPP instance, NPFocusDirection direction);
 | 
			
		||||
typedef void         (*NPN_URLRedirectResponsePtr)(NPP instance, void* notifyData, NPBool allow);
 | 
			
		||||
 | 
			
		||||
typedef struct _NPPluginFuncs {
 | 
			
		||||
  uint16_t size;
 | 
			
		||||
  uint16_t version;
 | 
			
		||||
  NPP_NewProcPtr newp;
 | 
			
		||||
  NPP_DestroyProcPtr destroy;
 | 
			
		||||
  NPP_SetWindowProcPtr setwindow;
 | 
			
		||||
  NPP_NewStreamProcPtr newstream;
 | 
			
		||||
  NPP_DestroyStreamProcPtr destroystream;
 | 
			
		||||
  NPP_StreamAsFileProcPtr asfile;
 | 
			
		||||
  NPP_WriteReadyProcPtr writeready;
 | 
			
		||||
  NPP_WriteProcPtr write;
 | 
			
		||||
  NPP_PrintProcPtr print;
 | 
			
		||||
  NPP_HandleEventProcPtr event;
 | 
			
		||||
  NPP_URLNotifyProcPtr urlnotify;
 | 
			
		||||
  void* javaClass;
 | 
			
		||||
  NPP_GetValueProcPtr getvalue;
 | 
			
		||||
  NPP_SetValueProcPtr setvalue;
 | 
			
		||||
  NPP_GotFocusPtr gotfocus;
 | 
			
		||||
  NPP_LostFocusPtr lostfocus;
 | 
			
		||||
  NPP_URLRedirectNotifyPtr urlredirectnotify;
 | 
			
		||||
  NPP_ClearSiteDataPtr clearsitedata;
 | 
			
		||||
  NPP_GetSitesWithDataPtr getsiteswithdata;
 | 
			
		||||
} NPPluginFuncs;
 | 
			
		||||
 | 
			
		||||
typedef struct _NPNetscapeFuncs {
 | 
			
		||||
  uint16_t size;
 | 
			
		||||
  uint16_t version;
 | 
			
		||||
  NPN_GetURLProcPtr geturl;
 | 
			
		||||
  NPN_PostURLProcPtr posturl;
 | 
			
		||||
  NPN_RequestReadProcPtr requestread;
 | 
			
		||||
  NPN_NewStreamProcPtr newstream;
 | 
			
		||||
  NPN_WriteProcPtr write;
 | 
			
		||||
  NPN_DestroyStreamProcPtr destroystream;
 | 
			
		||||
  NPN_StatusProcPtr status;
 | 
			
		||||
  NPN_UserAgentProcPtr uagent;
 | 
			
		||||
  NPN_MemAllocProcPtr memalloc;
 | 
			
		||||
  NPN_MemFreeProcPtr memfree;
 | 
			
		||||
  NPN_MemFlushProcPtr memflush;
 | 
			
		||||
  NPN_ReloadPluginsProcPtr reloadplugins;
 | 
			
		||||
  NPN_GetJavaEnvProcPtr getJavaEnv;
 | 
			
		||||
  NPN_GetJavaPeerProcPtr getJavaPeer;
 | 
			
		||||
  NPN_GetURLNotifyProcPtr geturlnotify;
 | 
			
		||||
  NPN_PostURLNotifyProcPtr posturlnotify;
 | 
			
		||||
  NPN_GetValueProcPtr getvalue;
 | 
			
		||||
  NPN_SetValueProcPtr setvalue;
 | 
			
		||||
  NPN_InvalidateRectProcPtr invalidaterect;
 | 
			
		||||
  NPN_InvalidateRegionProcPtr invalidateregion;
 | 
			
		||||
  NPN_ForceRedrawProcPtr forceredraw;
 | 
			
		||||
  NPN_GetStringIdentifierProcPtr getstringidentifier;
 | 
			
		||||
  NPN_GetStringIdentifiersProcPtr getstringidentifiers;
 | 
			
		||||
  NPN_GetIntIdentifierProcPtr getintidentifier;
 | 
			
		||||
  NPN_IdentifierIsStringProcPtr identifierisstring;
 | 
			
		||||
  NPN_UTF8FromIdentifierProcPtr utf8fromidentifier;
 | 
			
		||||
  NPN_IntFromIdentifierProcPtr intfromidentifier;
 | 
			
		||||
  NPN_CreateObjectProcPtr createobject;
 | 
			
		||||
  NPN_RetainObjectProcPtr retainobject;
 | 
			
		||||
  NPN_ReleaseObjectProcPtr releaseobject;
 | 
			
		||||
  NPN_InvokeProcPtr invoke;
 | 
			
		||||
  NPN_InvokeDefaultProcPtr invokeDefault;
 | 
			
		||||
  NPN_EvaluateProcPtr evaluate;
 | 
			
		||||
  NPN_GetPropertyProcPtr getproperty;
 | 
			
		||||
  NPN_SetPropertyProcPtr setproperty;
 | 
			
		||||
  NPN_RemovePropertyProcPtr removeproperty;
 | 
			
		||||
  NPN_HasPropertyProcPtr hasproperty;
 | 
			
		||||
  NPN_HasMethodProcPtr hasmethod;
 | 
			
		||||
  NPN_ReleaseVariantValueProcPtr releasevariantvalue;
 | 
			
		||||
  NPN_SetExceptionProcPtr setexception;
 | 
			
		||||
  NPN_PushPopupsEnabledStateProcPtr pushpopupsenabledstate;
 | 
			
		||||
  NPN_PopPopupsEnabledStateProcPtr poppopupsenabledstate;
 | 
			
		||||
  NPN_EnumerateProcPtr enumerate;
 | 
			
		||||
  NPN_PluginThreadAsyncCallProcPtr pluginthreadasynccall;
 | 
			
		||||
  NPN_ConstructProcPtr construct;
 | 
			
		||||
  NPN_GetValueForURLPtr getvalueforurl;
 | 
			
		||||
  NPN_SetValueForURLPtr setvalueforurl;
 | 
			
		||||
  NPN_GetAuthenticationInfoPtr getauthenticationinfo;
 | 
			
		||||
  NPN_ScheduleTimerPtr scheduletimer;
 | 
			
		||||
  NPN_UnscheduleTimerPtr unscheduletimer;
 | 
			
		||||
  NPN_PopUpContextMenuPtr popupcontextmenu;
 | 
			
		||||
  NPN_ConvertPointPtr convertpoint;
 | 
			
		||||
  NPN_HandleEventPtr handleevent;
 | 
			
		||||
  NPN_UnfocusInstancePtr unfocusinstance;
 | 
			
		||||
  NPN_URLRedirectResponsePtr urlredirectresponse;
 | 
			
		||||
} NPNetscapeFuncs;
 | 
			
		||||
 | 
			
		||||
#ifdef XP_MACOSX
 | 
			
		||||
/*
 | 
			
		||||
 * Mac OS X version(s) of NP_GetMIMEDescription(const char *)
 | 
			
		||||
 * These can be called to retreive MIME information from the plugin dynamically
 | 
			
		||||
 *
 | 
			
		||||
 * Note: For compatibility with Quicktime, BPSupportedMIMEtypes is another way
 | 
			
		||||
 *       to get mime info from the plugin only on OSX and may not be supported
 | 
			
		||||
 *       in furture version -- use NP_GetMIMEDescription instead
 | 
			
		||||
 */
 | 
			
		||||
enum
 | 
			
		||||
{
 | 
			
		||||
 kBPSupportedMIMETypesStructVers_1    = 1
 | 
			
		||||
};
 | 
			
		||||
typedef struct _BPSupportedMIMETypes
 | 
			
		||||
{
 | 
			
		||||
 SInt32    structVersion;      /* struct version */
 | 
			
		||||
 Handle    typeStrings;        /* STR# formated handle, allocated by plug-in */
 | 
			
		||||
 Handle    infoStrings;        /* STR# formated handle, allocated by plug-in */
 | 
			
		||||
} BPSupportedMIMETypes;
 | 
			
		||||
OSErr BP_GetSupportedMIMETypes(BPSupportedMIMETypes *mimeInfo, UInt32 flags);
 | 
			
		||||
#define NP_GETMIMEDESCRIPTION_NAME "NP_GetMIMEDescription"
 | 
			
		||||
typedef const char* (*NP_GetMIMEDescriptionProcPtr)(void);
 | 
			
		||||
typedef OSErr (*BP_GetSupportedMIMETypesProcPtr)(BPSupportedMIMETypes*, UInt32);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(_WIN32)
 | 
			
		||||
#define OSCALL WINAPI
 | 
			
		||||
#else
 | 
			
		||||
#if defined(__OS2__)
 | 
			
		||||
#define OSCALL _System
 | 
			
		||||
#else
 | 
			
		||||
#define OSCALL
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(XP_UNIX)
 | 
			
		||||
/* GCC 3.3 and later support the visibility attribute. */
 | 
			
		||||
#if defined(__GNUC__) && ((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
 | 
			
		||||
#define NP_VISIBILITY_DEFAULT __attribute__((visibility("default")))
 | 
			
		||||
#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC)
 | 
			
		||||
#define NP_VISIBILITY_DEFAULT __global
 | 
			
		||||
#else
 | 
			
		||||
#define NP_VISIBILITY_DEFAULT
 | 
			
		||||
#endif
 | 
			
		||||
#define NP_EXPORT(__type) NP_VISIBILITY_DEFAULT __type
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(_WIN32) || defined (__OS2__)
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
/* plugin meta member functions */
 | 
			
		||||
#if defined(__OS2__)
 | 
			
		||||
typedef struct _NPPluginData {   /* Alternate OS2 Plugin interface */
 | 
			
		||||
  char *pMimeTypes;
 | 
			
		||||
  char *pFileExtents;
 | 
			
		||||
  char *pFileOpenTemplate;
 | 
			
		||||
  char *pProductName;
 | 
			
		||||
  char *pProductDescription;
 | 
			
		||||
  unsigned long dwProductVersionMS;
 | 
			
		||||
  unsigned long dwProductVersionLS;
 | 
			
		||||
} NPPluginData;
 | 
			
		||||
typedef NPError     (*NP_GetPluginDataFunc)(NPPluginData*);
 | 
			
		||||
NPError OSCALL      NP_GetPluginData(NPPluginData * pPluginData);
 | 
			
		||||
#endif
 | 
			
		||||
typedef NPError     (*NP_GetEntryPointsFunc)(NPPluginFuncs*);
 | 
			
		||||
NPError OSCALL      NP_GetEntryPoints(NPPluginFuncs* pFuncs);
 | 
			
		||||
typedef NPError     (*NP_InitializeFunc)(NPNetscapeFuncs*);
 | 
			
		||||
NPError OSCALL      NP_Initialize(NPNetscapeFuncs* bFuncs);
 | 
			
		||||
typedef NPError     (*NP_ShutdownFunc)(void);
 | 
			
		||||
NPError OSCALL      NP_Shutdown(void);
 | 
			
		||||
typedef const char* (*NP_GetMIMEDescriptionFunc)(void);
 | 
			
		||||
const char*         NP_GetMIMEDescription(void);
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__OS2__)
 | 
			
		||||
#pragma pack()
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef XP_UNIX
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
typedef char*          (*NP_GetPluginVersionFunc)(void);
 | 
			
		||||
NP_EXPORT(char*)       NP_GetPluginVersion(void);
 | 
			
		||||
typedef const char*    (*NP_GetMIMEDescriptionFunc)(void);
 | 
			
		||||
NP_EXPORT(const char*) NP_GetMIMEDescription(void);
 | 
			
		||||
#ifdef XP_MACOSX
 | 
			
		||||
typedef NPError        (*NP_InitializeFunc)(NPNetscapeFuncs*);
 | 
			
		||||
NP_EXPORT(NPError)     NP_Initialize(NPNetscapeFuncs* bFuncs);
 | 
			
		||||
typedef NPError        (*NP_GetEntryPointsFunc)(NPPluginFuncs*);
 | 
			
		||||
NP_EXPORT(NPError)     NP_GetEntryPoints(NPPluginFuncs* pFuncs);
 | 
			
		||||
#else
 | 
			
		||||
typedef NPError        (*NP_InitializeFunc)(NPNetscapeFuncs*, NPPluginFuncs*);
 | 
			
		||||
NP_EXPORT(NPError)     NP_Initialize(NPNetscapeFuncs* bFuncs, NPPluginFuncs* pFuncs);
 | 
			
		||||
#endif
 | 
			
		||||
typedef NPError        (*NP_ShutdownFunc)(void);
 | 
			
		||||
NP_EXPORT(NPError)     NP_Shutdown(void);
 | 
			
		||||
typedef NPError        (*NP_GetValueFunc)(void *, NPPVariable, void *);
 | 
			
		||||
NP_EXPORT(NPError)     NP_GetValue(void *future, NPPVariable aVariable, void *aValue);
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* npfunctions_h_ */
 | 
			
		||||
							
								
								
									
										393
									
								
								browser-plugin/npapi/npruntime.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										393
									
								
								browser-plugin/npapi/npruntime.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,393 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (c) 2004, Apple Computer, Inc. and The Mozilla Foundation.
 | 
			
		||||
 * All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Redistribution and use in source and binary forms, with or without
 | 
			
		||||
 * modification, are permitted provided that the following conditions are
 | 
			
		||||
 * met:
 | 
			
		||||
 *
 | 
			
		||||
 * 1. Redistributions of source code must retain the above copyright
 | 
			
		||||
 * notice, this list of conditions and the following disclaimer.
 | 
			
		||||
 * 2. 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.
 | 
			
		||||
 * 3. Neither the names of Apple Computer, Inc. ("Apple") or The Mozilla
 | 
			
		||||
 * Foundation ("Mozilla") nor the names of their contributors may be used
 | 
			
		||||
 * to endorse or promote products derived from this software without
 | 
			
		||||
 * specific prior written permission.
 | 
			
		||||
 *
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED BY APPLE, MOZILLA AND THEIR 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 APPLE, MOZILLA OR
 | 
			
		||||
 * THEIR 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.
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
#ifndef _NP_RUNTIME_H_
 | 
			
		||||
#define _NP_RUNTIME_H_
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "nptypes.h"
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    This API is used to facilitate binding code written in C to script
 | 
			
		||||
    objects.  The API in this header does not assume the presence of a
 | 
			
		||||
    user agent.  That is, it can be used to bind C code to scripting
 | 
			
		||||
    environments outside of the context of a user agent.
 | 
			
		||||
 | 
			
		||||
    However, the normal use of the this API is in the context of a
 | 
			
		||||
    scripting environment running in a browser or other user agent.
 | 
			
		||||
    In particular it is used to support the extended Netscape
 | 
			
		||||
    script-ability API for plugins (NP-SAP).  NP-SAP is an extension
 | 
			
		||||
    of the Netscape plugin API.  As such we have adopted the use of
 | 
			
		||||
    the "NP" prefix for this API.
 | 
			
		||||
 | 
			
		||||
    The following NP{N|P}Variables were added to the Netscape plugin
 | 
			
		||||
    API (in npapi.h):
 | 
			
		||||
 | 
			
		||||
    NPNVWindowNPObject
 | 
			
		||||
    NPNVPluginElementNPObject
 | 
			
		||||
    NPPVpluginScriptableNPObject
 | 
			
		||||
 | 
			
		||||
    These variables are exposed through NPN_GetValue() and
 | 
			
		||||
    NPP_GetValue() (respectively) and are used to establish the
 | 
			
		||||
    initial binding between the user agent and native code.  The DOM
 | 
			
		||||
    objects in the user agent can be examined and manipulated using
 | 
			
		||||
    the NPN_ functions that operate on NPObjects described in this
 | 
			
		||||
    header.
 | 
			
		||||
 | 
			
		||||
    To the extent possible the assumptions about the scripting
 | 
			
		||||
    language used by the scripting environment have been minimized.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#define NP_BEGIN_MACRO  do {
 | 
			
		||||
#define NP_END_MACRO    } while (0)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    Objects (non-primitive data) passed between 'C' and script is
 | 
			
		||||
    always wrapped in an NPObject.  The 'interface' of an NPObject is
 | 
			
		||||
    described by an NPClass.
 | 
			
		||||
*/
 | 
			
		||||
typedef struct NPObject NPObject;
 | 
			
		||||
typedef struct NPClass NPClass;
 | 
			
		||||
 | 
			
		||||
typedef char NPUTF8;
 | 
			
		||||
typedef struct _NPString {
 | 
			
		||||
    const NPUTF8 *UTF8Characters;
 | 
			
		||||
    uint32_t UTF8Length;
 | 
			
		||||
} NPString;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    NPVariantType_Void,
 | 
			
		||||
    NPVariantType_Null,
 | 
			
		||||
    NPVariantType_Bool,
 | 
			
		||||
    NPVariantType_Int32,
 | 
			
		||||
    NPVariantType_Double,
 | 
			
		||||
    NPVariantType_String,
 | 
			
		||||
    NPVariantType_Object
 | 
			
		||||
} NPVariantType;
 | 
			
		||||
 | 
			
		||||
typedef struct _NPVariant {
 | 
			
		||||
    NPVariantType type;
 | 
			
		||||
    union {
 | 
			
		||||
        bool boolValue;
 | 
			
		||||
        int32_t intValue;
 | 
			
		||||
        double doubleValue;
 | 
			
		||||
        NPString stringValue;
 | 
			
		||||
        NPObject *objectValue;
 | 
			
		||||
    } value;
 | 
			
		||||
} NPVariant;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    NPN_ReleaseVariantValue is called on all 'out' parameters
 | 
			
		||||
    references.  Specifically it is to be called on variants that own
 | 
			
		||||
    their value, as is the case with all non-const NPVariant*
 | 
			
		||||
    arguments after a successful call to any methods (except this one)
 | 
			
		||||
    in this API.
 | 
			
		||||
 | 
			
		||||
    After calling NPN_ReleaseVariantValue, the type of the variant
 | 
			
		||||
    will be NPVariantType_Void.
 | 
			
		||||
*/
 | 
			
		||||
void NPN_ReleaseVariantValue(NPVariant *variant);
 | 
			
		||||
 | 
			
		||||
#define NPVARIANT_IS_VOID(_v)    ((_v).type == NPVariantType_Void)
 | 
			
		||||
#define NPVARIANT_IS_NULL(_v)    ((_v).type == NPVariantType_Null)
 | 
			
		||||
#define NPVARIANT_IS_BOOLEAN(_v) ((_v).type == NPVariantType_Bool)
 | 
			
		||||
#define NPVARIANT_IS_INT32(_v)   ((_v).type == NPVariantType_Int32)
 | 
			
		||||
#define NPVARIANT_IS_DOUBLE(_v)  ((_v).type == NPVariantType_Double)
 | 
			
		||||
#define NPVARIANT_IS_STRING(_v)  ((_v).type == NPVariantType_String)
 | 
			
		||||
#define NPVARIANT_IS_OBJECT(_v)  ((_v).type == NPVariantType_Object)
 | 
			
		||||
 | 
			
		||||
#define NPVARIANT_TO_BOOLEAN(_v) ((_v).value.boolValue)
 | 
			
		||||
#define NPVARIANT_TO_INT32(_v)   ((_v).value.intValue)
 | 
			
		||||
#define NPVARIANT_TO_DOUBLE(_v)  ((_v).value.doubleValue)
 | 
			
		||||
#define NPVARIANT_TO_STRING(_v)  ((_v).value.stringValue)
 | 
			
		||||
#define NPVARIANT_TO_OBJECT(_v)  ((_v).value.objectValue)
 | 
			
		||||
 | 
			
		||||
#define VOID_TO_NPVARIANT(_v)                                                 \
 | 
			
		||||
NP_BEGIN_MACRO                                                                \
 | 
			
		||||
    (_v).type = NPVariantType_Void;                                           \
 | 
			
		||||
    (_v).value.objectValue = NULL;                                            \
 | 
			
		||||
NP_END_MACRO
 | 
			
		||||
 | 
			
		||||
#define NULL_TO_NPVARIANT(_v)                                                 \
 | 
			
		||||
NP_BEGIN_MACRO                                                                \
 | 
			
		||||
    (_v).type = NPVariantType_Null;                                           \
 | 
			
		||||
    (_v).value.objectValue = NULL;                                            \
 | 
			
		||||
NP_END_MACRO
 | 
			
		||||
 | 
			
		||||
#define BOOLEAN_TO_NPVARIANT(_val, _v)                                        \
 | 
			
		||||
NP_BEGIN_MACRO                                                                \
 | 
			
		||||
    (_v).type = NPVariantType_Bool;                                           \
 | 
			
		||||
    (_v).value.boolValue = !!(_val);                                          \
 | 
			
		||||
NP_END_MACRO
 | 
			
		||||
 | 
			
		||||
#define INT32_TO_NPVARIANT(_val, _v)                                          \
 | 
			
		||||
NP_BEGIN_MACRO                                                                \
 | 
			
		||||
    (_v).type = NPVariantType_Int32;                                          \
 | 
			
		||||
    (_v).value.intValue = _val;                                               \
 | 
			
		||||
NP_END_MACRO
 | 
			
		||||
 | 
			
		||||
#define DOUBLE_TO_NPVARIANT(_val, _v)                                         \
 | 
			
		||||
NP_BEGIN_MACRO                                                                \
 | 
			
		||||
    (_v).type = NPVariantType_Double;                                         \
 | 
			
		||||
    (_v).value.doubleValue = _val;                                            \
 | 
			
		||||
NP_END_MACRO
 | 
			
		||||
 | 
			
		||||
#define STRINGZ_TO_NPVARIANT(_val, _v)                                        \
 | 
			
		||||
NP_BEGIN_MACRO                                                                \
 | 
			
		||||
    (_v).type = NPVariantType_String;                                         \
 | 
			
		||||
    NPString str = { _val, (uint32_t)(strlen(_val)) };                        \
 | 
			
		||||
    (_v).value.stringValue = str;                                             \
 | 
			
		||||
NP_END_MACRO
 | 
			
		||||
 | 
			
		||||
#define STRINGN_TO_NPVARIANT(_val, _len, _v)                                  \
 | 
			
		||||
NP_BEGIN_MACRO                                                                \
 | 
			
		||||
    (_v).type = NPVariantType_String;                                         \
 | 
			
		||||
    NPString str = { _val, (uint32_t)(_len) };                                \
 | 
			
		||||
    (_v).value.stringValue = str;                                             \
 | 
			
		||||
NP_END_MACRO
 | 
			
		||||
 | 
			
		||||
#define OBJECT_TO_NPVARIANT(_val, _v)                                         \
 | 
			
		||||
NP_BEGIN_MACRO                                                                \
 | 
			
		||||
    (_v).type = NPVariantType_Object;                                         \
 | 
			
		||||
    (_v).value.objectValue = _val;                                            \
 | 
			
		||||
NP_END_MACRO
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
  Type mappings (JavaScript types have been used for illustration
 | 
			
		||||
    purposes):
 | 
			
		||||
 | 
			
		||||
  JavaScript       to             C (NPVariant with type:)
 | 
			
		||||
  undefined                       NPVariantType_Void
 | 
			
		||||
  null                            NPVariantType_Null
 | 
			
		||||
  Boolean                         NPVariantType_Bool
 | 
			
		||||
  Number                          NPVariantType_Double or NPVariantType_Int32
 | 
			
		||||
  String                          NPVariantType_String
 | 
			
		||||
  Object                          NPVariantType_Object
 | 
			
		||||
 | 
			
		||||
  C (NPVariant with type:)   to   JavaScript
 | 
			
		||||
  NPVariantType_Void              undefined
 | 
			
		||||
  NPVariantType_Null              null
 | 
			
		||||
  NPVariantType_Bool              Boolean
 | 
			
		||||
  NPVariantType_Int32             Number
 | 
			
		||||
  NPVariantType_Double            Number
 | 
			
		||||
  NPVariantType_String            String
 | 
			
		||||
  NPVariantType_Object            Object
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
typedef void *NPIdentifier;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    NPObjects have methods and properties.  Methods and properties are
 | 
			
		||||
    identified with NPIdentifiers.  These identifiers may be reflected
 | 
			
		||||
    in script.  NPIdentifiers can be either strings or integers, IOW,
 | 
			
		||||
    methods and properties can be identified by either strings or
 | 
			
		||||
    integers (i.e. foo["bar"] vs foo[1]). NPIdentifiers can be
 | 
			
		||||
    compared using ==.  In case of any errors, the requested
 | 
			
		||||
    NPIdentifier(s) will be NULL. NPIdentifier lifetime is controlled
 | 
			
		||||
    by the browser. Plugins do not need to worry about memory management
 | 
			
		||||
    with regards to NPIdentifiers.
 | 
			
		||||
*/
 | 
			
		||||
NPIdentifier NPN_GetStringIdentifier(const NPUTF8 *name);
 | 
			
		||||
void NPN_GetStringIdentifiers(const NPUTF8 **names, int32_t nameCount,
 | 
			
		||||
                              NPIdentifier *identifiers);
 | 
			
		||||
NPIdentifier NPN_GetIntIdentifier(int32_t intid);
 | 
			
		||||
bool NPN_IdentifierIsString(NPIdentifier identifier);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    The NPUTF8 returned from NPN_UTF8FromIdentifier SHOULD be freed.
 | 
			
		||||
*/
 | 
			
		||||
NPUTF8 *NPN_UTF8FromIdentifier(NPIdentifier identifier);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    Get the integer represented by identifier. If identifier is not an
 | 
			
		||||
    integer identifier, the behaviour is undefined.
 | 
			
		||||
*/
 | 
			
		||||
int32_t NPN_IntFromIdentifier(NPIdentifier identifier);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    NPObject behavior is implemented using the following set of
 | 
			
		||||
    callback functions.
 | 
			
		||||
 | 
			
		||||
    The NPVariant *result argument of these functions (where
 | 
			
		||||
    applicable) should be released using NPN_ReleaseVariantValue().
 | 
			
		||||
*/
 | 
			
		||||
typedef NPObject *(*NPAllocateFunctionPtr)(NPP npp, NPClass *aClass);
 | 
			
		||||
typedef void (*NPDeallocateFunctionPtr)(NPObject *npobj);
 | 
			
		||||
typedef void (*NPInvalidateFunctionPtr)(NPObject *npobj);
 | 
			
		||||
typedef bool (*NPHasMethodFunctionPtr)(NPObject *npobj, NPIdentifier name);
 | 
			
		||||
typedef bool (*NPInvokeFunctionPtr)(NPObject *npobj, NPIdentifier name,
 | 
			
		||||
                                    const NPVariant *args, uint32_t argCount,
 | 
			
		||||
                                    NPVariant *result);
 | 
			
		||||
typedef bool (*NPInvokeDefaultFunctionPtr)(NPObject *npobj,
 | 
			
		||||
                                           const NPVariant *args,
 | 
			
		||||
                                           uint32_t argCount,
 | 
			
		||||
                                           NPVariant *result);
 | 
			
		||||
typedef bool (*NPHasPropertyFunctionPtr)(NPObject *npobj, NPIdentifier name);
 | 
			
		||||
typedef bool (*NPGetPropertyFunctionPtr)(NPObject *npobj, NPIdentifier name,
 | 
			
		||||
                                         NPVariant *result);
 | 
			
		||||
typedef bool (*NPSetPropertyFunctionPtr)(NPObject *npobj, NPIdentifier name,
 | 
			
		||||
                                         const NPVariant *value);
 | 
			
		||||
typedef bool (*NPRemovePropertyFunctionPtr)(NPObject *npobj,
 | 
			
		||||
                                            NPIdentifier name);
 | 
			
		||||
typedef bool (*NPEnumerationFunctionPtr)(NPObject *npobj, NPIdentifier **value,
 | 
			
		||||
                                         uint32_t *count);
 | 
			
		||||
typedef bool (*NPConstructFunctionPtr)(NPObject *npobj,
 | 
			
		||||
                                       const NPVariant *args,
 | 
			
		||||
                                       uint32_t argCount,
 | 
			
		||||
                                       NPVariant *result);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    NPObjects returned by create, retain, invoke, and getProperty pass
 | 
			
		||||
    a reference count to the caller.  That is, the callee adds a
 | 
			
		||||
    reference count which passes to the caller.  It is the caller's
 | 
			
		||||
    responsibility to release the returned object.
 | 
			
		||||
 | 
			
		||||
    NPInvokeFunctionPtr function may return 0 to indicate a void
 | 
			
		||||
    result.
 | 
			
		||||
 | 
			
		||||
    NPInvalidateFunctionPtr is called by the scripting environment
 | 
			
		||||
    when the native code is shutdown.  Any attempt to message a
 | 
			
		||||
    NPObject instance after the invalidate callback has been
 | 
			
		||||
    called will result in undefined behavior, even if the native code
 | 
			
		||||
    is still retaining those NPObject instances.  (The runtime
 | 
			
		||||
    will typically return immediately, with 0 or NULL, from an attempt
 | 
			
		||||
    to dispatch to a NPObject, but this behavior should not be
 | 
			
		||||
    depended upon.)
 | 
			
		||||
 | 
			
		||||
    The NPEnumerationFunctionPtr function may pass an array of
 | 
			
		||||
    NPIdentifiers back to the caller. The callee allocs the memory of
 | 
			
		||||
    the array using NPN_MemAlloc(), and it's the caller's responsibility
 | 
			
		||||
    to release it using NPN_MemFree().
 | 
			
		||||
*/
 | 
			
		||||
struct NPClass
 | 
			
		||||
{
 | 
			
		||||
    uint32_t structVersion;
 | 
			
		||||
    NPAllocateFunctionPtr allocate;
 | 
			
		||||
    NPDeallocateFunctionPtr deallocate;
 | 
			
		||||
    NPInvalidateFunctionPtr invalidate;
 | 
			
		||||
    NPHasMethodFunctionPtr hasMethod;
 | 
			
		||||
    NPInvokeFunctionPtr invoke;
 | 
			
		||||
    NPInvokeDefaultFunctionPtr invokeDefault;
 | 
			
		||||
    NPHasPropertyFunctionPtr hasProperty;
 | 
			
		||||
    NPGetPropertyFunctionPtr getProperty;
 | 
			
		||||
    NPSetPropertyFunctionPtr setProperty;
 | 
			
		||||
    NPRemovePropertyFunctionPtr removeProperty;
 | 
			
		||||
    NPEnumerationFunctionPtr enumerate;
 | 
			
		||||
    NPConstructFunctionPtr construct;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define NP_CLASS_STRUCT_VERSION      3
 | 
			
		||||
 | 
			
		||||
#define NP_CLASS_STRUCT_VERSION_ENUM 2
 | 
			
		||||
#define NP_CLASS_STRUCT_VERSION_CTOR 3
 | 
			
		||||
 | 
			
		||||
#define NP_CLASS_STRUCT_VERSION_HAS_ENUM(npclass)   \
 | 
			
		||||
        ((npclass)->structVersion >= NP_CLASS_STRUCT_VERSION_ENUM)
 | 
			
		||||
 | 
			
		||||
#define NP_CLASS_STRUCT_VERSION_HAS_CTOR(npclass)   \
 | 
			
		||||
        ((npclass)->structVersion >= NP_CLASS_STRUCT_VERSION_CTOR)
 | 
			
		||||
 | 
			
		||||
struct NPObject {
 | 
			
		||||
    NPClass *_class;
 | 
			
		||||
    uint32_t referenceCount;
 | 
			
		||||
    /*
 | 
			
		||||
     * Additional space may be allocated here by types of NPObjects
 | 
			
		||||
     */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    If the class has an allocate function, NPN_CreateObject invokes
 | 
			
		||||
    that function, otherwise a NPObject is allocated and
 | 
			
		||||
    returned. This method will initialize the referenceCount member of
 | 
			
		||||
    the NPObject to 1.
 | 
			
		||||
*/
 | 
			
		||||
NPObject *NPN_CreateObject(NPP npp, NPClass *aClass);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    Increment the NPObject's reference count.
 | 
			
		||||
*/
 | 
			
		||||
NPObject *NPN_RetainObject(NPObject *npobj);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    Decremented the NPObject's reference count.  If the reference
 | 
			
		||||
    count goes to zero, the class's destroy function is invoke if
 | 
			
		||||
    specified, otherwise the object is freed directly.
 | 
			
		||||
*/
 | 
			
		||||
void NPN_ReleaseObject(NPObject *npobj);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    Functions to access script objects represented by NPObject.
 | 
			
		||||
 | 
			
		||||
    Calls to script objects are synchronous.  If a function returns a
 | 
			
		||||
    value, it will be supplied via the result NPVariant
 | 
			
		||||
    argument. Successful calls will return true, false will be
 | 
			
		||||
    returned in case of an error.
 | 
			
		||||
 | 
			
		||||
    Calls made from plugin code to script must be made from the thread
 | 
			
		||||
    on which the plugin was initialized.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
bool NPN_Invoke(NPP npp, NPObject *npobj, NPIdentifier methodName,
 | 
			
		||||
                const NPVariant *args, uint32_t argCount, NPVariant *result);
 | 
			
		||||
bool NPN_InvokeDefault(NPP npp, NPObject *npobj, const NPVariant *args,
 | 
			
		||||
                       uint32_t argCount, NPVariant *result);
 | 
			
		||||
bool NPN_Evaluate(NPP npp, NPObject *npobj, NPString *script,
 | 
			
		||||
                  NPVariant *result);
 | 
			
		||||
bool NPN_GetProperty(NPP npp, NPObject *npobj, NPIdentifier propertyName,
 | 
			
		||||
                     NPVariant *result);
 | 
			
		||||
bool NPN_SetProperty(NPP npp, NPObject *npobj, NPIdentifier propertyName,
 | 
			
		||||
                     const NPVariant *value);
 | 
			
		||||
bool NPN_RemoveProperty(NPP npp, NPObject *npobj, NPIdentifier propertyName);
 | 
			
		||||
bool NPN_HasProperty(NPP npp, NPObject *npobj, NPIdentifier propertyName);
 | 
			
		||||
bool NPN_HasMethod(NPP npp, NPObject *npobj, NPIdentifier methodName);
 | 
			
		||||
bool NPN_Enumerate(NPP npp, NPObject *npobj, NPIdentifier **identifier,
 | 
			
		||||
                   uint32_t *count);
 | 
			
		||||
bool NPN_Construct(NPP npp, NPObject *npobj, const NPVariant *args,
 | 
			
		||||
                   uint32_t argCount, NPVariant *result);
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
    NPN_SetException may be called to trigger a script exception upon
 | 
			
		||||
    return from entry points into NPObjects.  Typical usage:
 | 
			
		||||
 | 
			
		||||
    NPN_SetException (npobj, message);
 | 
			
		||||
*/
 | 
			
		||||
void NPN_SetException(NPObject *npobj, const NPUTF8 *message);
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										121
									
								
								browser-plugin/npapi/nptypes.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										121
									
								
								browser-plugin/npapi/nptypes.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,121 @@
 | 
			
		||||
/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 | 
			
		||||
/* ***** BEGIN LICENSE BLOCK *****
 | 
			
		||||
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 | 
			
		||||
 *
 | 
			
		||||
 * The contents of this file are subject to the Mozilla Public License Version
 | 
			
		||||
 * 1.1 (the "License"); you may not use this file except in compliance with
 | 
			
		||||
 * the License. You may obtain a copy of the License at
 | 
			
		||||
 * http://www.mozilla.org/MPL/
 | 
			
		||||
 *
 | 
			
		||||
 * Software distributed under the License is distributed on an "AS IS" basis,
 | 
			
		||||
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 | 
			
		||||
 * for the specific language governing rights and limitations under the
 | 
			
		||||
 * License.
 | 
			
		||||
 *
 | 
			
		||||
 * The Original Code is mozilla.org code.
 | 
			
		||||
 *
 | 
			
		||||
 * The Initial Developer of the Original Code is
 | 
			
		||||
 * mozilla.org.
 | 
			
		||||
 * Portions created by the Initial Developer are Copyright (C) 2004
 | 
			
		||||
 * the Initial Developer. All Rights Reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Contributor(s):
 | 
			
		||||
 *   Johnny Stenback <jst@mozilla.org> (Original author)
 | 
			
		||||
 *
 | 
			
		||||
 * Alternatively, the contents of this file may be used under the terms of
 | 
			
		||||
 * either the GNU General Public License Version 2 or later (the "GPL"), or
 | 
			
		||||
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 | 
			
		||||
 * in which case the provisions of the GPL or the LGPL are applicable instead
 | 
			
		||||
 * of those above. If you wish to allow use of your version of this file only
 | 
			
		||||
 * under the terms of either the GPL or the LGPL, and not to allow others to
 | 
			
		||||
 * use your version of this file under the terms of the MPL, indicate your
 | 
			
		||||
 * decision by deleting the provisions above and replace them with the notice
 | 
			
		||||
 * and other provisions required by the GPL or the LGPL. If you do not delete
 | 
			
		||||
 * the provisions above, a recipient may use your version of this file under
 | 
			
		||||
 * the terms of any one of the MPL, the GPL or the LGPL.
 | 
			
		||||
 *
 | 
			
		||||
 * ***** END LICENSE BLOCK ***** */
 | 
			
		||||
 | 
			
		||||
#ifndef nptypes_h_
 | 
			
		||||
#define nptypes_h_
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Header file for ensuring that C99 types ([u]int32_t, [u]int64_t and bool) and
 | 
			
		||||
 * true/false macros are available.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#if defined(WIN32) || defined(OS2)
 | 
			
		||||
  /*
 | 
			
		||||
   * Win32 and OS/2 don't know C99, so define [u]int_16/32/64 here. The bool
 | 
			
		||||
   * is predefined tho, both in C and C++.
 | 
			
		||||
   */
 | 
			
		||||
  typedef short int16_t;
 | 
			
		||||
  typedef unsigned short uint16_t;
 | 
			
		||||
  typedef int int32_t;
 | 
			
		||||
  typedef unsigned int uint32_t;
 | 
			
		||||
  typedef long long int64_t;
 | 
			
		||||
  typedef unsigned long long uint64_t;
 | 
			
		||||
#elif defined(_AIX) || defined(__sun) || defined(__osf__) || defined(IRIX) || defined(HPUX)
 | 
			
		||||
  /*
 | 
			
		||||
   * AIX and SunOS ship a inttypes.h header that defines [u]int32_t,
 | 
			
		||||
   * but not bool for C.
 | 
			
		||||
   */
 | 
			
		||||
  #include <inttypes.h>
 | 
			
		||||
 | 
			
		||||
  #ifndef __cplusplus
 | 
			
		||||
    typedef int bool;
 | 
			
		||||
    #define true   1
 | 
			
		||||
    #define false  0
 | 
			
		||||
  #endif
 | 
			
		||||
#elif defined(bsdi) || defined(FREEBSD) || defined(OPENBSD)
 | 
			
		||||
  /*
 | 
			
		||||
   * BSD/OS, FreeBSD, and OpenBSD ship sys/types.h that define int32_t and
 | 
			
		||||
   * u_int32_t.
 | 
			
		||||
   */
 | 
			
		||||
  #include <sys/types.h>
 | 
			
		||||
 | 
			
		||||
  /*
 | 
			
		||||
   * BSD/OS ships no header that defines uint32_t, nor bool (for C)
 | 
			
		||||
   */
 | 
			
		||||
  #if defined(bsdi)
 | 
			
		||||
  typedef u_int32_t uint32_t;
 | 
			
		||||
  typedef u_int64_t uint64_t;
 | 
			
		||||
 | 
			
		||||
  #if !defined(__cplusplus)
 | 
			
		||||
    typedef int bool;
 | 
			
		||||
    #define true   1
 | 
			
		||||
    #define false  0
 | 
			
		||||
  #endif
 | 
			
		||||
  #else
 | 
			
		||||
  /*
 | 
			
		||||
   * FreeBSD and OpenBSD define uint32_t and bool.
 | 
			
		||||
   */
 | 
			
		||||
    #include <inttypes.h>
 | 
			
		||||
    #include <stdbool.h>
 | 
			
		||||
  #endif
 | 
			
		||||
#elif defined(BEOS)
 | 
			
		||||
  #include <inttypes.h>
 | 
			
		||||
#else
 | 
			
		||||
  /*
 | 
			
		||||
   * For those that ship a standard C99 stdint.h header file, include
 | 
			
		||||
   * it. Can't do the same for stdbool.h tho, since some systems ship
 | 
			
		||||
   * with a stdbool.h file that doesn't compile!
 | 
			
		||||
   */
 | 
			
		||||
  #include <stdint.h>
 | 
			
		||||
 | 
			
		||||
  #ifndef __cplusplus
 | 
			
		||||
    #if !defined(__GNUC__) || (__GNUC__ > 2 || __GNUC_MINOR__ > 95)
 | 
			
		||||
      #include <stdbool.h>
 | 
			
		||||
    #else
 | 
			
		||||
      /*
 | 
			
		||||
       * GCC 2.91 can't deal with a typedef for bool, but a #define
 | 
			
		||||
       * works.
 | 
			
		||||
       */
 | 
			
		||||
      #define bool int
 | 
			
		||||
      #define true   1
 | 
			
		||||
      #define false  0
 | 
			
		||||
    #endif
 | 
			
		||||
  #endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* nptypes_h_ */
 | 
			
		||||
							
								
								
									
										208
									
								
								cldr2json.py
									
									
									
									
									
								
							
							
						
						
									
										208
									
								
								cldr2json.py
									
									
									
									
									
								
							@@ -1,208 +0,0 @@
 | 
			
		||||
#!/usr/bin/python3
 | 
			
		||||
#
 | 
			
		||||
# Copyright 2015  Daiki Ueno <dueno@src.gnome.org>
 | 
			
		||||
#           2016  Parag Nemade <pnemade@redhat.com>
 | 
			
		||||
#           2017  Alan <alan@boum.org>
 | 
			
		||||
#
 | 
			
		||||
# This program is free software; you can redistribute it and/or modify
 | 
			
		||||
# it under the terms of the GNU Lesser General Public License as
 | 
			
		||||
# published by the Free Software Foundation; either version 2 of the
 | 
			
		||||
# License, or (at your option) any later version.
 | 
			
		||||
#
 | 
			
		||||
# This program is distributed in the hope that it will be useful, but
 | 
			
		||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
# Lesser General Public License for more details.
 | 
			
		||||
#
 | 
			
		||||
# You should have received a copy of the GNU Lesser General Public
 | 
			
		||||
# License along with this program; if not, see
 | 
			
		||||
# <http://www.gnu.org/licenses/>.
 | 
			
		||||
 | 
			
		||||
import glob
 | 
			
		||||
import json
 | 
			
		||||
import locale
 | 
			
		||||
import logging
 | 
			
		||||
import os
 | 
			
		||||
import re
 | 
			
		||||
import sys
 | 
			
		||||
import xml.etree.ElementTree
 | 
			
		||||
 | 
			
		||||
import gi
 | 
			
		||||
gi.require_version('GnomeDesktop', '3.0')   # NOQA: E402
 | 
			
		||||
from gi.repository import GnomeDesktop
 | 
			
		||||
 | 
			
		||||
ESCAPE_PATTERN = re.compile(r'\\u\{([0-9A-Fa-f]+?)\}')
 | 
			
		||||
ISO_PATTERN = re.compile(r'[A-E]([0-9]+)')
 | 
			
		||||
 | 
			
		||||
LOCALE_TO_XKB_OVERRIDES = {
 | 
			
		||||
    'af':    'za',
 | 
			
		||||
    'en':    'us',
 | 
			
		||||
    'en-GB': 'uk',
 | 
			
		||||
    'es-US': 'latam',
 | 
			
		||||
    'fr-CA': 'ca',
 | 
			
		||||
    'hi':    'in+bolnagri',
 | 
			
		||||
    'ky':    'kg',
 | 
			
		||||
    'nl-BE': 'be',
 | 
			
		||||
    'zu':    None
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def parse_single_key(value):
 | 
			
		||||
    def unescape(m):
 | 
			
		||||
        return chr(int(m.group(1), 16))
 | 
			
		||||
    value = ESCAPE_PATTERN.sub(unescape, value)
 | 
			
		||||
    return value
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def parse_rows(keymap):
 | 
			
		||||
    unsorted_rows = {}
 | 
			
		||||
    for _map in keymap.iter('map'):
 | 
			
		||||
        value = _map.get('to')
 | 
			
		||||
        key = [parse_single_key(value)]
 | 
			
		||||
        iso = _map.get('iso')
 | 
			
		||||
        if not ISO_PATTERN.match(iso):
 | 
			
		||||
            sys.stderr.write('invalid ISO key name: %s\n' % iso)
 | 
			
		||||
            continue
 | 
			
		||||
        if not iso[0] in unsorted_rows:
 | 
			
		||||
            unsorted_rows[iso[0]] = []
 | 
			
		||||
        unsorted_rows[iso[0]].append((int(iso[1:]), key))
 | 
			
		||||
        # add subkeys
 | 
			
		||||
        longPress = _map.get('longPress')
 | 
			
		||||
        if longPress:
 | 
			
		||||
            for value in longPress.split(' '):
 | 
			
		||||
                subkey = parse_single_key(value)
 | 
			
		||||
                key.append(subkey)
 | 
			
		||||
 | 
			
		||||
    rows = []
 | 
			
		||||
    for k, v in sorted(list(unsorted_rows.items()),
 | 
			
		||||
                       key=lambda x: x[0],
 | 
			
		||||
                       reverse=True):
 | 
			
		||||
        row = []
 | 
			
		||||
        for key in sorted(v, key=lambda x: x):
 | 
			
		||||
            row.append(key[1])
 | 
			
		||||
        rows.append(row)
 | 
			
		||||
 | 
			
		||||
    return rows
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def convert_xml(tree):
 | 
			
		||||
    root = {}
 | 
			
		||||
    for xml_keyboard in tree.iter("keyboard"):
 | 
			
		||||
        locale_full = xml_keyboard.get("locale")
 | 
			
		||||
        locale, sep, end = locale_full.partition("-t-")
 | 
			
		||||
    root["locale"] = locale
 | 
			
		||||
    for xml_name in tree.iter("name"):
 | 
			
		||||
        name = xml_name.get("value")
 | 
			
		||||
    root["name"] = name
 | 
			
		||||
    root["levels"] = []
 | 
			
		||||
    # parse levels
 | 
			
		||||
    for index, keymap in enumerate(tree.iter('keyMap')):
 | 
			
		||||
        # FIXME: heuristics here
 | 
			
		||||
        modifiers = keymap.get('modifiers')
 | 
			
		||||
        if not modifiers:
 | 
			
		||||
            mode = 'default'
 | 
			
		||||
            modifiers = ''
 | 
			
		||||
        elif 'shift' in modifiers.split(' '):
 | 
			
		||||
            mode = 'latched'
 | 
			
		||||
            modifiers = 'shift'
 | 
			
		||||
        else:
 | 
			
		||||
            mode = 'locked'
 | 
			
		||||
        level = {}
 | 
			
		||||
        level["level"] = modifiers
 | 
			
		||||
        level["mode"] = mode
 | 
			
		||||
        level["rows"] = parse_rows(keymap)
 | 
			
		||||
        root["levels"].append(level)
 | 
			
		||||
    return root
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def locale_to_xkb(locale, name):
 | 
			
		||||
    if locale in sorted(LOCALE_TO_XKB_OVERRIDES.keys()):
 | 
			
		||||
        xkb = LOCALE_TO_XKB_OVERRIDES[locale]
 | 
			
		||||
        logging.debug("override for %s → %s",
 | 
			
		||||
                      locale, xkb)
 | 
			
		||||
        if xkb:
 | 
			
		||||
            return xkb
 | 
			
		||||
        else:
 | 
			
		||||
            raise KeyError("layout %s explicitely disabled in overrides"
 | 
			
		||||
                           % locale)
 | 
			
		||||
    xkb_names = sorted(name_to_xkb.keys())
 | 
			
		||||
    if name in xkb_names:
 | 
			
		||||
        return name_to_xkb[name]
 | 
			
		||||
    else:
 | 
			
		||||
        logging.debug("name %s failed" % name)
 | 
			
		||||
    for sub_name in name.split(' '):
 | 
			
		||||
        if sub_name in xkb_names:
 | 
			
		||||
            xkb = name_to_xkb[sub_name]
 | 
			
		||||
            logging.debug("dumb mapping failed but match with locale word: "
 | 
			
		||||
                          "%s (%s) → %s (%s)",
 | 
			
		||||
                          locale, name, xkb, sub_name)
 | 
			
		||||
            return xkb
 | 
			
		||||
        else:
 | 
			
		||||
            logging.debug("sub_name failed")
 | 
			
		||||
    for xkb_name in xkb_names:
 | 
			
		||||
        for xkb_sub_name in xkb_name.split(' '):
 | 
			
		||||
            if xkb_sub_name.strip('()') == name:
 | 
			
		||||
                xkb = name_to_xkb[xkb_name]
 | 
			
		||||
                logging.debug("dumb mapping failed but match with xkb word: "
 | 
			
		||||
                              "%s (%s) → %s (%s)",
 | 
			
		||||
                              locale, name, xkb, xkb_name)
 | 
			
		||||
                return xkb
 | 
			
		||||
    raise KeyError("failed to find XKB mapping for %s" % locale)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def convert_file(source_file, destination_path):
 | 
			
		||||
    logging.info("Parsing %s", source_file)
 | 
			
		||||
 | 
			
		||||
    itree = xml.etree.ElementTree.ElementTree()
 | 
			
		||||
    itree.parse(source_file)
 | 
			
		||||
 | 
			
		||||
    root = convert_xml(itree)
 | 
			
		||||
 | 
			
		||||
    try:
 | 
			
		||||
        xkb_name = locale_to_xkb(root["locale"], root["name"])
 | 
			
		||||
    except KeyError as e:
 | 
			
		||||
        logging.warn(e)
 | 
			
		||||
        return False
 | 
			
		||||
    destination_file = os.path.join(destination_path, xkb_name + ".json")
 | 
			
		||||
 | 
			
		||||
    with open(destination_file, 'w', encoding="utf-8") as dest_fd:
 | 
			
		||||
        json.dump(root, dest_fd, ensure_ascii=False, indent=2, sort_keys=True)
 | 
			
		||||
 | 
			
		||||
    logging.debug("written %s", destination_file)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def load_xkb_mappings():
 | 
			
		||||
    xkb = GnomeDesktop.XkbInfo()
 | 
			
		||||
    layouts = xkb.get_all_layouts()
 | 
			
		||||
    name_to_xkb = {}
 | 
			
		||||
 | 
			
		||||
    for layout in layouts:
 | 
			
		||||
        name = xkb.get_layout_info(layout).display_name
 | 
			
		||||
        name_to_xkb[name] = layout
 | 
			
		||||
 | 
			
		||||
    return name_to_xkb
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
locale.setlocale(locale.LC_ALL, "C")
 | 
			
		||||
name_to_xkb = load_xkb_mappings()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    if "DEBUG" in os.environ:
 | 
			
		||||
        logging.basicConfig(level=logging.DEBUG)
 | 
			
		||||
 | 
			
		||||
    if len(sys.argv) < 2:
 | 
			
		||||
        print("supply a CLDR keyboard file")
 | 
			
		||||
        sys.exit(1)
 | 
			
		||||
 | 
			
		||||
    if len(sys.argv) < 3:
 | 
			
		||||
        print("supply an output directory")
 | 
			
		||||
        sys.exit(1)
 | 
			
		||||
 | 
			
		||||
    source = sys.argv[1]
 | 
			
		||||
    destination = sys.argv[2]
 | 
			
		||||
    if os.path.isfile(source):
 | 
			
		||||
        convert_file(source, destination)
 | 
			
		||||
    elif os.path.isdir(source):
 | 
			
		||||
        for path in glob.glob(source + "/*-t-k0-android.xml"):
 | 
			
		||||
            convert_file(path, destination)
 | 
			
		||||
@@ -1,10 +0,0 @@
 | 
			
		||||
dbus_interfaces = [
 | 
			
		||||
  'org.gnome.Shell.Extensions.xml',
 | 
			
		||||
  'org.gnome.Shell.Introspect.xml',
 | 
			
		||||
  'org.gnome.Shell.PadOsd.xml',
 | 
			
		||||
  'org.gnome.Shell.Screencast.xml',
 | 
			
		||||
  'org.gnome.Shell.Screenshot.xml',
 | 
			
		||||
  'org.gnome.ShellSearchProvider.xml',
 | 
			
		||||
  'org.gnome.ShellSearchProvider2.xml'
 | 
			
		||||
]
 | 
			
		||||
install_data(dbus_interfaces, install_dir: ifacedir)
 | 
			
		||||
@@ -1,5 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="net.hadess.SensorProxy">
 | 
			
		||||
    <property name="HasAccelerometer" type="b" access="read"/>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,46 +0,0 @@
 | 
			
		||||
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
 | 
			
		||||
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
 | 
			
		||||
 | 
			
		||||
<node>
 | 
			
		||||
 | 
			
		||||
  <!--
 | 
			
		||||
      net.hadess.SwitcherooControl:
 | 
			
		||||
      @short_description: D-Bus proxy to access dual-GPU controls.
 | 
			
		||||
 | 
			
		||||
      After checking the availability of two switchable GPUs in the machine,
 | 
			
		||||
      check the value of net.hadess.SwitcherooControl.HasDualGpu to see
 | 
			
		||||
      if running applications on the discrete GPU should be offered.
 | 
			
		||||
 | 
			
		||||
      The object path will be "/net/hadess/SwitcherooControl".
 | 
			
		||||
  -->
 | 
			
		||||
  <interface name="net.hadess.SwitcherooControl">
 | 
			
		||||
    <!--
 | 
			
		||||
        HasDualGpu:
 | 
			
		||||
 | 
			
		||||
        Whether two switchable GPUs are present on the system. This property
 | 
			
		||||
        has been obsoleted in favour of the "NumGPUs" property.
 | 
			
		||||
    -->
 | 
			
		||||
    <property name="HasDualGpu" type="b" access="read"/>
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        NumGPUs:
 | 
			
		||||
 | 
			
		||||
        The number of GPUs available on the system. Note that while having no
 | 
			
		||||
        GPUs is unlikely, consumers of this API should probably not throw errors
 | 
			
		||||
        if that were the case.
 | 
			
		||||
    -->
 | 
			
		||||
    <property name="NumGPUs" type="u" access="read"/>
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        GPUs:
 | 
			
		||||
 | 
			
		||||
        An array of key-pair values representing each GPU. The key named "Name" (s)
 | 
			
		||||
        will contain a user-facing name for the GPU, the "Environment" (as) key will
 | 
			
		||||
        contain an array of even number of strings, each being an environment
 | 
			
		||||
        variable to set to use the GPU, followed by its value, the "Default" (b) key
 | 
			
		||||
        will tag the default (usually integrated) GPU.
 | 
			
		||||
    -->
 | 
			
		||||
    <property name="GPUs" type="aa{sv}" access="read"/>
 | 
			
		||||
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,32 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.Gtk.MountOperationHandler">
 | 
			
		||||
    <method name="AskPassword">
 | 
			
		||||
      <arg type="s" direction="in" name="object_id"/>
 | 
			
		||||
      <arg type="s" direction="in" name="message"/>
 | 
			
		||||
      <arg type="s" direction="in" name="icon_name"/>
 | 
			
		||||
      <arg type="s" direction="in" name="default_user"/>
 | 
			
		||||
      <arg type="s" direction="in" name="default_domain"/>
 | 
			
		||||
      <arg type="u" direction="in" name="flags"/>
 | 
			
		||||
      <arg type="u" direction="out" name="response"/>
 | 
			
		||||
      <arg type="a{sv}" direction="out" name="response_details"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="AskQuestion">
 | 
			
		||||
      <arg type="s" direction="in" name="object_id"/>
 | 
			
		||||
      <arg type="s" direction="in" name="message"/>
 | 
			
		||||
      <arg type="s" direction="in" name="icon_name"/>
 | 
			
		||||
      <arg type="as" direction="in" name="choices"/>
 | 
			
		||||
      <arg type="u" direction="out" name="response"/>
 | 
			
		||||
      <arg type="a{sv}" direction="out" name="response_details"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="ShowProcesses">
 | 
			
		||||
      <arg type="s" direction="in" name="object_id"/>
 | 
			
		||||
      <arg type="s" direction="in" name="message"/>
 | 
			
		||||
      <arg type="s" direction="in" name="icon_name"/>
 | 
			
		||||
      <arg type="ai" direction="in" name="application_pids"/>
 | 
			
		||||
      <arg type="as" direction="in" name="choices"/>
 | 
			
		||||
      <arg type="u" direction="out" name="response"/>
 | 
			
		||||
      <arg type="a{sv}" direction="out" name="response_details"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="Close"/>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,12 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.Application">
 | 
			
		||||
    <method name="ActivateAction">
 | 
			
		||||
      <arg type="s" direction="in"/>
 | 
			
		||||
      <arg type="av" direction="in"/>
 | 
			
		||||
      <arg type="a{sv}" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="Activate">
 | 
			
		||||
      <arg type="a{sv}" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,16 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.DBus">
 | 
			
		||||
    <method name="ListNames">
 | 
			
		||||
      <arg type="as" direction="out" name="names"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="GetConnectionUnixProcessID">
 | 
			
		||||
      <arg type="s" direction="in"/>
 | 
			
		||||
      <arg type="u" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <signal name="NameOwnerChanged">
 | 
			
		||||
      <arg type="s" direction="out" name="name"/>
 | 
			
		||||
      <arg type="s" direction="out" name="oldOwner"/>
 | 
			
		||||
      <arg type="s" direction="out" name="newOwner"/>
 | 
			
		||||
    </signal>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,11 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.GeoClue2.Agent">
 | 
			
		||||
    <property name="MaxAccuracyLevel" type="u" access="read"/>
 | 
			
		||||
    <method name="AuthorizeApp">
 | 
			
		||||
      <arg name="desktop_id" type="s" direction="in"/>
 | 
			
		||||
      <arg name="req_accuracy_level" type="u" direction="in"/>
 | 
			
		||||
      <arg name="authorized" type="b" direction="out"/>
 | 
			
		||||
      <arg name="allowed_accuracy_level" type="u" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,9 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.GeoClue2.Manager">
 | 
			
		||||
    <property name="InUse" type="b" access="read"/>
 | 
			
		||||
    <property name="AvailableAccuracyLevel" type="u" access="read"/>
 | 
			
		||||
    <method name="AddAgent">
 | 
			
		||||
      <arg name="id" type="s" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,13 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.ModemManager.Modem.Cdma">
 | 
			
		||||
    <method name="GetSignalQuality">
 | 
			
		||||
      <arg type="u" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="GetServingSystem">
 | 
			
		||||
      <arg type="(usu)" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <signal name="SignalQuality">
 | 
			
		||||
      <arg type="u" direction="out"/>
 | 
			
		||||
    </signal>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,19 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.ModemManager.Modem.Gsm.Network">
 | 
			
		||||
    <method name="GetRegistrationInfo">
 | 
			
		||||
      <arg type="(uss)" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="GetSignalQuality">
 | 
			
		||||
      <arg type="u" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <property name="AccessTechnology" type="u" access="read"/>
 | 
			
		||||
    <signal name="SignalQuality">
 | 
			
		||||
      <arg type="u" direction="out"/>
 | 
			
		||||
    </signal>
 | 
			
		||||
    <signal name="RegistrationInfo">
 | 
			
		||||
      <arg type="u" direction="out"/>
 | 
			
		||||
      <arg type="s" direction="out"/>
 | 
			
		||||
      <arg type="s" direction="out"/>
 | 
			
		||||
    </signal>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.ModemManager1.Modem.Modem3gpp">
 | 
			
		||||
    <property name="OperatorCode" type="s" access="read"/>
 | 
			
		||||
    <property name="OperatorName" type="s" access="read"/>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,5 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.ModemManager1.Modem.ModemCdma">
 | 
			
		||||
    <property name="Sid" type="u" access="read"/>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,5 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.ModemManager1.Modem">
 | 
			
		||||
    <property name="SignalQuality" type="(ub)" access="read"/>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,35 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.Notifications">
 | 
			
		||||
    <method name="Notify">
 | 
			
		||||
      <arg type="s" direction="in"/>
 | 
			
		||||
      <arg type="u" direction="in"/>
 | 
			
		||||
      <arg type="s" direction="in"/>
 | 
			
		||||
      <arg type="s" direction="in"/>
 | 
			
		||||
      <arg type="s" direction="in"/>
 | 
			
		||||
      <arg type="as" direction="in"/>
 | 
			
		||||
      <arg type="a{sv}" direction="in"/>
 | 
			
		||||
      <arg type="i" direction="in"/>
 | 
			
		||||
      <arg type="u" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="CloseNotification">
 | 
			
		||||
      <arg type="u" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="GetCapabilities">
 | 
			
		||||
      <arg type="as" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="GetServerInformation">
 | 
			
		||||
      <arg type="s" direction="out"/>
 | 
			
		||||
      <arg type="s" direction="out"/>
 | 
			
		||||
      <arg type="s" direction="out"/>
 | 
			
		||||
      <arg type="s" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <signal name="NotificationClosed">
 | 
			
		||||
      <arg type="u"/>
 | 
			
		||||
      <arg type="u"/>
 | 
			
		||||
    </signal>
 | 
			
		||||
    <signal name="ActionInvoked">
 | 
			
		||||
      <arg type="u"/>
 | 
			
		||||
      <arg type="s"/>
 | 
			
		||||
    </signal>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,13 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.PackageKit.Offline">
 | 
			
		||||
    <property name="UpdatePrepared" type="b" access="read"/>
 | 
			
		||||
    <property name="UpdateTriggered" type="b" access="read"/>
 | 
			
		||||
    <property name="UpgradePrepared" type="b" access="read"/>
 | 
			
		||||
    <property name="UpgradeTriggered" type="b" access="read"/>
 | 
			
		||||
    <property name="PreparedUpgrade" type="a{sv}" access="read"/>
 | 
			
		||||
    <method name="Trigger">
 | 
			
		||||
      <arg type="s" name="action" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="Cancel"/>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,11 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.UPower.Device">
 | 
			
		||||
    <property name="Type" type="u" access="read"/>
 | 
			
		||||
    <property name="State" type="u" access="read"/>
 | 
			
		||||
    <property name="Percentage" type="d" access="read"/>
 | 
			
		||||
    <property name="TimeToEmpty" type="x" access="read"/>
 | 
			
		||||
    <property name="TimeToFull" type="x" access="read"/>
 | 
			
		||||
    <property name="IsPresent" type="b" access="read"/>
 | 
			
		||||
    <property name="IconName" type="s" access="read"/>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,5 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.UPower">
 | 
			
		||||
    <property name="OnBattery" type="b" access="read"/>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,18 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.bolt1.Device">
 | 
			
		||||
    <property name="Uid" type="s" access="read"></property>
 | 
			
		||||
    <property name="Name" type="s" access="read"></property>
 | 
			
		||||
    <property name="Vendor" type="s" access="read"></property>
 | 
			
		||||
    <property name="Type" type="s" access="read"></property>
 | 
			
		||||
    <property name="Status" type="s" access="read"></property>
 | 
			
		||||
    <property name="Parent" type="s" access="read"></property>
 | 
			
		||||
    <property name="SysfsPath" type="s" access="read"></property>
 | 
			
		||||
    <property name="Stored" type="b" access="read"></property>
 | 
			
		||||
    <property name="Policy" type="s" access="read"></property>
 | 
			
		||||
    <property name="Key" type="s" access="read"></property>
 | 
			
		||||
    <property name="Label" type="s" access="read"></property>
 | 
			
		||||
    <property name="ConnectTime" type="t" access="read"></property>
 | 
			
		||||
    <property name="AuthorizeTime" type="t" access="read"></property>
 | 
			
		||||
    <property name="StoreTime" type="t" access="read"></property>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,15 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.bolt1.Manager">
 | 
			
		||||
    <property name="Probing" type="b" access="read"></property>
 | 
			
		||||
    <property name="AuthMode" type="s" access="readwrite"></property>
 | 
			
		||||
    <method name="EnrollDevice">
 | 
			
		||||
      <arg type="s" name="uid" direction="in"/>
 | 
			
		||||
      <arg type="s" name="policy" direction="in"/>
 | 
			
		||||
      <arg type="s" name="flags" direction="in"/>
 | 
			
		||||
      <arg name="device" direction="out" type="o"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <signal name="DeviceAdded">
 | 
			
		||||
      <arg name="device" type="o"/>
 | 
			
		||||
    </signal>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,24 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.impl.portal.PermissionStore">
 | 
			
		||||
    <method name="Lookup">
 | 
			
		||||
      <arg name="table" type="s" direction="in"/>
 | 
			
		||||
      <arg name="id" type="s" direction="in"/>
 | 
			
		||||
      <arg name="permissions" type="a{sas}" direction="out"/>
 | 
			
		||||
      <arg name="data" type="v" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="Set">
 | 
			
		||||
      <arg name="table" type="s" direction="in"/>
 | 
			
		||||
      <arg name="create" type="b" direction="in"/>
 | 
			
		||||
      <arg name="id" type="s" direction="in"/>
 | 
			
		||||
      <arg name="app_permissions" type="a{sas}" direction="in"/>
 | 
			
		||||
      <arg name="data" type="v" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <signal name="Changed">
 | 
			
		||||
      <arg name="table" type="s" direction="out"/>
 | 
			
		||||
      <arg name="id" type="s" direction="out"/>
 | 
			
		||||
      <arg name="deleted" type="b" direction="out"/>
 | 
			
		||||
      <arg name="data" type="v" direction="out"/>
 | 
			
		||||
      <arg name="permissions" type="a{sas}" direction="out"/>
 | 
			
		||||
    </signal>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,5 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.impl.portal.Request">
 | 
			
		||||
    <method name="Close"/>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,27 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.login1.Manager">
 | 
			
		||||
    <method name="Suspend">
 | 
			
		||||
      <arg type="b" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="CanSuspend">
 | 
			
		||||
      <arg type="s" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="Inhibit">
 | 
			
		||||
      <arg type="s" direction="in"/>
 | 
			
		||||
      <arg type="s" direction="in"/>
 | 
			
		||||
      <arg type="s" direction="in"/>
 | 
			
		||||
      <arg type="s" direction="in"/>
 | 
			
		||||
      <arg type="h" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="GetSession">
 | 
			
		||||
      <arg type="s" direction="in"/>
 | 
			
		||||
      <arg type="o" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="ListSessions">
 | 
			
		||||
      <arg name="sessions" type="a(susso)" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <signal name="PrepareForSleep">
 | 
			
		||||
      <arg type="b" direction="out"/>
 | 
			
		||||
    </signal>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,15 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.login1.Session">
 | 
			
		||||
    <signal name="Lock"/>
 | 
			
		||||
    <signal name="Unlock"/>
 | 
			
		||||
    <property name="Active" type="b" access="read"/>
 | 
			
		||||
    <property name="Class" type="s" access="read"/>
 | 
			
		||||
    <property name="Id" type="s" access="read"/>
 | 
			
		||||
    <property name="Remote" type="b" access="read"/>
 | 
			
		||||
    <property name="Type" type="s" access="read"/>
 | 
			
		||||
    <property name="State" type="s" access="read"/>
 | 
			
		||||
    <method name="SetLockedHint">
 | 
			
		||||
      <arg type="b" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.login1.User">
 | 
			
		||||
    <property name="Display" type="(so)" access="read"/>
 | 
			
		||||
    <property name="Sessions" type="a(so)" access="read"/>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,13 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.realmd.Provider">
 | 
			
		||||
    <property name="Name" type="s" access="read"/>
 | 
			
		||||
    <property name="Version" type="s" access="read"/>
 | 
			
		||||
    <property name="Realms" type="ao" access="read"/>
 | 
			
		||||
    <method name="Discover">
 | 
			
		||||
      <arg name="string" type="s" direction="in"/>
 | 
			
		||||
      <arg name="options" type="a{sv}" direction="in"/>
 | 
			
		||||
      <arg name="relevance" type="i" direction="out"/>
 | 
			
		||||
      <arg name="realm" type="ao" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,20 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.realmd.Realm">
 | 
			
		||||
    <property name="Name" type="s" access="read"/>
 | 
			
		||||
    <property name="Configured" type="s" access="read"/>
 | 
			
		||||
    <property name="Details" type="a(ss)" access="read"/>
 | 
			
		||||
    <property name="LoginFormats" type="as" access="read"/>
 | 
			
		||||
    <property name="LoginPolicy" type="s" access="read"/>
 | 
			
		||||
    <property name="PermittedLogins" type="as" access="read"/>
 | 
			
		||||
    <property name="SupportedInterfaces" type="as" access="read"/>
 | 
			
		||||
    <method name="ChangeLoginPolicy">
 | 
			
		||||
      <arg name="login_policy" type="s" direction="in"/>
 | 
			
		||||
      <arg name="permitted_add" type="as" direction="in"/>
 | 
			
		||||
      <arg name="permitted_remove" type="as" direction="in"/>
 | 
			
		||||
      <arg name="options" type="a{sv}" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="Deconfigure">
 | 
			
		||||
      <arg name="options" type="a{sv}" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,15 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.freedesktop.realmd.Service">
 | 
			
		||||
    <method name="Cancel">
 | 
			
		||||
      <arg name="operation" type="s" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="Release"/>
 | 
			
		||||
    <method name="SetLocale">
 | 
			
		||||
      <arg name="locale" type="s" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <signal name="Diagnostics">
 | 
			
		||||
      <arg name="data" type="s"/>
 | 
			
		||||
      <arg name="operation" type="s"/>
 | 
			
		||||
    </signal>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,26 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.gnome.Magnifier.ZoomRegion">
 | 
			
		||||
    <method name="setMagFactor">
 | 
			
		||||
      <arg type="d" direction="in"/>
 | 
			
		||||
      <arg type="d" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="getMagFactor">
 | 
			
		||||
      <arg type="d" direction="out"/>
 | 
			
		||||
      <arg type="d" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="setRoi">
 | 
			
		||||
      <arg type="ai" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="getRoi">
 | 
			
		||||
      <arg type="ai" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="shiftContentsTo">
 | 
			
		||||
      <arg type="i" direction="in"/>
 | 
			
		||||
      <arg type="i" direction="in"/>
 | 
			
		||||
      <arg type="b" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="moveResize">
 | 
			
		||||
      <arg type="ai" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,54 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.gnome.Magnifier">
 | 
			
		||||
    <method name="setActive">
 | 
			
		||||
      <arg type="b" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="isActive">
 | 
			
		||||
      <arg type="b" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="showCursor"/>
 | 
			
		||||
    <method name="hideCursor"/>
 | 
			
		||||
    <method name="createZoomRegion">
 | 
			
		||||
      <arg type="d" direction="in"/>
 | 
			
		||||
      <arg type="d" direction="in"/>
 | 
			
		||||
      <arg type="ai" direction="in"/>
 | 
			
		||||
      <arg type="ai" direction="in"/>
 | 
			
		||||
      <arg type="o" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="addZoomRegion">
 | 
			
		||||
      <arg type="o" direction="in"/>
 | 
			
		||||
      <arg type="b" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="getZoomRegions">
 | 
			
		||||
      <arg type="ao" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="clearAllZoomRegions"/>
 | 
			
		||||
    <method name="fullScreenCapable">
 | 
			
		||||
      <arg type="b" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="setCrosswireSize">
 | 
			
		||||
      <arg type="i" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="getCrosswireSize">
 | 
			
		||||
      <arg type="i" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="setCrosswireLength">
 | 
			
		||||
      <arg type="i" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="getCrosswireLength">
 | 
			
		||||
      <arg type="i" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="setCrosswireClip">
 | 
			
		||||
      <arg type="b" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="getCrosswireClip">
 | 
			
		||||
      <arg type="b" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="setCrosswireColor">
 | 
			
		||||
      <arg type="u" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="getCrosswireColor">
 | 
			
		||||
      <arg type="u" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,18 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.gnome.ScreenSaver">
 | 
			
		||||
    <method name="Lock"/>
 | 
			
		||||
    <method name="GetActive">
 | 
			
		||||
      <arg type="b" direction="out" name="active"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="SetActive">
 | 
			
		||||
      <arg type="b" direction="in" name="value"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="GetActiveTime">
 | 
			
		||||
      <arg type="u" direction="out" name="value"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <signal name="ActiveChanged">
 | 
			
		||||
      <arg name="new_value" type="b"/>
 | 
			
		||||
    </signal>
 | 
			
		||||
    <signal name="WakeUpScreen"/>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,16 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.gnome.SessionManager.EndSessionDialog">
 | 
			
		||||
    <method name="Open">
 | 
			
		||||
      <arg type="u" direction="in"/>
 | 
			
		||||
      <arg type="u" direction="in"/>
 | 
			
		||||
      <arg type="u" direction="in"/>
 | 
			
		||||
      <arg type="ao" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="Close"/>
 | 
			
		||||
    <signal name="ConfirmedLogout"/>
 | 
			
		||||
    <signal name="ConfirmedReboot"/>
 | 
			
		||||
    <signal name="ConfirmedShutdown"/>
 | 
			
		||||
    <signal name="Canceled"/>
 | 
			
		||||
    <signal name="Closed"/>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,10 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.gnome.SessionManager.Inhibitor">
 | 
			
		||||
    <method name="GetAppId">
 | 
			
		||||
      <arg type="s" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="GetReason">
 | 
			
		||||
      <arg type="s" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,11 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.gnome.SessionManager.Presence">
 | 
			
		||||
    <method name="SetStatus">
 | 
			
		||||
      <arg type="u" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <property name="status" type="u" access="readwrite"/>
 | 
			
		||||
    <signal name="StatusChanged">
 | 
			
		||||
      <arg type="u" direction="out"/>
 | 
			
		||||
    </signal>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,23 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.gnome.SessionManager">
 | 
			
		||||
    <method name="Logout">
 | 
			
		||||
      <arg type="u" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="Shutdown"/>
 | 
			
		||||
    <method name="Reboot"/>
 | 
			
		||||
    <method name="CanShutdown">
 | 
			
		||||
      <arg type="b" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="IsInhibited">
 | 
			
		||||
      <arg type="u" direction="in"/>
 | 
			
		||||
      <arg type="b" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <property name="SessionIsActive" type="b" access="read"/>
 | 
			
		||||
    <signal name="InhibitorAdded">
 | 
			
		||||
      <arg type="o" direction="out"/>
 | 
			
		||||
    </signal>
 | 
			
		||||
    <signal name="InhibitorRemoved">
 | 
			
		||||
      <arg type="o" direction="out"/>
 | 
			
		||||
    </signal>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.gnome.SettingsDaemon.Color">
 | 
			
		||||
    <property name="DisabledUntilTomorrow" type="b" access="readwrite"/>
 | 
			
		||||
    <property name="NightLightActive" type="b" access="read"/>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,5 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.gnome.SettingsDaemon.Power.Screen">
 | 
			
		||||
    <property name="Brightness" type="i" access="readwrite"/>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,10 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.gnome.SettingsDaemon.Rfkill">
 | 
			
		||||
    <property name="AirplaneMode" type="b" access="readwrite"/>
 | 
			
		||||
    <property name="HardwareAirplaneMode" type="b" access="read"/>
 | 
			
		||||
    <property name="BluetoothAirplaneMode" type="b" access="readwrite"/>
 | 
			
		||||
    <property name="BluetoothHasAirplaneMode" type="b" access="read"/>
 | 
			
		||||
    <property name="BluetoothHardwareAirplaneMode" type="b" access="readwrite"/>
 | 
			
		||||
    <property name="ShouldShowAirplaneMode" type="b" access="read"/>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,13 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
<interface name="org.gnome.SettingsDaemon.Wacom">
 | 
			
		||||
  <method name="SetGroupModeLED">
 | 
			
		||||
    <arg name="device_path" direction="in" type="s"/>
 | 
			
		||||
    <arg name="group" direction="in" type="u"/>
 | 
			
		||||
    <arg name="mode" direction="in" type="u"/>
 | 
			
		||||
  </method>
 | 
			
		||||
  <method name="SetOLEDLabels">
 | 
			
		||||
    <arg name="device_path" direction="in" type="s"/>
 | 
			
		||||
    <arg name="labels" direction="in" type="as"/>
 | 
			
		||||
  </method>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,12 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.gnome.Shell.AudioDeviceSelection">
 | 
			
		||||
    <method name="Open">
 | 
			
		||||
      <arg name="devices" direction="in" type="as"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="Close">
 | 
			
		||||
    </method>
 | 
			
		||||
    <signal name="DeviceSelected">
 | 
			
		||||
      <arg name="device" type="s"/>
 | 
			
		||||
    </signal>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,12 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.gnome.Shell.CalendarServer">
 | 
			
		||||
    <method name="GetEvents">
 | 
			
		||||
      <arg type="x" direction="in" />
 | 
			
		||||
      <arg type="x" direction="in" />
 | 
			
		||||
      <arg type="b" direction="in" />
 | 
			
		||||
      <arg type="a(sssbxxa{sv})" direction="out" />
 | 
			
		||||
    </method>
 | 
			
		||||
    <property name="HasCalendars" type="b" access="read" />
 | 
			
		||||
    <signal name="Changed" />
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,15 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
 | 
			
		||||
  <!--
 | 
			
		||||
      org.gnome.Shell.ClocksIntegration:
 | 
			
		||||
      @short_description: Clocks integration interface
 | 
			
		||||
 | 
			
		||||
      The interface used for exporting location settings to GNOME Shell's
 | 
			
		||||
      world clocks integration.
 | 
			
		||||
  -->
 | 
			
		||||
  <interface name="org.gnome.Shell.ClocksIntegration">
 | 
			
		||||
 | 
			
		||||
  <property name="Locations" type="av" access="read"/>
 | 
			
		||||
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,238 +0,0 @@
 | 
			
		||||
<!DOCTYPE node PUBLIC
 | 
			
		||||
'-//freedesktop//DTD D-BUS Object Introspection 1.0//EN'
 | 
			
		||||
'http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd'>
 | 
			
		||||
<node>
 | 
			
		||||
 | 
			
		||||
  <!--
 | 
			
		||||
      org.gnome.Shell.Extensions:
 | 
			
		||||
      @short_description: Extensions interface
 | 
			
		||||
 | 
			
		||||
      The interface used to query and manage extensions.
 | 
			
		||||
  -->
 | 
			
		||||
  <interface name="org.gnome.Shell.Extensions">
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        ListExtensions:
 | 
			
		||||
        @extensions: A dictionary of extension infos
 | 
			
		||||
 | 
			
		||||
        Get a list of installed extensions. The returned @extensions
 | 
			
		||||
        dictionary maps extension UUIDs to info vardicts. See
 | 
			
		||||
        GetExtensionInfo() for documentation on possible keys.
 | 
			
		||||
    -->
 | 
			
		||||
    <method name="ListExtensions">
 | 
			
		||||
      <arg type="a{sa{sv}}" direction="out" name="extensions"/>
 | 
			
		||||
    </method>
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        GetExtensionInfo:
 | 
			
		||||
        @uuid: The UUID of the extension
 | 
			
		||||
        @info: The returned extension info
 | 
			
		||||
 | 
			
		||||
        The information returned in the @info vardict depends on the
 | 
			
		||||
        metadata the extension provides, however it is guaranteed to
 | 
			
		||||
        contain the following keys:
 | 
			
		||||
 | 
			
		||||
        <variablelist>
 | 
			
		||||
          <varlistentry>
 | 
			
		||||
            <term>uuid s</term>
 | 
			
		||||
            <listitem><para>The UUID of the extension</para></listitem>
 | 
			
		||||
          </varlistentry>
 | 
			
		||||
 | 
			
		||||
          <varlistentry>
 | 
			
		||||
            <term>name s</term>
 | 
			
		||||
            <listitem><para>The name of the extension</para></listitem>
 | 
			
		||||
          </varlistentry>
 | 
			
		||||
 | 
			
		||||
          <varlistentry>
 | 
			
		||||
            <term>description s</term>
 | 
			
		||||
            <listitem><para>
 | 
			
		||||
              A short summary that describes what the extension does
 | 
			
		||||
            </para></listitem>
 | 
			
		||||
          </varlistentry>
 | 
			
		||||
 | 
			
		||||
          <varlistentry>
 | 
			
		||||
            <term>shell-version as</term>
 | 
			
		||||
            <listitem><para>An array of support shell versions</para></listitem>
 | 
			
		||||
          </varlistentry>
 | 
			
		||||
 | 
			
		||||
          <varlistentry>
 | 
			
		||||
            <term>type d</term>
 | 
			
		||||
            <listitem><para>
 | 
			
		||||
              The type of extension:
 | 
			
		||||
              <simplelist>
 | 
			
		||||
                <member>1: SYSTEM</member>
 | 
			
		||||
                <member>2: PER_USER</member>
 | 
			
		||||
              </simplelist>
 | 
			
		||||
            </para></listitem>
 | 
			
		||||
          </varlistentry>
 | 
			
		||||
 | 
			
		||||
          <varlistentry>
 | 
			
		||||
            <term>state d</term>
 | 
			
		||||
            <listitem><para>
 | 
			
		||||
              The state the extension is in:
 | 
			
		||||
              <simplelist>
 | 
			
		||||
                <member>1: ENABLED</member>
 | 
			
		||||
                <member>2: DISABLED</member>
 | 
			
		||||
                <member>3: ERROR</member>
 | 
			
		||||
                <member>4: OUT_OF_DATE</member>
 | 
			
		||||
                <member>5: DOWNLOADING</member>
 | 
			
		||||
                <member>6: INITIALIZED</member>
 | 
			
		||||
                <member>99: UNINSTALLED</member>
 | 
			
		||||
              </simplelist>
 | 
			
		||||
            </para></listitem>
 | 
			
		||||
          </varlistentry>
 | 
			
		||||
 | 
			
		||||
          <varlistentry>
 | 
			
		||||
            <term>path s</term>
 | 
			
		||||
            <listitem><para>The extension directory</para></listitem>
 | 
			
		||||
          </varlistentry>
 | 
			
		||||
 | 
			
		||||
          <varlistentry>
 | 
			
		||||
            <term>error s</term>
 | 
			
		||||
            <listitem><para>The most recent error caught in init(), enable() or disable()</para></listitem>
 | 
			
		||||
          </varlistentry>
 | 
			
		||||
 | 
			
		||||
          <varlistentry>
 | 
			
		||||
            <term>hasPrefs b</term>
 | 
			
		||||
            <listitem><para>Whether the extension includes preference UI</para></listitem>
 | 
			
		||||
          </varlistentry>
 | 
			
		||||
        </variablelist>
 | 
			
		||||
 | 
			
		||||
        By convention, many extensions will also include the following keys:
 | 
			
		||||
        <variablelist>
 | 
			
		||||
          <varlistentry>
 | 
			
		||||
            <term>version d</term>
 | 
			
		||||
            <listitem><para>The extension version</para></listitem>
 | 
			
		||||
          </varlistentry>
 | 
			
		||||
 | 
			
		||||
          <varlistentry>
 | 
			
		||||
            <term>url s</term>
 | 
			
		||||
            <listitem><para>The URL to the extension homepage or repository</para></listitem>
 | 
			
		||||
          </varlistentry>
 | 
			
		||||
 | 
			
		||||
          <varlistentry>
 | 
			
		||||
            <term>settings-schema s</term>
 | 
			
		||||
            <listitem><para>The ID of a bundled GSettings schema</para></listitem>
 | 
			
		||||
          </varlistentry>
 | 
			
		||||
 | 
			
		||||
          <varlistentry>
 | 
			
		||||
            <term>gettext-domain s</term>
 | 
			
		||||
            <listitem><para>The domain used for translations</para></listitem>
 | 
			
		||||
          </varlistentry>
 | 
			
		||||
        </variablelist>
 | 
			
		||||
    -->
 | 
			
		||||
    <method name="GetExtensionInfo">
 | 
			
		||||
      <arg type="s" direction="in" name="uuid"/>
 | 
			
		||||
      <arg type="a{sv}" direction="out" name="info"/>
 | 
			
		||||
    </method>
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        GetExtensionErrors:
 | 
			
		||||
        @uuid: The UUID of the extension
 | 
			
		||||
        @errors: The returned errors
 | 
			
		||||
 | 
			
		||||
        Get the list of errors that caused the extension
 | 
			
		||||
        to be in ERROR state.
 | 
			
		||||
    -->
 | 
			
		||||
    <method name="GetExtensionErrors">
 | 
			
		||||
      <arg type="s" direction="in" name="uuid"/>
 | 
			
		||||
      <arg type="as" direction="out" name="errors"/>
 | 
			
		||||
    </method>
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        InstallRemoteExtension:
 | 
			
		||||
        @uuid: The UUID of the extension
 | 
			
		||||
        @result: The result of the operation
 | 
			
		||||
 | 
			
		||||
        Download and install an extension.
 | 
			
		||||
    -->
 | 
			
		||||
    <method name="InstallRemoteExtension">
 | 
			
		||||
      <arg type="s" direction="in" name="uuid"/>
 | 
			
		||||
      <arg type="s" direction="out" name="result"/>
 | 
			
		||||
    </method>
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        UninstallExtension:
 | 
			
		||||
        @uuid: The UUID of the extension
 | 
			
		||||
        @success: Whether the operation was successful
 | 
			
		||||
 | 
			
		||||
        Uninstall an extension.
 | 
			
		||||
    -->
 | 
			
		||||
    <method name="UninstallExtension">
 | 
			
		||||
      <arg type="s" direction="in" name="uuid"/>
 | 
			
		||||
      <arg type="b" direction="out" name="success"/>
 | 
			
		||||
    </method>
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        ReloadExtension:
 | 
			
		||||
        @uuid: The UUID of the extension
 | 
			
		||||
 | 
			
		||||
        Reload an extension.
 | 
			
		||||
    -->
 | 
			
		||||
    <method name="ReloadExtension">
 | 
			
		||||
      <arg type="s" direction="in" name="uuid"/>
 | 
			
		||||
    </method>
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        EnableExtension:
 | 
			
		||||
        @uuid: The UUID of the extension
 | 
			
		||||
        @success: Whether the operation was successful
 | 
			
		||||
 | 
			
		||||
        Enable an extension.
 | 
			
		||||
    -->
 | 
			
		||||
    <method name="EnableExtension"> \
 | 
			
		||||
      <arg type="s" direction="in" name="uuid"/> \
 | 
			
		||||
      <arg type="b" direction="out" name="success"/> \
 | 
			
		||||
    </method> \
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        DisableExtension:
 | 
			
		||||
        @uuid: The UUID of the extension
 | 
			
		||||
        @success: Whether the operation was successful
 | 
			
		||||
 | 
			
		||||
        Disable an extension.
 | 
			
		||||
    -->
 | 
			
		||||
    <method name="DisableExtension"> \
 | 
			
		||||
      <arg type="s" direction="in" name="uuid"/> \
 | 
			
		||||
      <arg type="b" direction="out" name="success"/> \
 | 
			
		||||
    </method> \
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        LaunchExtensionPrefs:
 | 
			
		||||
        @uuid: The UUID of the extension
 | 
			
		||||
 | 
			
		||||
        Launch preferences of an extension.
 | 
			
		||||
    -->
 | 
			
		||||
    <method name="LaunchExtensionPrefs">
 | 
			
		||||
      <arg type="s" direction="in" name="uuid"/>
 | 
			
		||||
    </method>
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        CheckForUpdates:
 | 
			
		||||
        Update all extensions for which updates are available
 | 
			
		||||
    -->
 | 
			
		||||
    <method name="CheckForUpdates"/>
 | 
			
		||||
 | 
			
		||||
    <signal name="ExtensionStateChanged">
 | 
			
		||||
      <arg type="s" name="uuid"/>
 | 
			
		||||
      <arg type="a{sv}" name="state"/>
 | 
			
		||||
    </signal>
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        ExtensionStatusChanged:
 | 
			
		||||
        Deprecated for ExtensionStateChanged
 | 
			
		||||
    -->
 | 
			
		||||
    <signal name="ExtensionStatusChanged">
 | 
			
		||||
      <arg type="s" name="uuid"/>
 | 
			
		||||
      <arg type="i" name="state"/>
 | 
			
		||||
      <arg type="s" name="error"/>
 | 
			
		||||
    </signal>
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        ShellVersion:
 | 
			
		||||
        The GNOME Shell version
 | 
			
		||||
    -->
 | 
			
		||||
    <property name="ShellVersion" type="s" access="read"/>
 | 
			
		||||
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,8 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.gnome.Shell.HotplugSniffer">
 | 
			
		||||
    <method name="SniffURI">
 | 
			
		||||
      <arg type="s" direction="in"/>
 | 
			
		||||
      <arg type="as" direction="out"/>
 | 
			
		||||
    </method>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,61 +0,0 @@
 | 
			
		||||
<!DOCTYPE node PUBLIC
 | 
			
		||||
'-//freedesktop//DTD D-BUS Object Introspection 1.0//EN'
 | 
			
		||||
'http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd'>
 | 
			
		||||
<node>
 | 
			
		||||
 | 
			
		||||
  <!--
 | 
			
		||||
      org.gnome.Shell.Introspect:
 | 
			
		||||
      @short_description: Introspection interface
 | 
			
		||||
 | 
			
		||||
      The interface used to introspect the state of Shell, such as running
 | 
			
		||||
      applications, currently active application, etc.
 | 
			
		||||
  -->
 | 
			
		||||
  <interface name="org.gnome.Shell.Introspect">
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        RunningApplicationsChanged:
 | 
			
		||||
        @short_description: Notifies when the running applications changes
 | 
			
		||||
    -->
 | 
			
		||||
    <signal name="RunningApplicationsChanged" />
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        GetRunningApplications:
 | 
			
		||||
        @short_description: Retrieves the description of all running applications
 | 
			
		||||
 | 
			
		||||
        Each application is associated by an application ID. The details of
 | 
			
		||||
        each application consists of a varlist of keys and values. Available
 | 
			
		||||
        keys are listed below.
 | 
			
		||||
 | 
			
		||||
        'active-on-seats' - (as)   list of seats the application is active on
 | 
			
		||||
                                   (a seat only has at most one active
 | 
			
		||||
                                   application)
 | 
			
		||||
    -->
 | 
			
		||||
    <method name="GetRunningApplications">
 | 
			
		||||
      <arg name="apps" direction="out" type="a{sa{sv}}" />
 | 
			
		||||
    </method>
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        GetWindows:
 | 
			
		||||
        @short_description: Retrieves the current list of windows and their properties
 | 
			
		||||
 | 
			
		||||
        A window is exposed as:
 | 
			
		||||
        * t ID: unique ID of the window
 | 
			
		||||
        * a{sv} properties: high-level properties
 | 
			
		||||
 | 
			
		||||
          Known properties:
 | 
			
		||||
 | 
			
		||||
          - "title"       (s): (readonly) title of the window
 | 
			
		||||
          - "app-id"      (s): (readonly) application ID of the window
 | 
			
		||||
          - "wm-class"    (s): (readonly) class of the window
 | 
			
		||||
          - "client-type" (u): (readonly) 0 for Wayland, 1 for X11
 | 
			
		||||
          - "is-hidden"   (b): (readonly) if the window is currently hidden
 | 
			
		||||
          - "has-focus"   (b): (readonly) if the window currently have
 | 
			
		||||
                                          keyboard focus
 | 
			
		||||
          - "width"       (u): (readonly) width of the window
 | 
			
		||||
          - "height"      (u): (readonly) height of the window
 | 
			
		||||
    -->
 | 
			
		||||
    <method name="GetWindows">
 | 
			
		||||
      <arg name="windows" direction="out" type="a{ta{sv}}" />
 | 
			
		||||
    </method>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,13 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.gnome.Shell.PerfHelper">
 | 
			
		||||
    <method name="CreateWindow">
 | 
			
		||||
      <arg type="i" direction="in"/>
 | 
			
		||||
      <arg type="i" direction="in"/>
 | 
			
		||||
      <arg type="b" direction="in"/>
 | 
			
		||||
      <arg type="b" direction="in"/>
 | 
			
		||||
      <arg type="b" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="WaitWindows"/>
 | 
			
		||||
    <method name="DestroyWindows"/>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,19 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.gnome.Shell.PortalHelper">
 | 
			
		||||
    <method name="Authenticate">
 | 
			
		||||
      <arg name="connection" type="o" direction="in"/>
 | 
			
		||||
      <arg name="url" type="s" direction="in"/>
 | 
			
		||||
      <arg name="timestamp" type="u" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="Close">
 | 
			
		||||
      <arg name="connection" type="o" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="Refresh">
 | 
			
		||||
      <arg name="connection" type="o" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <signal name="Done">
 | 
			
		||||
      <arg type="o" name="connection"/>
 | 
			
		||||
      <arg type="u" name="result"/>
 | 
			
		||||
    </signal>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,8 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.gnome.Shell.Wacom.PadOsd">
 | 
			
		||||
    <method name="Show">
 | 
			
		||||
      <arg name="device_node" direction="in" type="o"/>
 | 
			
		||||
      <arg name="edition_mode" direction="in" type="b"/>
 | 
			
		||||
    </method>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,16 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
 | 
			
		||||
  <!--
 | 
			
		||||
      org.gnome.Shell.WeatherIntegration:
 | 
			
		||||
      @short_description: Weather integration interface
 | 
			
		||||
 | 
			
		||||
      The interface used for exporting location settings to GNOME Shell's
 | 
			
		||||
      weather integration.
 | 
			
		||||
  -->
 | 
			
		||||
  <interface name="org.gnome.Shell.WeatherIntegration">
 | 
			
		||||
 | 
			
		||||
  <property name="AutomaticLocation" type="b" access="read"/>
 | 
			
		||||
  <property name="Locations" type="av" access="read"/>
 | 
			
		||||
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,46 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.gnome.Shell">
 | 
			
		||||
    <method name="Eval">
 | 
			
		||||
      <arg type="s" direction="in" name="script"/>
 | 
			
		||||
      <arg type="b" direction="out" name="success"/>
 | 
			
		||||
      <arg type="s" direction="out" name="result"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="FocusSearch"/>
 | 
			
		||||
    <method name="ShowOSD">
 | 
			
		||||
      <arg type="a{sv}" direction="in" name="params"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="ShowMonitorLabels">
 | 
			
		||||
      <arg type="a{sv}" direction="in" name="params"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="HideMonitorLabels"/>
 | 
			
		||||
    <method name="FocusApp">
 | 
			
		||||
      <arg type="s" direction="in" name="id"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="ShowApplications"/>
 | 
			
		||||
    <method name="GrabAccelerator">
 | 
			
		||||
      <arg type="s" direction="in" name="accelerator"/>
 | 
			
		||||
      <arg type="u" direction="in" name="modeFlags"/>
 | 
			
		||||
      <arg type="u" direction="in" name="grabFlags"/>
 | 
			
		||||
      <arg type="u" direction="out" name="action"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="GrabAccelerators">
 | 
			
		||||
      <arg type="a(suu)" direction="in" name="accelerators"/>
 | 
			
		||||
      <arg type="au" direction="out" name="actions"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="UngrabAccelerator">
 | 
			
		||||
      <arg type="u" direction="in" name="action"/>
 | 
			
		||||
      <arg type="b" direction="out" name="success"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="UngrabAccelerators">
 | 
			
		||||
      <arg type="au" direction="in" name="action"/>
 | 
			
		||||
      <arg type="b" direction="out" name="success"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <signal name="AcceleratorActivated">
 | 
			
		||||
      <arg name="action" type="u"/>
 | 
			
		||||
      <arg name="parameters" type="a{sv}"/>
 | 
			
		||||
    </signal>
 | 
			
		||||
    <property name="Mode" type="s" access="read"/>
 | 
			
		||||
    <property name="OverviewActive" type="b" access="readwrite"/>
 | 
			
		||||
    <property name="ShellVersion" type="s" access="read"/>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,13 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.gtk.Notifications">
 | 
			
		||||
    <method name="AddNotification">
 | 
			
		||||
      <arg type="s" direction="in"/>
 | 
			
		||||
      <arg type="s" direction="in"/>
 | 
			
		||||
      <arg type="a{sv}" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
    <method name="RemoveNotification">
 | 
			
		||||
      <arg type="s" direction="in"/>
 | 
			
		||||
      <arg type="s" direction="in"/>
 | 
			
		||||
    </method>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,12 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.mpris.MediaPlayer2.Player">
 | 
			
		||||
    <method name="PlayPause"/>
 | 
			
		||||
    <method name="Next"/>
 | 
			
		||||
    <method name="Previous"/>
 | 
			
		||||
    <property name="CanGoNext" type="b" access="read"/>
 | 
			
		||||
    <property name="CanGoPrevious" type="b" access="read"/>
 | 
			
		||||
    <property name="CanPlay" type="b" access="read"/>
 | 
			
		||||
    <property name="Metadata" type="a{sv}" access="read"/>
 | 
			
		||||
    <property name="PlaybackStatus" type="s" access="read"/>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
@@ -1,7 +0,0 @@
 | 
			
		||||
<node>
 | 
			
		||||
  <interface name="org.mpris.MediaPlayer2">
 | 
			
		||||
    <method name="Raise"/>
 | 
			
		||||
    <property name="CanRaise" type="b" access="read"/>
 | 
			
		||||
    <property name="DesktopEntry" type="s" access="read"/>
 | 
			
		||||
  </interface>
 | 
			
		||||
</node>
 | 
			
		||||
							
								
								
									
										15740
									
								
								data/emoji.json
									
									
									
									
									
								
							
							
						
						
									
										15740
									
								
								data/emoji.json
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,58 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<gresources>
 | 
			
		||||
  <gresource prefix="/org/gnome/shell/dbus-interfaces">
 | 
			
		||||
    <file preprocess="xml-stripblanks">net.hadess.SensorProxy.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">net.hadess.SwitcherooControl.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.Application.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.bolt1.Device.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.bolt1.Manager.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.DBus.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.GeoClue2.Agent.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.GeoClue2.Manager.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.impl.portal.PermissionStore.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.impl.portal.Request.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.login1.Manager.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.login1.Session.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.login1.User.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.ModemManager1.Modem.Modem3gpp.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.ModemManager1.Modem.ModemCdma.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.ModemManager1.Modem.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.ModemManager.Modem.Cdma.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.ModemManager.Modem.Gsm.Network.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.Notifications.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.PackageKit.Offline.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.realmd.Provider.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.realmd.Realm.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.realmd.Service.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.UPower.Device.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.freedesktop.UPower.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.Magnifier.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.Magnifier.ZoomRegion.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.ScreenSaver.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.SessionManager.EndSessionDialog.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.SessionManager.Inhibitor.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.SessionManager.Presence.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.SessionManager.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.SettingsDaemon.Color.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.SettingsDaemon.Power.Screen.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.SettingsDaemon.Rfkill.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.SettingsDaemon.Wacom.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.Shell.AudioDeviceSelection.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.Shell.CalendarServer.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.Shell.ClocksIntegration.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.Shell.Extensions.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.Shell.Introspect.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.Shell.HotplugSniffer.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.Shell.PerfHelper.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.Shell.PortalHelper.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.Shell.Screencast.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.Shell.Screenshot.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.Shell.Wacom.PadOsd.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.Shell.WeatherIntegration.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gnome.Shell.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.Gtk.MountOperationHandler.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.gtk.Notifications.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.mpris.MediaPlayer2.Player.xml</file>
 | 
			
		||||
    <file preprocess="xml-stripblanks">org.mpris.MediaPlayer2.xml</file>
 | 
			
		||||
  </gresource>
 | 
			
		||||
</gresources>
 | 
			
		||||
@@ -1,15 +0,0 @@
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Disable GNOME Shell extensions after failure
 | 
			
		||||
# Note that this unit must not conflict with anything, and must
 | 
			
		||||
# be able to run in parallel with the gnome-session-shutdown.target.
 | 
			
		||||
DefaultDependencies=no
 | 
			
		||||
 | 
			
		||||
# We want to disable extensions only if gnome-shell has flagged the extensions
 | 
			
		||||
# to be a likely cause of trouble.
 | 
			
		||||
ConditionPathExists=%t/gnome-shell-disable-extensions
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
# Disable extensions
 | 
			
		||||
ExecStart=gsettings set org.gnome.shell disable-user-extensions true
 | 
			
		||||
Restart=no
 | 
			
		||||
@@ -3,6 +3,10 @@ Type=Application
 | 
			
		||||
Name=Shell Extensions
 | 
			
		||||
Comment=Configure GNOME Shell Extensions
 | 
			
		||||
Exec=@bindir@/gnome-shell-extension-prefs %u
 | 
			
		||||
X-GNOME-Bugzilla-Bugzilla=GNOME
 | 
			
		||||
X-GNOME-Bugzilla-Product=gnome-shell
 | 
			
		||||
X-GNOME-Bugzilla-Component=extensions
 | 
			
		||||
X-GNOME-Bugzilla-Version=@VERSION@
 | 
			
		||||
Categories=GNOME;GTK;
 | 
			
		||||
OnlyShowIn=GNOME;
 | 
			
		||||
NoDisplay=true
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,6 @@
 | 
			
		||||
    <file>be.json</file>
 | 
			
		||||
    <file>bg.json</file>
 | 
			
		||||
    <file>by.json</file>
 | 
			
		||||
    <file>ca.json</file>
 | 
			
		||||
    <file>cz.json</file>
 | 
			
		||||
    <file>de.json</file>
 | 
			
		||||
    <file>dk.json</file>
 | 
			
		||||
@@ -55,6 +54,5 @@
 | 
			
		||||
    <file>us.json</file>
 | 
			
		||||
    <file>vn.json</file>
 | 
			
		||||
    <file>za.json</file>
 | 
			
		||||
    <file>emoji.json</file>
 | 
			
		||||
  </gresource>
 | 
			
		||||
</gresources>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,18 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<gresources>
 | 
			
		||||
  <gresource prefix="/org/gnome/shell/theme">
 | 
			
		||||
    <file>calendar-arrow-left.svg</file>
 | 
			
		||||
    <file>calendar-arrow-right.svg</file>
 | 
			
		||||
    <file>calendar-today.svg</file>
 | 
			
		||||
    <file>checkbox-focused.svg</file>
 | 
			
		||||
    <file>checkbox-off-focused.svg</file>
 | 
			
		||||
    <file>checkbox-off.svg</file>
 | 
			
		||||
    <file>checkbox.svg</file>
 | 
			
		||||
    <file>close-window.svg</file>
 | 
			
		||||
    <file>close-window-active.svg</file>
 | 
			
		||||
    <file>close-window-hover.svg</file>
 | 
			
		||||
    <file>corner-ripple-ltr.png</file>
 | 
			
		||||
    <file>corner-ripple-rtl.png</file>
 | 
			
		||||
    <file>dash-placeholder.svg</file>
 | 
			
		||||
    <file>gnome-shell.css</file>
 | 
			
		||||
    <file>gnome-shell-high-contrast.css</file>
 | 
			
		||||
@@ -20,18 +27,16 @@
 | 
			
		||||
    <file>no-notifications.svg</file>
 | 
			
		||||
    <file>noise-texture.png</file>
 | 
			
		||||
    <file>pad-osd.css</file>
 | 
			
		||||
    <file alias="icons/eye-open-negative-filled-symbolic.svg">eye-open-negative-filled-symbolic.svg</file>
 | 
			
		||||
    <file alias="icons/eye-not-looking-symbolic.svg">eye-not-looking-symbolic.svg</file>
 | 
			
		||||
    <file alias="icons/pointer-double-click-symbolic.svg">pointer-double-click-symbolic.svg</file>
 | 
			
		||||
    <file alias="icons/pointer-drag-symbolic.svg">pointer-drag-symbolic.svg</file>
 | 
			
		||||
    <file alias="icons/pointer-primary-click-symbolic.svg">pointer-primary-click-symbolic.svg</file>
 | 
			
		||||
    <file alias="icons/pointer-secondary-click-symbolic.svg">pointer-secondary-click-symbolic.svg</file>
 | 
			
		||||
    <file>page-indicator-active.svg</file>
 | 
			
		||||
    <file>page-indicator-inactive.svg</file>
 | 
			
		||||
    <file>page-indicator-checked.svg</file>
 | 
			
		||||
    <file>page-indicator-hover.svg</file>
 | 
			
		||||
    <file>process-working.svg</file>
 | 
			
		||||
    <file>toggle-off.svg</file>
 | 
			
		||||
    <file>toggle-off-dark.svg</file>
 | 
			
		||||
    <file>toggle-off-us.svg</file>
 | 
			
		||||
    <file>toggle-off-intl.svg</file>
 | 
			
		||||
    <file>toggle-off-hc.svg</file>
 | 
			
		||||
    <file>toggle-on.svg</file>
 | 
			
		||||
    <file>toggle-on-dark.svg</file>
 | 
			
		||||
    <file>toggle-on-us.svg</file>
 | 
			
		||||
    <file>toggle-on-intl.svg</file>
 | 
			
		||||
    <file>toggle-on-hc.svg</file>
 | 
			
		||||
  </gresource>
 | 
			
		||||
</gresources>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,27 +0,0 @@
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=GNOME Shell on Wayland
 | 
			
		||||
# On wayland, force a session shutdown
 | 
			
		||||
OnFailure=gnome-shell-disable-extensions.service gnome-session-shutdown.target
 | 
			
		||||
OnFailureJobMode=replace-irreversibly
 | 
			
		||||
CollectMode=inactive-or-failed
 | 
			
		||||
RefuseManualStart=on
 | 
			
		||||
RefuseManualStop=on
 | 
			
		||||
 | 
			
		||||
After=gnome-session-manager.target
 | 
			
		||||
 | 
			
		||||
Requisite=gnome-session-initialized.target
 | 
			
		||||
PartOf=gnome-session-initialized.target
 | 
			
		||||
Before=gnome-session-initialized.target
 | 
			
		||||
 | 
			
		||||
# The units already conflict because they use the same BusName
 | 
			
		||||
#Conflicts=gnome-shell-x11.service
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=notify
 | 
			
		||||
ExecStart=@bindir@/gnome-shell
 | 
			
		||||
# Exit code 1 means we are probably *not* dealing with an extension failure
 | 
			
		||||
SuccessExitStatus=1
 | 
			
		||||
# On wayland we cannot restart
 | 
			
		||||
Restart=no
 | 
			
		||||
# Kill any stubborn child processes after this long
 | 
			
		||||
TimeoutStopSec=5
 | 
			
		||||
@@ -1,10 +1,5 @@
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=GNOME Shell on Wayland
 | 
			
		||||
DefaultDependencies=no
 | 
			
		||||
 | 
			
		||||
Requisite=gnome-session-initialized.target
 | 
			
		||||
PartOf=gnome-session-initialized.target
 | 
			
		||||
Before=gnome-session-initialized.target
 | 
			
		||||
 | 
			
		||||
Requires=gnome-shell-wayland.service
 | 
			
		||||
After=gnome-shell-wayland.service
 | 
			
		||||
Description=GNOME Shell (wayland sync point)
 | 
			
		||||
After=gnome-shell.service
 | 
			
		||||
BindsTo=gnome-shell.service
 | 
			
		||||
Conflicts=gnome-shell-x11.target
 | 
			
		||||
 
 | 
			
		||||
@@ -1,33 +0,0 @@
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=GNOME Shell on X11
 | 
			
		||||
# On X11, try to show the GNOME Session Failed screen
 | 
			
		||||
OnFailure=gnome-shell-disable-extensions.service gnome-session-failed.target
 | 
			
		||||
OnFailureJobMode=replace
 | 
			
		||||
CollectMode=inactive-or-failed
 | 
			
		||||
RefuseManualStart=on
 | 
			
		||||
RefuseManualStop=on
 | 
			
		||||
 | 
			
		||||
After=gnome-session-manager.target
 | 
			
		||||
 | 
			
		||||
Requisite=gnome-session-initialized.target
 | 
			
		||||
PartOf=gnome-session-initialized.target
 | 
			
		||||
Before=gnome-session-initialized.target
 | 
			
		||||
 | 
			
		||||
# The units already conflict because they use the same BusName
 | 
			
		||||
#Conflicts=gnome-shell-wayland.service
 | 
			
		||||
 | 
			
		||||
# Limit startup frequency more than the default
 | 
			
		||||
StartLimitIntervalSec=15s
 | 
			
		||||
StartLimitBurst=3
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=notify
 | 
			
		||||
ExecStart=@bindir@/gnome-shell
 | 
			
		||||
# Exit code 1 means we are probably *not* dealing with an extension failure
 | 
			
		||||
SuccessExitStatus=1
 | 
			
		||||
# On X11 we want to restart on-success (Alt+F2 + r) and on-failure.
 | 
			
		||||
Restart=always
 | 
			
		||||
# Do not wait before restarting the shell
 | 
			
		||||
RestartSec=0ms
 | 
			
		||||
# Kill any stubborn child processes after this long
 | 
			
		||||
TimeoutStopSec=5
 | 
			
		||||
@@ -1,10 +1,5 @@
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=GNOME Shell on X11
 | 
			
		||||
DefaultDependencies=no
 | 
			
		||||
 | 
			
		||||
Requisite=gnome-session-initialized.target
 | 
			
		||||
PartOf=gnome-session-initialized.target
 | 
			
		||||
Before=gnome-session-initialized.target
 | 
			
		||||
 | 
			
		||||
Requires=gnome-shell-x11.service
 | 
			
		||||
After=gnome-shell-x11.service
 | 
			
		||||
Description=GNOME Shell (x11 sync point)
 | 
			
		||||
After=gnome-shell.service
 | 
			
		||||
BindsTo=gnome-shell.service
 | 
			
		||||
Conflicts=gnome-shell-wayland.target
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								data/gnome-shell.portal
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								data/gnome-shell.portal
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
[portal]
 | 
			
		||||
DBusName=org.freedesktop.impl.portal.desktop.gnome
 | 
			
		||||
Interfaces=org.freedesktop.impl.portal.Access
 | 
			
		||||
UseIn=gnome
 | 
			
		||||
							
								
								
									
										11
									
								
								data/gnome-shell.service.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								data/gnome-shell.service.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=GNOME Shell
 | 
			
		||||
Wants=gnome-session.service
 | 
			
		||||
After=graphical-session-pre.target gnome-session-bus.target
 | 
			
		||||
PartOf=graphical-session.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=dbus
 | 
			
		||||
ExecStart=@bindir@/gnome-shell
 | 
			
		||||
Restart=on-failure
 | 
			
		||||
BusName=org.gnome.Shell
 | 
			
		||||
@@ -13,8 +13,7 @@ desktopconf = configuration_data()
 | 
			
		||||
# We substitute in bindir so it works as an autostart
 | 
			
		||||
# file when built in a non-system prefix
 | 
			
		||||
desktopconf.set('bindir', bindir)
 | 
			
		||||
desktopconf.set('systemd_hidden', have_systemd ? 'true' : 'false')
 | 
			
		||||
 | 
			
		||||
desktopconf.set('VERSION', meson.project_version())
 | 
			
		||||
foreach desktop_file : desktop_files
 | 
			
		||||
  i18n.merge_file('desktop',
 | 
			
		||||
    input: configure_file(
 | 
			
		||||
@@ -23,7 +22,7 @@ foreach desktop_file : desktop_files
 | 
			
		||||
      configuration: desktopconf
 | 
			
		||||
    ),
 | 
			
		||||
    output: desktop_file,
 | 
			
		||||
    po_dir: po_dir,
 | 
			
		||||
    po_dir: '../po',
 | 
			
		||||
    install: true,
 | 
			
		||||
    install_dir: desktopdir,
 | 
			
		||||
    type: 'desktop'
 | 
			
		||||
@@ -42,25 +41,34 @@ foreach service_file : service_files
 | 
			
		||||
endforeach
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
subdir('dbus-interfaces')
 | 
			
		||||
dbus_interfaces = [
 | 
			
		||||
  'org.gnome.Shell.PadOsd.xml',
 | 
			
		||||
  'org.gnome.Shell.Screencast.xml',
 | 
			
		||||
  'org.gnome.Shell.Screenshot.xml',
 | 
			
		||||
  'org.gnome.ShellSearchProvider.xml',
 | 
			
		||||
  'org.gnome.ShellSearchProvider2.xml'
 | 
			
		||||
]
 | 
			
		||||
install_data(dbus_interfaces, install_dir: ifacedir)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
subdir('theme')
 | 
			
		||||
 | 
			
		||||
data_resources = [
 | 
			
		||||
  ['dbus-interfaces', []],
 | 
			
		||||
  ['osk-layouts', []],
 | 
			
		||||
  ['theme', theme_deps]
 | 
			
		||||
]
 | 
			
		||||
foreach resource : data_resources
 | 
			
		||||
  gnome.compile_resources(
 | 
			
		||||
    'gnome-shell-' + resource[0],
 | 
			
		||||
    'gnome-shell-@0@.gresource.xml'.format(resource[0]),
 | 
			
		||||
    source_dir: resource[0],
 | 
			
		||||
    dependencies: resource[1],
 | 
			
		||||
    gresource_bundle: true,
 | 
			
		||||
    install: true,
 | 
			
		||||
    install_dir: pkgdatadir
 | 
			
		||||
  )
 | 
			
		||||
endforeach
 | 
			
		||||
theme_resources = gnome.compile_resources(
 | 
			
		||||
  'gnome-shell-theme', 'gnome-shell-theme.gresource.xml',
 | 
			
		||||
  source_dir: 'theme',
 | 
			
		||||
  dependencies: theme_deps,
 | 
			
		||||
  gresource_bundle: true,
 | 
			
		||||
  install: true,
 | 
			
		||||
  install_dir: pkgdatadir
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
osk_layout_resources = gnome.compile_resources(
 | 
			
		||||
  'gnome-shell-osk-layouts', 'gnome-shell-osk-layouts.gresource.xml',
 | 
			
		||||
  source_dir: 'osk-layouts',
 | 
			
		||||
  gresource_bundle: true,
 | 
			
		||||
  install: true,
 | 
			
		||||
  install_dir: pkgdatadir
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
perfconf = configuration_data()
 | 
			
		||||
perfconf.set('datadir', datadir)
 | 
			
		||||
@@ -72,6 +80,7 @@ configure_file(
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
install_data('gnome-shell.portal', install_dir: portaldir)
 | 
			
		||||
install_data('50-gnome-shell-system.xml', install_dir: keysdir)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -98,23 +107,15 @@ if have_systemd
 | 
			
		||||
  unitconf = configuration_data()
 | 
			
		||||
  unitconf.set('bindir', bindir)
 | 
			
		||||
 | 
			
		||||
  configure_file(
 | 
			
		||||
    input: 'gnome-shell-x11.service.in',
 | 
			
		||||
    output: 'gnome-shell-x11.service',
 | 
			
		||||
  unit = configure_file(
 | 
			
		||||
    input: 'gnome-shell.service.in',
 | 
			
		||||
    output: 'gnome-shell.service',
 | 
			
		||||
    configuration: unitconf,
 | 
			
		||||
    install_dir: systemduserunitdir
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
  configure_file(
 | 
			
		||||
    input: 'gnome-shell-wayland.service.in',
 | 
			
		||||
    output: 'gnome-shell-wayland.service',
 | 
			
		||||
    configuration: unitconf,
 | 
			
		||||
    install_dir: systemduserunitdir
 | 
			
		||||
  )
 | 
			
		||||
 | 
			
		||||
  units = files('gnome-shell-x11.target',
 | 
			
		||||
                'gnome-shell-wayland.target',
 | 
			
		||||
                'gnome-shell-disable-extensions.service')
 | 
			
		||||
  units = files('gnome-shell-wayland.target',
 | 
			
		||||
                'gnome-shell-x11.target')
 | 
			
		||||
 | 
			
		||||
  install_data(units, install_dir: systemduserunitdir)
 | 
			
		||||
endif
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,10 @@ Type=Application
 | 
			
		||||
Name=GNOME Shell
 | 
			
		||||
Comment=Window management and application launching
 | 
			
		||||
Exec=@bindir@/gnome-shell
 | 
			
		||||
X-GNOME-Bugzilla-Bugzilla=GNOME
 | 
			
		||||
X-GNOME-Bugzilla-Product=gnome-shell
 | 
			
		||||
X-GNOME-Bugzilla-Component=general
 | 
			
		||||
X-GNOME-Bugzilla-Version=@VERSION@
 | 
			
		||||
Categories=GNOME;GTK;Core;
 | 
			
		||||
OnlyShowIn=GNOME;
 | 
			
		||||
NoDisplay=true
 | 
			
		||||
@@ -10,4 +14,3 @@ X-GNOME-Autostart-Phase=DisplayServer
 | 
			
		||||
X-GNOME-Provides=panel;windowmanager;
 | 
			
		||||
X-GNOME-Autostart-Notify=true
 | 
			
		||||
X-GNOME-AutoRestart=false
 | 
			
		||||
X-GNOME-HiddenUnderSystemd=@systemd_hidden@
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user