summaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
authordzhioev <dzhioev@chromium.org>2015-06-19 14:56:14 -0700
committerCommit bot <commit-bot@chromium.org>2015-06-19 21:56:38 +0000
commit99949d7685baa13912a4cd759e45d712d8707329 (patch)
treeb862b5874406e803bc5b085da9b62d9bf9fb87be /components
parentb4843db356e63db3027559cc85072e8f8d2a6d45 (diff)
downloadchromium_src-99949d7685baa13912a4cd759e45d712d8707329.zip
chromium_src-99949d7685baa13912a4cd759e45d712d8707329.tar.gz
chromium_src-99949d7685baa13912a4cd759e45d712d8707329.tar.bz2
Removed webui_generator and new OOBE UI placeholder.
As long as new OOBE is not going to be implemented anymore, webui_generator and new OOBE placeholder can be removed. BUG=none Review URL: https://codereview.chromium.org/1181703008 Cr-Commit-Position: refs/heads/master@{#335356}
Diffstat (limited to 'components')
-rw-r--r--components/BUILD.gn6
-rw-r--r--components/components.gyp1
-rw-r--r--components/components_strings.grd1
-rw-r--r--components/resources/components_resources.grd1
-rw-r--r--components/resources/webui_generator_resources.grdp7
-rw-r--r--components/webui_generator.gypi37
-rw-r--r--components/webui_generator/BUILD.gn36
-rw-r--r--components/webui_generator/DEPS6
-rw-r--r--components/webui_generator/OWNERS1
-rw-r--r--components/webui_generator/data_source_util.cc22
-rw-r--r--components/webui_generator/data_source_util.h21
-rw-r--r--components/webui_generator/export.h34
-rw-r--r--components/webui_generator/generator/build_helper.py69
-rw-r--r--components/webui_generator/generator/declaration.py312
-rw-r--r--components/webui_generator/generator/export_h.py66
-rw-r--r--components/webui_generator/generator/gen_sources.py27
-rw-r--r--components/webui_generator/generator/html_view.py111
-rw-r--r--components/webui_generator/generator/util.py30
-rw-r--r--components/webui_generator/generator/view_model.py329
-rw-r--r--components/webui_generator/generator/web_ui_view.py205
-rw-r--r--components/webui_generator/generator/wug.gni131
-rw-r--r--components/webui_generator/generator/wug.gypi117
-rw-r--r--components/webui_generator/resources/context.html5
-rw-r--r--components/webui_generator/resources/context.js21
-rw-r--r--components/webui_generator/resources/webui-view.html10
-rw-r--r--components/webui_generator/resources/webui-view.js189
-rw-r--r--components/webui_generator/view.cc102
-rw-r--r--components/webui_generator/view.h118
-rw-r--r--components/webui_generator/view_model.cc106
-rw-r--r--components/webui_generator/view_model.h108
-rw-r--r--components/webui_generator/web_ui_view.cc111
-rw-r--r--components/webui_generator/web_ui_view.h108
-rw-r--r--components/webui_generator_strings.grdp9
33 files changed, 1 insertions, 2456 deletions
diff --git a/components/BUILD.gn b/components/BUILD.gn
index aa91a6d..39a6784 100644
--- a/components/BUILD.gn
+++ b/components/BUILD.gn
@@ -122,7 +122,6 @@ group("all_components") {
"//components/web_resource",
"//components/webcrypto",
"//components/webdata/common",
- "//components/webui_generator",
"//components/wifi",
"//components/wifi_sync",
]
@@ -156,7 +155,6 @@ group("all_components") {
deps -= [
"//components/history/content/browser",
"//components/keyed_service/content",
- "//components/webui_generator",
]
}
@@ -397,9 +395,7 @@ test("components_browsertests") {
data_deps = [ ":components_tests_pak" ]
if (is_android) {
- sources += [
- "test/android/browsertests_apk/components_browser_tests_jni_onload.cc",
- ]
+ sources += [ "test/android/browsertests_apk/components_browser_tests_jni_onload.cc" ]
sources -= [ "autofill/content/browser/risk/fingerprint_browsertest.cc" ]
deps += [ "//testing/android/native_test:native_test_support" ]
use_launcher = false
diff --git a/components/components.gyp b/components/components.gyp
index fa2a106..113b1ec 100644
--- a/components/components.gyp
+++ b/components/components.gyp
@@ -101,7 +101,6 @@
'web_cache.gypi',
'web_contents_delegate_android.gypi',
'web_modal.gypi',
- 'webui_generator.gypi',
],
}],
['OS == "ios"', {
diff --git a/components/components_strings.grd b/components/components_strings.grd
index 697cfe9..2df5848 100644
--- a/components/components_strings.grd
+++ b/components/components_strings.grd
@@ -180,7 +180,6 @@
<part file="policy_strings.grdp" />
<part file="translate_strings.grdp" />
<part file="undo_strings.grdp" />
- <part file="webui_generator_strings.grdp" />
<!-- Generic terms -->
<message name="IDS_LEARN_MORE" desc="Learn more text">
diff --git a/components/resources/components_resources.grd b/components/resources/components_resources.grd
index b2ecc7b..289e266 100644
--- a/components/resources/components_resources.grd
+++ b/components/resources/components_resources.grd
@@ -13,7 +13,6 @@
<part file="printing_resources.grdp" />
<part file="proximity_auth_resources.grdp" />
<part file="translate_resources.grdp" />
- <part file="webui_generator_resources.grdp" />
</includes>
</release>
</grit>
diff --git a/components/resources/webui_generator_resources.grdp b/components/resources/webui_generator_resources.grdp
deleted file mode 100644
index 996a83f..0000000
--- a/components/resources/webui_generator_resources.grdp
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<grit-part>
- <include name="IDR_WUG_CONTEXT_HTML" file="../webui_generator/resources/context.html" type="chrome_html" />
- <include name="IDR_WUG_CONTEXT_JS" file="../webui_generator/resources/context.js" type="chrome_html" flattenhtml="true" />
- <include name="IDR_WUG_WEBUI_VIEW_HTML" file="../webui_generator/resources/webui-view.html" type="chrome_html" />
- <include name="IDR_WUG_WEBUI_VIEW_JS" file="../webui_generator/resources/webui-view.js" type="chrome_html" />
-</grit-part>
diff --git a/components/webui_generator.gypi b/components/webui_generator.gypi
deleted file mode 100644
index 32556c4..0000000
--- a/components/webui_generator.gypi
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2015 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-{
- 'targets': [{
- # GN version: //components/webui_generator
- 'target_name': 'webui_generator',
- 'type': '<(component)',
- 'dependencies': [
- 'login',
- '<(DEPTH)/base/base.gyp:base',
- '<(DEPTH)/components/components_resources.gyp:components_resources',
- '<(DEPTH)/content/content.gyp:content_browser',
- '<(DEPTH)/ui/base/ui_base.gyp:ui_base',
- ],
- 'export_dependent_settings': [
- 'login',
- '<(DEPTH)/base/base.gyp:base',
- '<(DEPTH)/content/content.gyp:content_browser',
- ],
- 'defines': [
- 'WUG_IMPLEMENTATION',
- ],
- 'sources': [
- 'webui_generator/data_source_util.cc',
- 'webui_generator/data_source_util.h',
- 'webui_generator/export.h',
- 'webui_generator/view.cc',
- 'webui_generator/view.h',
- 'webui_generator/view_model.cc',
- 'webui_generator/view_model.h',
- 'webui_generator/web_ui_view.cc',
- 'webui_generator/web_ui_view.h',
- ],
- }],
-}
diff --git a/components/webui_generator/BUILD.gn b/components/webui_generator/BUILD.gn
deleted file mode 100644
index 13e167f..0000000
--- a/components/webui_generator/BUILD.gn
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 2015 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# GYP version: components/webui_generator.gypi:webui_generator
-component("webui_generator") {
- sources = [
- "data_source_util.cc",
- "data_source_util.h",
- "export.h",
- "view.cc",
- "view.h",
- "view_model.cc",
- "view_model.h",
- "web_ui_view.cc",
- "web_ui_view.h",
- ]
-
- defines = [ "WUG_IMPLEMENTATION" ]
-
- deps = [
- "//components/resources",
- "//ui/base",
- ]
-
- public_deps = [
- "//base",
- "//components/login",
- "//content/public/browser",
- ]
-}
-
-# Config for users of generated files.
-config("wug_generated_config") {
- include_dirs = [ "$root_gen_dir/wug" ]
-}
diff --git a/components/webui_generator/DEPS b/components/webui_generator/DEPS
deleted file mode 100644
index 3985eef..0000000
--- a/components/webui_generator/DEPS
+++ /dev/null
@@ -1,6 +0,0 @@
-include_rules = [
- "+base",
- "+content/public/browser",
- "+grit/components_resources.h",
- "+components/login",
-]
diff --git a/components/webui_generator/OWNERS b/components/webui_generator/OWNERS
deleted file mode 100644
index df660f7..0000000
--- a/components/webui_generator/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-dzhioev@chromium.org
diff --git a/components/webui_generator/data_source_util.cc b/components/webui_generator/data_source_util.cc
deleted file mode 100644
index a3103cd..0000000
--- a/components/webui_generator/data_source_util.cc
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/webui_generator/data_source_util.h"
-#include "content/public/browser/web_ui_data_source.h"
-#include "grit/components_resources.h"
-
-namespace webui_generator {
-
-void SetUpDataSource(content::WebUIDataSource* data_source) {
- data_source->AddResourcePath("webui_generator/webui-view.html",
- IDR_WUG_WEBUI_VIEW_HTML);
- data_source->AddResourcePath("webui_generator/webui-view.js",
- IDR_WUG_WEBUI_VIEW_JS);
- data_source->AddResourcePath("webui_generator/context.js",
- IDR_WUG_CONTEXT_JS);
- data_source->AddResourcePath("webui_generator/context.html",
- IDR_WUG_CONTEXT_HTML);
-}
-
-} // namespace webui_generator
diff --git a/components/webui_generator/data_source_util.h b/components/webui_generator/data_source_util.h
deleted file mode 100644
index 95abe42..0000000
--- a/components/webui_generator/data_source_util.h
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_UI_WEBUI_WUG_DATA_SOURCE_UTIL_H_
-#define CHROME_BROWSER_UI_WEBUI_WUG_DATA_SOURCE_UTIL_H_
-
-#include "components/webui_generator/export.h"
-
-namespace content {
-class WebUIDataSource;
-}
-
-namespace webui_generator {
-
-// Adds common resources needed for WUG to |data_source|.
-void WUG_EXPORT SetUpDataSource(content::WebUIDataSource* data_source);
-
-} // namespace webui_generator
-
-#endif // CHROME_BROWSER_UI_WEBUI_WUG_DATA_SOURCE_UTIL_H_
diff --git a/components/webui_generator/export.h b/components/webui_generator/export.h
deleted file mode 100644
index 226cfd2..0000000
--- a/components/webui_generator/export.h
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef COMPONENTS_WUG_EXPORT_H_
-#define COMPONENTS_WUG_EXPORT_H_
-
-#if defined(COMPONENT_BUILD)
-
-#if defined(WIN32)
-
-#if defined(WUG_IMPLEMENTATION)
-#define WUG_EXPORT __declspec(dllexport)
-#else
-#define WUG_EXPORT __declspec(dllimport)
-#endif // defined(WUG_IMPLEMENTATION)
-
-#else // defined(WIN32)
-
-#if defined(WUG_IMPLEMENTATION)
-#define WUG_EXPORT __attribute__((visibility("default")))
-#else
-#define WUG_EXPORT
-#endif // defined(WUG_IMPLEMENTATION)
-
-#endif // defined(WIN32)
-
-#else // defined(COMPONENT_BUILD)
-
-#define WUG_EXPORT
-
-#endif
-
-#endif // COMPONENTS_WUG_EXPORT_H_
diff --git a/components/webui_generator/generator/build_helper.py b/components/webui_generator/generator/build_helper.py
deleted file mode 100644
index 06232e6..0000000
--- a/components/webui_generator/generator/build_helper.py
+++ /dev/null
@@ -1,69 +0,0 @@
-# Copyright 2015 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# Provides various information needed for GYP and GN to generate and build
-# files.
-
-import os
-import sys
-
-from declaration import Declaration
-import export_h
-import util
-import view_model
-import web_ui_view
-
-def GetImportDependencies(declaration):
- return set(child.build_target for child in declaration.children.itervalues())
-
-parser = util.CreateArgumentParser()
-parser.add_argument('--output',
- choices=['view_cc', 'view_h', 'model_cc', 'model_h',
- 'export_h', 'dirname', 'target_name', 'imports',
- 'impl_macro', 'import_dependencies',
- 'list_outputs'],
- required=True,
- help='Type of output')
-parser.add_argument('--gn', action='store_true',
- help='Is called by GN')
-args = parser.parse_args()
-declaration_path = os.path.relpath(args.declaration, args.root)
-os.chdir(args.root)
-try:
- declaration = Declaration(declaration_path)
-except Exception as e:
- print >> sys.stderr, e.message
- sys.exit(1)
-
-if args.output == 'view_cc':
- print declaration.webui_view_cc_name
-elif args.output == 'view_h':
- print declaration.webui_view_h_name
-elif args.output == 'model_cc':
- print declaration.view_model_cc_name
-elif args.output == 'model_h':
- print declaration.view_model_h_name
-elif args.output == 'export_h':
- print declaration.export_h_name
-elif args.output == 'dirname':
- print os.path.dirname(declaration_path)
-elif args.output == 'target_name':
- print declaration.build_target
-elif args.output == 'imports':
- for i in declaration.imports:
- print '//' + i
-elif args.output == 'import_dependencies':
- for d in GetImportDependencies(declaration):
- print (':' if args.gn else '') + d
-elif args.output == 'list_outputs':
- outputs = web_ui_view.ListOutputs(declaration, args.destination) + \
- view_model.ListOutputs(declaration, args.destination) + \
- export_h.ListOutputs(declaration, args.destination)
- for output in outputs:
- print output
-elif args.output == 'impl_macro':
- print declaration.component_impl_macro
-else:
- assert False
-
diff --git a/components/webui_generator/generator/declaration.py b/components/webui_generator/generator/declaration.py
deleted file mode 100644
index e9863b5..0000000
--- a/components/webui_generator/generator/declaration.py
+++ /dev/null
@@ -1,312 +0,0 @@
-# Copyright 2015 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import itertools
-import json
-import os.path
-import re
-
-import util
-
-# Schema is described as follows:
-# * for simple type:
-# %simple_type%
-# * for list:
-# (list, %items_schema%)
-# * for dict:
-# (dict, { '%key_name%': (%is_key_required%, %value_schema%),
-# ...
-# })
-DECLARATION_SCHEMA = (dict, {
- 'imports': (False, (list, unicode)),
- 'type': (True, unicode),
- 'children': (False, (list, (dict, {
- 'id': (True, unicode),
- 'type': (True, unicode),
- 'comment': (False, unicode)
- }))),
- 'context': (False, (list, (dict, {
- 'name': (True, unicode),
- 'type': (False, unicode),
- 'default': (False, object),
- 'comment': (False, unicode)
- }))),
- 'events': (False, (list, (dict, {
- 'name': (True, unicode),
- 'comment': (False, unicode)
- }))),
- 'strings': (False, (list, (dict, {
- 'name': (True, unicode),
- 'comment': (False, unicode)
- }))),
- 'comment': (False, unicode)
-})
-
-# Returns (True,) if |obj| matches |schema|.
-# Otherwise returns (False, msg), where |msg| is a diagnostic message.
-def MatchSchema(obj, schema):
- expected_type = schema[0] if isinstance(schema, tuple) else schema
- if not isinstance(obj, expected_type):
- return (False, 'Wrong type, expected %s, got %s.' %
- (expected_type, type(obj)))
- if expected_type == dict:
- obj_keys = set(obj.iterkeys())
- allowed_keys = set(schema[1].iterkeys())
- required_keys = set(kv[0] for kv in schema[1].iteritems() if kv[1][0])
- if not obj_keys.issuperset(required_keys):
- missing_keys = required_keys.difference(obj_keys)
- return (False, 'Missing required key%s %s.' %
- ('s' if len(missing_keys) > 1 else '',
- ', '.join('\'%s\'' % k for k in missing_keys)))
- if not obj_keys.issubset(allowed_keys):
- unknown_keys = obj_keys.difference(allowed_keys)
- return (False, 'Unknown key%s %s.' %
- ('s' if len(unknown_keys) > 1 else '',
- ', '.join('\'%s\'' % k for k in unknown_keys)))
- for key in obj:
- match = MatchSchema(obj[key], schema[1][key][1])
- if not match[0]:
- return (False, ('[\'%s\'] ' % key) + match[1])
- elif expected_type == list:
- for i, item in enumerate(obj):
- match = MatchSchema(item, schema[1])
- if not match[0]:
- return (False, ('[%d] ' % i) + match[1])
- return (True,)
-
-def CheckDeclarationIsValid(declaration):
- match = MatchSchema(declaration, DECLARATION_SCHEMA)
- if not match[0]:
- raise Exception('Declaration is not valid: ' + match[1])
-
-def CheckFieldIsUnique(list_of_dicts, field):
- seen = {}
- for i, d in enumerate(list_of_dicts):
- value = d[field]
- if value in seen:
- raise Exception(
- '[%d] Object with "%s" equal to "%s" already exists. See [%d].' %
- (i, field, value, seen[value]))
- else:
- seen[value] = i
-
-class FieldDeclaration(object):
- ALLOWED_TYPES = [
- 'boolean',
- 'integer',
- 'double',
- 'string',
- 'string_list'
- ]
-
- DEFAULTS = {
- 'boolean': False,
- 'integer': 0,
- 'double': 0.0,
- 'string': u'',
- 'string_list': []
- }
-
- def __init__(self, declaration):
- self.name = declaration['name']
- self.id = util.ToLowerCamelCase(self.name)
- self.type = declaration['type'] if 'type' in declaration else 'string'
- if self.type not in self.ALLOWED_TYPES:
- raise Exception('Unknown type of context field "%s": "%s"' %
- (self.name, self.type))
- self.default_value = declaration['default'] if 'default' in declaration \
- else self.DEFAULTS[self.type]
- if type(self.default_value) != type(self.DEFAULTS[self.type]):
- raise Exception('Wrong type of default for field "%s": '
- 'expected "%s", got "%s"' %
- (self.name,
- type(self.DEFAULTS[self.type]),
- type(self.default_value)))
-
-class Declaration(object):
- class InvalidDeclaration(Exception):
- def __init__(self, path, message):
- super(Exception, self).__init__(
- 'Invalid declaration file "%s": %s' % (path, message))
-
- class DeclarationsStorage(object):
- def __init__(self):
- self.by_path = {}
- self.by_type = {}
-
- def Add(self, declaration):
- assert declaration.path not in self.by_path
- self.by_path[declaration.path] = declaration
- if declaration.type in self.by_type:
- raise Exception(
- 'Redefinition of type "%s". ' \
- 'Previous definition was in "%s".' % \
- (declaration.type, self.by_type[declaration.type].path))
- self.by_type[declaration.type] = declaration
-
- def HasPath(self, path):
- return path in self.by_path
-
- def HasType(self, type):
- return type in self.by_type
-
- def GetByPath(self, path):
- return self.by_path[path]
-
- def GetByType(self, type):
- return self.by_type[type]
-
- def GetKnownPathes(self):
- return self.by_path.keys()
-
-
- def __init__(self, path, known_declarations=None):
- if known_declarations is None:
- known_declarations = Declaration.DeclarationsStorage()
- self.path = path
- try:
- self.data = json.load(open(path, 'r'))
- CheckDeclarationIsValid(self.data)
- filename_wo_ext = os.path.splitext(os.path.basename(self.path))[0]
- if self.data['type'] != filename_wo_ext:
- raise Exception(
- 'File with declaration of type "%s" should be named "%s.json"' %
- (self.data['type'], filename_wo_ext))
-
- known_declarations.Add(self)
- if 'imports' in self.data:
- for import_path in self.data['imports']:
- #TODO(dzhioev): detect circular dependencies.
- if not known_declarations.HasPath(import_path):
- Declaration(import_path, known_declarations)
-
- for key in ['children', 'strings', 'context', 'events']:
- if key in self.data:
- unique_field = 'id' if key == 'children' else 'name'
- try:
- CheckFieldIsUnique(self.data[key], unique_field)
- except Exception as e:
- raise Exception('["%s"] %s' % (key, e.message))
- else:
- self.data[key] = []
-
- self.children = {}
- for child_data in self.data['children']:
- child_type = child_data['type']
- child_id = child_data['id']
- if not known_declarations.HasType(child_type):
- raise Exception('Unknown type "%s" for child "%s"' %
- (child_type, child_id))
- self.children[child_id] = known_declarations.GetByType(child_type)
-
- self.fields = [FieldDeclaration(d) for d in self.data['context']]
- fields_names = [field.name for field in self.fields]
- if len(fields_names) > len(set(fields_names)):
- raise Exception('Duplicate fields in declaration.')
- self.known_declarations = known_declarations
- except Declaration.InvalidDeclaration:
- raise
- except Exception as e:
- raise Declaration.InvalidDeclaration(self.path, e.message)
-
- @property
- def type(self):
- return self.data['type']
-
- @property
- def strings(self):
- return (string['name'] for string in self.data['strings'])
-
- @property
- def events(self):
- return (event['name'] for event in self.data['events'])
-
- @property
- def webui_view_basename(self):
- return self.type + '_web_ui_view'
-
- @property
- def webui_view_h_name(self):
- return self.webui_view_basename + '.h'
-
- @property
- def webui_view_cc_name(self):
- return self.webui_view_basename + '.cc'
-
- @property
- def webui_view_include_path(self):
- return os.path.join(os.path.dirname(self.path), self.webui_view_h_name)
-
- @property
- def export_h_name(self):
- return self.type + '_export.h'
-
- @property
- def component_export_macro(self):
- return "WUG_" + self.type.upper() + "_EXPORT"
-
- @property
- def component_impl_macro(self):
- return "WUG_" + self.type.upper() + "_IMPLEMENTATION"
-
- @property
- def export_h_include_path(self):
- return os.path.join(os.path.dirname(self.path), self.export_h_name)
-
- @property
- def view_model_basename(self):
- return self.type + '_view_model'
-
- @property
- def view_model_h_name(self):
- return self.view_model_basename + '.h'
-
- @property
- def view_model_cc_name(self):
- return self.view_model_basename + '.cc'
-
- @property
- def view_model_include_path(self):
- return os.path.join(os.path.dirname(self.path), self.view_model_h_name)
-
- @property
- def html_view_basename(self):
- return '%s-view' % self.type.replace('_', '-')
-
- @property
- def html_view_html_name(self):
- return self.html_view_basename + '.html'
-
- @property
- def html_view_js_name(self):
- return self.html_view_basename + '.js'
-
- @property
- def html_view_html_include_path(self):
- return os.path.join(os.path.dirname(self.path), self.html_view_html_name)
-
- @property
- def html_view_js_include_path(self):
- return os.path.join(os.path.dirname(self.path), self.html_view_js_name)
-
- @property
- def build_target(self):
- return self.type + "_wug_generated"
-
- @property
- def webui_view_class(self):
- return util.ToUpperCamelCase(self.type) + 'WebUIView'
-
- @property
- def view_model_class(self):
- return util.ToUpperCamelCase(self.type) + 'ViewModel'
-
- @property
- def imports(self):
- res = set(self.known_declarations.GetKnownPathes())
- res.remove(self.path)
- return res
-
-
-
diff --git a/components/webui_generator/generator/export_h.py b/components/webui_generator/generator/export_h.py
deleted file mode 100644
index 3c4eceb..0000000
--- a/components/webui_generator/generator/export_h.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright 2015 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import datetime
-import util
-import os
-
-H_FILE_TEMPLATE = \
-"""// Copyright %(year)d The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// NOTE: this file is generated from "%(source)s". Do not modify directly.
-
-#ifndef %(include_guard)s
-#define %(include_guard)s
-
-#if defined(COMPONENT_BUILD)
-
-#if defined(WIN32)
-
-#if defined(%(impl_macro)s)
-#define %(export_macro)s __declspec(dllexport)
-#else
-#define %(export_macro)s __declspec(dllimport)
-#endif // defined(%(impl_macro)s)
-
-#else // defined(WIN32)
-
-#if defined(%(impl_macro)s)
-#define %(export_macro)s __attribute__((visibility("default")))
-#else
-#define %(export_macro)s
-#endif // defined(%(impl_macro)s)
-
-#endif // defined(WIN32)
-
-#else // defined(COMPONENT_BUILD)
-
-#define %(export_macro)s
-
-#endif
-
-#endif // %(include_guard)s
-"""
-
-def GenHFile(declaration):
- subs = {}
- subs['year'] = datetime.date.today().year
- subs['source'] = declaration.path
- subs['include_guard'] = util.PathToIncludeGuard(
- declaration.export_h_include_path)
- subs['export_macro'] = declaration.component_export_macro
- subs['impl_macro'] = declaration.component_impl_macro
- return H_FILE_TEMPLATE % subs
-
-def ListOutputs(declaration, destination):
- dirname = os.path.join(destination, os.path.dirname(declaration.path))
- h_file_path = os.path.join(dirname, declaration.export_h_name)
- return [h_file_path]
-
-def Gen(declaration, destination):
- h_file_path = ListOutputs(declaration, destination)[0]
- util.CreateDirIfNotExists(os.path.dirname(h_file_path))
- open(h_file_path, 'w').write(GenHFile(declaration))
diff --git a/components/webui_generator/generator/gen_sources.py b/components/webui_generator/generator/gen_sources.py
deleted file mode 100644
index 6b9a87a..0000000
--- a/components/webui_generator/generator/gen_sources.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2015 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import os
-import os.path
-import sys
-
-from declaration import Declaration
-import export_h
-import util
-import view_model
-import web_ui_view
-
-args = util.CreateArgumentParser().parse_args()
-declaration_path = os.path.relpath(args.declaration, args.root)
-destination = os.path.relpath(args.destination, args.root)
-os.chdir(args.root)
-try:
- declaration = Declaration(declaration_path)
-except Exception as e:
- print >> sys.stderr, e.message
- sys.exit(1)
-view_model.Gen(declaration, destination)
-web_ui_view.Gen(declaration, destination)
-export_h.Gen(declaration, destination)
-
diff --git a/components/webui_generator/generator/html_view.py b/components/webui_generator/generator/html_view.py
deleted file mode 100644
index 73fc8a9..0000000
--- a/components/webui_generator/generator/html_view.py
+++ /dev/null
@@ -1,111 +0,0 @@
-# Copyright 2015 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import util
-import os
-import datetime
-
-HTML_FILE_TEMPLATE = \
-"""<!-- Copyright %(year)d The Chromium Authors. All rights reserved.
- Use of this source code is governed by a BSD-style license that can be
- found in the LICENSE file. -->
-
-<!-- NOTE: this file is generated from "%(source)s". Do not modify directly. -->
-
-<!doctype html>
-<html><head>
-<link rel="import" href="chrome://resources/polymer/polymer/polymer.html">
-<link rel="import" href="/webui_generator/webui-view.html">
-%(children_includes)s
-</head><body>
-<polymer-element name="%(element_name)s" extends="webui-view">
-</polymer-element>
-<script src="%(js_file_path)s"></script>
-</body></html>
-"""
-
-JS_FILE_TEMPLATE = \
-"""// Copyright %(year)d The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// NOTE: this file is generated from "%(source)s". Do not modify directly.
-
-
-Polymer('%(element_name)s', (function() {
- 'use strict';
- return {
- getType: function() {
- return '%(type)s';
- },
-
- initialize: function() {},
- contextChanged: function(changedKeys) {},
-
- initChildren_: function() {
-%(init_children_body)s
- },
-
- initContext_: function() {
-%(init_context_body)s
- }
- }
-})());
-"""
-
-def GetCommonSubistitutions(declaration):
- subs = {}
- subs['year'] = datetime.date.today().year
- subs['element_name'] = declaration.type.replace('_', '-') + '-view'
- subs['source'] = declaration.path
- return subs
-
-def GenChildrenIncludes(children):
- lines = []
- for declaration in set(children.itervalues()):
- lines.append('<link rel="import" href="/%s">' %
- declaration.html_view_html_include_path)
- return '\n'.join(lines)
-
-def GenHTMLFile(declaration):
- subs = GetCommonSubistitutions(declaration)
- subs['js_file_path'] = subs['element_name'] + '.js'
- subs['children_includes'] = GenChildrenIncludes(declaration.children)
- return HTML_FILE_TEMPLATE % subs
-
-def GenInitChildrenBody(children):
- lines = []
- lines.append(' var child = null;');
- for id in children:
- lines.append(' child = this.shadowRoot.querySelector(\'[wugid="%s"]\');'
- % id);
- lines.append(' if (!child)');
- lines.append(' console.error(this.path_ + \'$%s not found.\');' % id);
- lines.append(' else');
- lines.append(' child.setPath_(this.path_ + \'$%s\');' % id)
- return '\n'.join(lines)
-
-def GenInitContextBody(fields):
- lines = []
- for field in fields:
- value = ''
- if field.type in ['integer', 'double']:
- value = str(field.default_value)
- elif field.type == 'boolean':
- value = 'true' if field.default_value else 'false'
- elif field.type == 'string':
- value = '\'%s\'' % field.default_value
- elif field.type == 'string_list':
- value = '[' + \
- ', '.join('\'%s\'' % s for s in field.default_value) + ']'
- lines.append(' this.context.set(\'%s\', %s);' % (field.id, value))
- lines.append(' this.context.getChangesAndReset();')
- return '\n'.join(lines)
-
-def GenJSFile(declaration):
- subs = GetCommonSubistitutions(declaration)
- subs['type'] = declaration.type
- subs['init_children_body'] = GenInitChildrenBody(declaration.children)
- subs['init_context_body'] = GenInitContextBody(declaration.fields)
- return JS_FILE_TEMPLATE % subs
diff --git a/components/webui_generator/generator/util.py b/components/webui_generator/generator/util.py
deleted file mode 100644
index 28a20db..0000000
--- a/components/webui_generator/generator/util.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2015 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import argparse
-import os.path
-import re
-
-def CreateArgumentParser():
- parser = argparse.ArgumentParser()
- parser.add_argument('declaration', help='Path to declaration file.')
- parser.add_argument('--root', default='.', help='Path to src/ dir.')
- parser.add_argument('--destination',
- help='Root directory for generated files.')
- return parser
-
-def ToUpperCamelCase(underscore_name):
- return re.sub(r'(?:_|^)(.)', lambda m: m.group(1).upper(), underscore_name)
-
-def ToLowerCamelCase(underscore_name):
- return re.sub(r'_(.)', lambda m: m.group(1).upper(), underscore_name)
-
-def PathToIncludeGuard(path):
- return re.sub(r'[/.]', '_', path.upper()) + '_'
-
-def CreateDirIfNotExists(path):
- if not os.path.isdir(path):
- if os.path.exists(path):
- raise Exception('%s exists and is not a directory.' % path)
- os.makedirs(path)
diff --git a/components/webui_generator/generator/view_model.py b/components/webui_generator/generator/view_model.py
deleted file mode 100644
index a920807..0000000
--- a/components/webui_generator/generator/view_model.py
+++ /dev/null
@@ -1,329 +0,0 @@
-# Copyright 2015 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import os
-import datetime
-import util
-
-H_FILE_TEMPLATE = \
-"""// Copyright %(year)d The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// NOTE: this file is generated from "%(source)s". Do not modify directly.
-
-#ifndef %(include_guard)s
-#define %(include_guard)s
-
-#include "base/macros.h"
-#include "components/webui_generator/view_model.h"
-#include "%(export_h_include_path)s"
-
-namespace content {
-class BrowserContext;
-}
-
-%(children_forward_declarations)s
-
-namespace gen {
-
-class %(export_macro)s %(class_name)s : public ::webui_generator::ViewModel {
- public:
- using FactoryFunction = %(class_name)s* (*)(content::BrowserContext*);
-
-%(context_keys)s
-
- static %(class_name)s* Create(content::BrowserContext* context);
- static void SetFactory(FactoryFunction factory);
-
- %(class_name)s();
-
-%(children_getters)s
-
-%(context_getters)s
-
-%(event_handlers)s
-
- void Initialize() override {}
- void OnAfterChildrenReady() override {}
- void OnViewBound() override {}
-
- private:
- void OnEvent(const std::string& event) final;
-
- static FactoryFunction factory_function_;
-};
-
-} // namespace gen
-
-#endif // %(include_guard)s
-"""
-
-CHILD_FORWARD_DECLARATION_TEMPLATE = \
-"""namespace gen {
- class %(child_type)s;
-}
-"""
-CONTEXT_KEY_DECLARATION_TEMPLATE = \
-""" static const char %s[];"""
-
-CHILD_GETTER_DECLARATION_TEMPLATE = \
-""" virtual gen::%(child_type)s* %(method_name)s() const;""";
-
-CONTEXT_VALUE_GETTER_DECLARATION_TEMPLATE = \
-""" %(type)s %(method_name)s() const;"""
-
-EVENT_HANDLER_DECLARATION_TEMPLATE = \
-""" virtual void %s() = 0;"""
-
-CC_FILE_TEMPLATE = \
-"""// Copyright %(year)d The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// NOTE: this file is generated from "%(source)s". Do not modify directly.
-
-#include "%(header_path)s"
-
-#include "base/logging.h"
-#include "components/webui_generator/view.h"
-%(children_includes)s
-
-namespace gen {
-
-%(context_keys)s
-
-%(class_name)s::FactoryFunction %(class_name)s::factory_function_;
-
-%(class_name)s* %(class_name)s::Create(content::BrowserContext* context) {
- CHECK(factory_function_) << "Factory function for %(class_name)s was not "
- "set.";
- return factory_function_(context);
-}
-
-void %(class_name)s::SetFactory(FactoryFunction factory) {
- factory_function_ = factory;
-}
-
-%(class_name)s::%(class_name)s() {
-%(constructor_body)s
-}
-
-%(children_getters)s
-
-%(context_getters)s
-
-void %(class_name)s::OnEvent(const std::string& event) {
-%(event_dispatcher_body)s
- LOG(ERROR) << "Unknown event '" << event << "'";
-}
-
-} // namespace gen
-"""
-
-CONTEXT_KEY_DEFINITION_TEMPLATE = \
-"""const char %(class_name)s::%(name)s[] = "%(value)s";"""
-
-CHILD_GETTER_DEFINITION_TEMPLATE = \
-"""gen::%(child_type)s* %(class_name)s::%(method_name)s() const {
- return static_cast<gen::%(child_type)s*>(
- view()->GetChild("%(child_id)s")->GetViewModel());
-}
-"""
-
-CONTEXT_VALUE_GETTER_DEFINITION_TEMPLATE = \
-"""%(type)s %(class_name)s::%(method_name)s() const {
- return context().%(context_getter)s(%(key_constant)s);
-}
-"""
-
-FIELD_TYPE_TO_GETTER_TYPE = {
- 'boolean': 'bool',
- 'integer': 'int',
- 'double': 'double',
- 'string': 'std::string',
- 'string_list': 'login::StringList'
-}
-
-DISPATCH_EVENT_TEMPLATE = \
-""" if (event == "%(event_id)s") {
- %(method_name)s();
- return;
- }"""
-
-def GetCommonSubistitutions(declaration):
- subs = {}
- subs['year'] = datetime.date.today().year
- subs['class_name'] = declaration.view_model_class
- subs['source'] = declaration.path
- return subs
-
-def FieldNameToConstantName(field_name):
- return 'kContextKey' + util.ToUpperCamelCase(field_name)
-
-def GenContextKeysDeclarations(fields):
- return '\n'.join(
- (CONTEXT_KEY_DECLARATION_TEMPLATE % \
- FieldNameToConstantName(f.name) for f in fields))
-
-def GenChildrenForwardDeclarations(children):
- lines = []
- for declaration in set(children.itervalues()):
- lines.append(CHILD_FORWARD_DECLARATION_TEMPLATE % {
- 'child_type': declaration.view_model_class
- })
- return '\n'.join(lines)
-
-def ChildIdToChildGetterName(id):
- return 'Get%s' % util.ToUpperCamelCase(id)
-
-def GenChildrenGettersDeclarations(children):
- lines = []
- for id, declaration in children.iteritems():
- lines.append(CHILD_GETTER_DECLARATION_TEMPLATE % {
- 'child_type': declaration.view_model_class,
- 'method_name': ChildIdToChildGetterName(id)
- })
- return '\n'.join(lines)
-
-def FieldNameToGetterName(field_name):
- return 'Get%s' % util.ToUpperCamelCase(field_name)
-
-def GenContextGettersDeclarations(context_fields):
- lines = []
- for field in context_fields:
- lines.append(CONTEXT_VALUE_GETTER_DECLARATION_TEMPLATE % {
- 'type': FIELD_TYPE_TO_GETTER_TYPE[field.type],
- 'method_name': FieldNameToGetterName(field.name)
- })
- return '\n'.join(lines)
-
-def EventIdToMethodName(event):
- return 'On' + util.ToUpperCamelCase(event)
-
-def GenEventHandlersDeclarations(events):
- lines = []
- for event in events:
- lines.append(EVENT_HANDLER_DECLARATION_TEMPLATE %
- EventIdToMethodName(event))
- return '\n'.join(lines)
-
-def GenHFile(declaration):
- subs = GetCommonSubistitutions(declaration)
- subs['include_guard'] = \
- util.PathToIncludeGuard(declaration.view_model_include_path)
- subs['context_keys'] = GenContextKeysDeclarations(declaration.fields)
- subs['children_forward_declarations'] = \
- GenChildrenForwardDeclarations(declaration.children)
- subs['children_getters'] = \
- GenChildrenGettersDeclarations(declaration.children);
- subs['context_getters'] = \
- GenContextGettersDeclarations(declaration.fields);
- subs['event_handlers'] = GenEventHandlersDeclarations(declaration.events)
- subs['export_h_include_path'] = declaration.export_h_include_path
- subs['export_macro'] = declaration.component_export_macro
- return H_FILE_TEMPLATE % subs
-
-def GenContextKeysDefinitions(declaration):
- lines = []
- for field in declaration.fields:
- definition = CONTEXT_KEY_DEFINITION_TEMPLATE % {
- 'class_name': declaration.view_model_class,
- 'name': FieldNameToConstantName(field.name),
- 'value': field.id
- }
- lines.append(definition)
- return '\n'.join(lines)
-
-def GenChildrenIncludes(children):
- lines = []
- for declaration in set(children.itervalues()):
- lines.append('#include "%s"' % declaration.view_model_include_path)
- return '\n'.join(lines)
-
-def GenContextFieldInitialization(field):
- lines = []
- key_constant = FieldNameToConstantName(field.name)
- setter_method = 'Set' + util.ToUpperCamelCase(field.type)
- if field.type == 'string_list':
- lines.append(' {')
- lines.append(' std::vector<std::string> defaults;')
- for s in field.default_value:
- lines.append(' defaults.push_back("%s");' % s)
- lines.append(' context().%s(%s, defaults);' %
- (setter_method, key_constant))
- lines.append(' }')
- else:
- setter = ' context().%s(%s, ' % (setter_method, key_constant)
- if field.type in ['integer', 'double']:
- setter += str(field.default_value)
- elif field.type == 'boolean':
- setter += 'true' if field.default_value else 'false'
- else:
- assert field.type == 'string'
- setter += '"%s"' % field.default_value
- setter += ");"
- lines.append(setter)
- return '\n'.join(lines)
-
-def GenChildrenGettersDefenitions(declaration):
- lines = []
- for id, child in declaration.children.iteritems():
- lines.append(CHILD_GETTER_DEFINITION_TEMPLATE % {
- 'child_type': child.view_model_class,
- 'class_name': declaration.view_model_class,
- 'method_name': ChildIdToChildGetterName(id),
- 'child_id': id
- });
- return '\n'.join(lines)
-
-def GenContextGettersDefinitions(declaration):
- lines = []
- for field in declaration.fields:
- lines.append(CONTEXT_VALUE_GETTER_DEFINITION_TEMPLATE % {
- 'type': FIELD_TYPE_TO_GETTER_TYPE[field.type],
- 'class_name': declaration.view_model_class,
- 'method_name': FieldNameToGetterName(field.name),
- 'context_getter': 'Get' + util.ToUpperCamelCase(
- field.type),
- 'key_constant': FieldNameToConstantName(field.name)
- });
- return '\n'.join(lines)
-
-def GenEventDispatcherBody(events):
- lines = []
- for event in events:
- lines.append(DISPATCH_EVENT_TEMPLATE % {
- 'event_id': util.ToLowerCamelCase(event),
- 'method_name': EventIdToMethodName(event)
- });
- return '\n'.join(lines)
-
-def GenCCFile(declaration):
- subs = GetCommonSubistitutions(declaration)
- subs['header_path'] = declaration.view_model_include_path
- subs['context_keys'] = GenContextKeysDefinitions(declaration)
- subs['children_includes'] = GenChildrenIncludes(declaration.children)
- initializations = [GenContextFieldInitialization(field) \
- for field in declaration.fields]
- initializations.append(' base::DictionaryValue diff;');
- initializations.append(' context().GetChangesAndReset(&diff);');
- subs['constructor_body'] = '\n'.join(initializations)
- subs['children_getters'] = GenChildrenGettersDefenitions(declaration)
- subs['context_getters'] = GenContextGettersDefinitions(declaration)
- subs['event_dispatcher_body'] = GenEventDispatcherBody(declaration.events)
- return CC_FILE_TEMPLATE % subs
-
-def ListOutputs(declaration, destination):
- dirname = os.path.join(destination, os.path.dirname(declaration.path))
- h_file_path = os.path.join(dirname, declaration.view_model_h_name)
- cc_file_path = os.path.join(dirname, declaration.view_model_cc_name)
- return [h_file_path, cc_file_path]
-
-def Gen(declaration, destination):
- h_file_path, cc_file_path = ListOutputs(declaration, destination)
- util.CreateDirIfNotExists(os.path.dirname(h_file_path))
- open(h_file_path, 'w').write(GenHFile(declaration))
- open(cc_file_path, 'w').write(GenCCFile(declaration))
-
diff --git a/components/webui_generator/generator/web_ui_view.py b/components/webui_generator/generator/web_ui_view.py
deleted file mode 100644
index f534cae..0000000
--- a/components/webui_generator/generator/web_ui_view.py
+++ /dev/null
@@ -1,205 +0,0 @@
-# Copyright 2015 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import datetime
-import json
-import os
-import os.path
-import util
-import html_view
-
-H_FILE_TEMPLATE = \
-"""// Copyright %(year)d The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// NOTE: this file is generated from "%(source)s". Do not modify directly.
-
-#ifndef %(include_guard)s
-#define %(include_guard)s
-
-#include "base/macros.h"
-#include "components/webui_generator/web_ui_view.h"
-#include "%(export_h_include_path)s"
-
-namespace gen {
-
-class %(export_macro)s %(class_name)s : public ::webui_generator::WebUIView {
- public:
- %(class_name)s(content::WebUI* web_ui);
- %(class_name)s(content::WebUI* web_ui, const std::string& id);
-
- protected:
- void AddLocalizedValues(::login::LocalizedValuesBuilder* builder) override;
- void AddResources(ResourcesMap* resources_map) override;
- void CreateAndAddChildren() override;
- ::webui_generator::ViewModel* CreateViewModel() override;
- std::string GetType() override;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(%(class_name)s);
-};
-
-} // namespace gen
-
-#endif // %(include_guard)s
-"""
-
-CC_FILE_TEMPLATE = \
-"""// Copyright %(year)d The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// NOTE: this file is generated from "%(source)s". Do not modify directly.
-
-#include "%(header_path)s"
-
-#include "content/public/browser/web_ui_data_source.h"
-#include "content/public/browser/web_contents.h"
-#include "components/login/localized_values_builder.h"
-#include "grit/components_strings.h"
-%(includes)s
-
-namespace {
-
-const char kHTMLDoc[] = "%(html_doc)s";
-const char kJSDoc[] = "%(js_doc)s";
-
-} // namespace
-
-namespace gen {
-
-%(class_name)s::%(class_name)s(content::WebUI* web_ui)
- : webui_generator::WebUIView(web_ui, "WUG_ROOT") {
-}
-
-%(class_name)s::%(class_name)s(content::WebUI* web_ui, const std::string& id)
- : webui_generator::WebUIView(web_ui, id) {
-}
-
-void %(class_name)s::AddLocalizedValues(
- ::login::LocalizedValuesBuilder* builder) {
-%(add_localized_values_body)s
-}
-
-void %(class_name)s::AddResources(ResourcesMap* resources_map) {
-%(add_resources_body)s
-}
-
-void %(class_name)s::CreateAndAddChildren() {
-%(create_and_add_children_body)s
-}
-
-::webui_generator::ViewModel* %(class_name)s::CreateViewModel() {
-%(create_view_model_body)s
-}
-
-std::string %(class_name)s::GetType() {
-%(get_type_body)s
-}
-
-} // namespace gen
-"""
-
-ADD_LOCALIZED_VALUE_TEMPLATE = \
-""" builder->Add("%(string_name)s", %(resource_id)s);"""
-
-ADD_RESOURCE_TEMPLATE = \
-""" (*resources_map)["%(path)s"] = scoped_refptr<base::RefCountedMemory>(
- new base::RefCountedStaticMemory(%(const)s, arraysize(%(const)s) - 1));"""
-
-CREATE_AND_ADD_CHILD_TEMPLATE = \
-""" AddChild(new gen::%(child_class)s(web_ui(), "%(child_id)s"));"""
-
-CREATE_VIEW_MODEL_BODY_TEMPLATE = \
-""" return gen::%s::Create(web_ui()->GetWebContents()->GetBrowserContext());"""
-
-def GetCommonSubistitutions(declaration):
- subs = {}
- subs['year'] = datetime.date.today().year
- subs['class_name'] = declaration.webui_view_class
- subs['source'] = declaration.path
- return subs
-
-
-def GenHFile(declaration):
- subs = GetCommonSubistitutions(declaration)
- subs['include_guard'] = util.PathToIncludeGuard(
- declaration.webui_view_include_path)
- subs['export_h_include_path'] = declaration.export_h_include_path
- subs['export_macro'] = declaration.component_export_macro
- return H_FILE_TEMPLATE % subs
-
-def GenIncludes(declaration):
- lines = []
- lines.append('#include "%s"' % declaration.view_model_include_path)
- children_declarations = set(declaration.children.itervalues())
- for child in children_declarations:
- lines.append('#include "%s"' % child.webui_view_include_path)
- return '\n'.join(lines)
-
-def GenAddLocalizedValuesBody(declaration):
- lines = []
- resource_id_prefix = "IDS_WUG_" + declaration.type.upper() + "_"
- for name in declaration.strings:
- resource_id = resource_id_prefix + name.upper()
- subs = {
- 'string_name': util.ToLowerCamelCase(name),
- 'resource_id': resource_id
- }
- lines.append(ADD_LOCALIZED_VALUE_TEMPLATE % subs)
- return '\n'.join(lines)
-
-def GenAddResourcesBody(declaration):
- lines = []
- html_path = declaration.html_view_html_include_path
- lines.append(ADD_RESOURCE_TEMPLATE % { 'path': html_path,
- 'const': 'kHTMLDoc' })
- js_path = declaration.html_view_js_include_path
- lines.append(ADD_RESOURCE_TEMPLATE % { 'path': js_path,
- 'const': 'kJSDoc' })
- return '\n'.join(lines)
-
-def GenCreateAndAddChildrenBody(children):
- lines = []
- for id, declaration in children.iteritems():
- subs = {
- 'child_class': declaration.webui_view_class,
- 'child_id': id
- }
- lines.append(CREATE_AND_ADD_CHILD_TEMPLATE % subs)
- return '\n'.join(lines)
-
-def EscapeStringForCLiteral(string):
- return json.dumps(string)[1:][:-1]
-
-def GenCCFile(declaration):
- subs = GetCommonSubistitutions(declaration)
- subs['header_path'] = declaration.webui_view_include_path
- subs['includes'] = GenIncludes(declaration)
- subs['add_localized_values_body'] = \
- GenAddLocalizedValuesBody(declaration)
- subs['add_resources_body'] = \
- GenAddResourcesBody(declaration)
- subs['create_and_add_children_body'] = \
- GenCreateAndAddChildrenBody(declaration.children)
- subs['create_view_model_body'] = \
- CREATE_VIEW_MODEL_BODY_TEMPLATE % declaration.view_model_class
- subs['get_type_body'] = ' return "%s";' % declaration.type
- subs['html_doc'] = EscapeStringForCLiteral(html_view.GenHTMLFile(declaration))
- subs['js_doc'] = EscapeStringForCLiteral(html_view.GenJSFile(declaration))
- return CC_FILE_TEMPLATE % subs
-
-def ListOutputs(declaration, destination):
- dirname = os.path.join(destination, os.path.dirname(declaration.path))
- h_file_path = os.path.join(dirname, declaration.webui_view_h_name)
- cc_file_path = os.path.join(dirname, declaration.webui_view_cc_name)
- return [h_file_path, cc_file_path]
-
-def Gen(declaration, destination):
- h_file_path, cc_file_path = ListOutputs(declaration, destination)
- util.CreateDirIfNotExists(os.path.dirname(h_file_path))
- open(h_file_path, 'w').write(GenHFile(declaration))
- open(cc_file_path, 'w').write(GenCCFile(declaration))
-
diff --git a/components/webui_generator/generator/wug.gni b/components/webui_generator/generator/wug.gni
deleted file mode 100644
index e088e5d..0000000
--- a/components/webui_generator/generator/wug.gni
+++ /dev/null
@@ -1,131 +0,0 @@
-# Copyright 2015 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# Generates native and HTML/JS supporting code for Web UI element from element's
-# declaration JSON file.
-#
-# Parameters:
-#
-# source (required)
-# Declaration file.
-#
-# deps (optional)
-# visibility (optional)
-# Normal meanings.
-#
-# Example:
-# wug("some_type_wug_generated") {
-# source = "some_type.json"
-# }
-#
-# Target's name should be deduced from declaration file name by removing
-# extension and adding '_wug_generated' prefix. This is needed to properly
-# handle dependencies between declaration files and their imports.
-#
-# For declaration file with a full path 'src/full/path/some_type.json' 5 files
-# will be generated and compiled:
-# $root_gen_dir/wug/full/path/some_type_export.h
-# $root_gen_dir/wug/full/path/some_type_view.h
-# $root_gen_dir/wug/full/path/some_type_view_model.cc
-# $root_gen_dir/wug/full/path/some_type_view_model.h
-# $root_gen_dir/wug/full/path/some_type_webui_view.cc
-
-template("wug") {
- declaration_path = invoker.source
- generator_dir = "//components/webui_generator/generator"
- generator_path = "$generator_dir/gen_sources.py"
- src_root = rebase_path("//", root_build_dir)
-
- helper_path = "$generator_dir/build_helper.py"
- target_name = "${target_name}"
- action_name = target_name + "_gen"
- group_name = target_name
- out_dir = "$root_gen_dir/wug"
-
- helper_args = [
- rebase_path(declaration_path, root_build_dir),
- "--destination",
- rebase_path(out_dir, root_build_dir),
- "--root",
- src_root,
- "--gn",
- "--output",
- ]
-
- expected_target_name =
- exec_script(helper_path, helper_args + [ "target_name" ], "trim string")
- assert(target_name == expected_target_name,
- "Wrong target name. " + "Expected '" + expected_target_name +
- "', got '" + target_name + "'.")
-
- action(action_name) {
- visibility = [ ":$group_name" ]
-
- script = generator_path
- sources = [
- "$generator_dir/declaration.py",
- "$generator_dir/export_h.py",
- "$generator_dir/html_view.py",
- "$generator_dir/util.py",
- "$generator_dir/view_model.py",
- "$generator_dir/web_ui_view.py",
- ]
- inputs = [
- declaration_path,
- ]
- inputs +=
- exec_script(helper_path, helper_args + [ "imports" ], "list lines")
- common_prefix = process_file_template(
- [ declaration_path ],
- "$out_dir/{{source_root_relative_dir}}/{{source_name_part}}_")
- common_prefix = common_prefix[0]
- outputs = [
- common_prefix + "export.h",
- common_prefix + "view_model.h",
- common_prefix + "view_model.cc",
- common_prefix + "web_ui_view.h",
- common_prefix + "web_ui_view.cc",
- ]
- args = [
- rebase_path(declaration_path, root_build_dir),
- "--root",
- src_root,
- "--destination",
- rebase_path(out_dir, root_build_dir),
- ]
-
- if (defined(invoker.deps)) {
- deps = invoker.deps
- }
- if (defined(invoker.public_deps)) {
- public_deps = invoker.public_deps
- }
- }
-
- source_set(target_name) {
- if (defined(invoker.visibility)) {
- visibility = invoker.visibility
- }
-
- sources = get_target_outputs(":$action_name")
- defines = [ exec_script(helper_path,
- helper_args + [ "impl_macro" ],
- "trim string") ]
- deps = [
- ":$action_name",
- "//base",
- "//components/login",
- "//components/strings",
- ]
- deps += exec_script(helper_path,
- helper_args + [ "import_dependencies" ],
- "list lines")
- public_deps = [
- "//components/webui_generator",
- ]
-
- all_dependent_configs =
- [ "//components/webui_generator:wug_generated_config" ]
- }
-}
diff --git a/components/webui_generator/generator/wug.gypi b/components/webui_generator/generator/wug.gypi
deleted file mode 100644
index 121e2b8..0000000
--- a/components/webui_generator/generator/wug.gypi
+++ /dev/null
@@ -1,117 +0,0 @@
-# Copyright (c) 2015 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# This file included into a targets definition creates a target that generates
-# native and HTML/JS supporting code for Web UI element from element's
-# declaration JSON file.
-#
-# Example:
-# 'targets': [
-# ...
-# {
-# 'variables': {
-# 'declaration_file': 'path/to/file.json'
-# }
-# 'includes': ['path/to/this/file.gypi']
-# },
-# ...
-# ]
-#
-# Such inclusion creates a target, which name is deduced from declaration file
-# name by removing extension and adding '_wug_generated' prefix, e.g. for
-# declaration file named 'some_type.json' will be created target named
-# 'some_type_wug_generated'. This is needed to properly handle dependencies
-# between declaration files and their imports.
-#
-# For declaration file with a full path 'src/full/path/some_type.json' 5 files
-# will be generated and compiled:
-# <(SHARED_INTERMEDIATE_DIR)/wug/full/path/some_type_export.h
-# <(SHARED_INTERMEDIATE_DIR)/wug/full/path/some_type_view.h
-# <(SHARED_INTERMEDIATE_DIR)/wug/full/path/some_type_view_model.cc
-# <(SHARED_INTERMEDIATE_DIR)/wug/full/path/some_type_view_model.h
-# <(SHARED_INTERMEDIATE_DIR)/wug/full/path/some_type_webui_view.cc
-
-{
- 'variables': {
- 'generator_dir': '<(DEPTH)/components/webui_generator/generator',
- 'helper_path': '<(generator_dir)/build_helper.py',
- 'generator_path': '<(generator_dir)/gen_sources.py',
- 'out_dir': '<(SHARED_INTERMEDIATE_DIR)/wug',
- 'helper_cl': 'python <(helper_path) --root=<(DEPTH) <(declaration_file)',
- 'dirname': '<(out_dir)/<!(<(helper_cl) --output=dirname)',
- 'view_cc': '<(dirname)/<!(<(helper_cl) --output=view_cc)',
- 'view_h': '<(dirname)/<!(<(helper_cl) --output=view_h)',
- 'model_cc': '<(dirname)/<!(<(helper_cl) --output=model_cc)',
- 'model_h': '<(dirname)/<!(<(helper_cl) --output=model_h)',
- 'export_h': '<(dirname)/<!(<(helper_cl) --output=export_h)',
- 'impl_macro': '<!(<(helper_cl) --output=impl_macro)',
- },
- 'target_name': '<!(<(helper_cl) --output=target_name)',
- 'type': '<(component)',
- 'sources': [
- '<(view_cc)',
- '<(view_h)',
- '<(model_cc)',
- '<(model_h)',
- '<(export_h)',
- ],
- 'defines': [
- '<(impl_macro)',
- ],
- 'actions': [
- {
- 'action_name': 'gen_files',
- 'inputs': [
- '<(generator_path)',
- '<(generator_dir)/declaration.py',
- '<(generator_dir)/export_h.py',
- '<(generator_dir)/html_view.py',
- '<(generator_dir)/util.py',
- '<(generator_dir)/view_model.py',
- '<(generator_dir)/web_ui_view.py',
- '<(declaration_file)',
- ],
- 'outputs': [
- '<(view_cc)',
- '<(view_h)',
- '<(model_cc)',
- '<(model_h)',
- '<(export_h)',
- ],
- 'action': [
- 'python',
- '<(generator_path)',
- '--root=<(DEPTH)',
- '--destination=<(out_dir)',
- '<(declaration_file)'
- ],
- 'message': 'Generating C++ code from <(declaration_file).',
- },
- ],
- 'dependencies': [
- '<(DEPTH)/base/base.gyp:base',
- '<(DEPTH)/components/components.gyp:login',
- '<(DEPTH)/components/components.gyp:webui_generator',
- '<(DEPTH)/components/components_strings.gyp:components_strings',
- '<(DEPTH)/skia/skia.gyp:skia',
- '<!@(<(helper_cl) --output=import_dependencies)',
- ],
- 'include_dirs': [
- '<(DEPTH)',
- '<(out_dir)',
- ],
- 'all_dependent_settings': {
- 'include_dirs': [
- '<(DEPTH)',
- '<(out_dir)',
- ],
- },
- 'export_dependent_settings': [
- '<(DEPTH)/components/components.gyp:webui_generator',
- '<(DEPTH)/components/components.gyp:login',
- ],
- # This target exports a hard dependency because it generates header
- # files.
- 'hard_dependency': 1,
-}
diff --git a/components/webui_generator/resources/context.html b/components/webui_generator/resources/context.html
deleted file mode 100644
index e1631b2..0000000
--- a/components/webui_generator/resources/context.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<!-- Copyright 2015 The Chromium Authors. All rights reserved.
- Use of this source code is governed by a BSD-style license that can be
- found in the LICENSE file. -->
-<script src="context.js"></script>
-
diff --git a/components/webui_generator/resources/context.js b/components/webui_generator/resources/context.js
deleted file mode 100644
index 0bd28f1..0000000
--- a/components/webui_generator/resources/context.js
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-(function(global) {
- var has_cr = !!global.cr;
- var cr_define_bckp = null;
- if (has_cr && global.cr.define)
- cr_define_bckp = global.cr.define;
- if (!has_cr)
- global.cr = {}
- global.cr.define = function(_, define) {
- global.wug = global.wug || {}
- global.wug.Context = define().ScreenContext;
- }
-<include src="../../../chrome/browser/resources/chromeos/login/screen_context.js">
- if (!has_cr)
- delete global.cr;
- if (cr_define_bckp)
- global.cr.define = cr_define_bckp;
-})(this);
diff --git a/components/webui_generator/resources/webui-view.html b/components/webui_generator/resources/webui-view.html
deleted file mode 100644
index b07fa5c..0000000
--- a/components/webui_generator/resources/webui-view.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<!-- Copyright 2015 The Chromium Authors. All rights reserved.
- Use of this source code is governed by a BSD-style license that can be
- found in the LICENSE file. -->
-
-<link rel="import" href="chrome://resources/polymer/polymer/polymer.html">
-<link rel="import" href="context.html">
-
-<polymer-element name="webui-view"></polymer-element>
-<script src="webui-view.js"></script>
-
diff --git a/components/webui_generator/resources/webui-view.js b/components/webui_generator/resources/webui-view.js
deleted file mode 100644
index 99a033f..0000000
--- a/components/webui_generator/resources/webui-view.js
+++ /dev/null
@@ -1,189 +0,0 @@
-// Copyright (c) 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-Polymer('webui-view', (function() {
- /** @const */ var CALLBACK_CONTEXT_CHANGED = 'contextChanged';
- /** @const */ var CALLBACK_READY = 'ready';
-
- return {
- /** @const */
- CALLBACK_EVENT_FIRED: 'eventFired',
-
- /**
- * Dictionary of context observers that are methods of |this| bound to
- * |this|.
- */
- contextObservers_: null,
-
- /**
- * Full path to the element in views hierarchy.
- */
- path_: null,
-
- /**
- * Whether DOM is ready.
- */
- domReady_: false,
-
- /**
- * Context used for sharing data with native backend.
- */
- context: null,
-
- /**
- * Internal storage of |this.context|.
- * |C| bound to the native part of the context, that means that all the
- * changes in the native part appear in |C| automatically. Reverse is not
- * true, you should use:
- * this.context.set(...);
- * this.context.commitContextChanges();
- * to send updates to the native part.
- */
- C: null,
-
- ready: function() {
- this.context = new wug.Context;
- this.C = this.context.storage_;
- this.contextObservers_ = {};
- },
-
- /**
- * One of element's lifecycle methods.
- */
- domReady: function() {
- var id = this.getAttribute('wugid');
- if (!id) {
- console.error('"wugid" attribute is missing.');
- return;
- }
- if (id == 'WUG_ROOT')
- this.setPath_('WUG_ROOT');
- this.domReady_ = true;
- if (this.path_)
- this.init_();
- },
-
- setPath_: function(path) {
- this.path_ = path;
- if (this.domReady_)
- this.init_();
- },
-
- init_: function() {
- this.initContext_();
- this.initChildren_();
- window[this.path_ + '$contextChanged'] =
- this.onContextChanged_.bind(this);
- this.initialize();
- this.send(CALLBACK_READY);
- },
-
- fireEvent: function(_, _, source) {
- this.send(this.CALLBACK_EVENT_FIRED, source.getAttribute('event'));
- },
-
- i18n: function(args) {
- if (!(args instanceof Array))
- args = [args];
- args[0] = this.getType() + '$' + args[0];
- return loadTimeData.getStringF.apply(loadTimeData, args);
- },
-
- /**
- * Sends message to Chrome, adding needed prefix to message name. All
- * arguments after |messageName| are packed into message parameters list.
- *
- * @param {string} messageName Name of message without a prefix.
- * @param {...*} varArgs parameters for message.
- * @private
- */
- send: function(messageName, varArgs) {
- if (arguments.length == 0)
- throw Error('Message name is not provided.');
- var fullMessageName = this.path_ + '$' + messageName;
- var payload = Array.prototype.slice.call(arguments, 1);
- chrome.send(fullMessageName, payload);
- },
-
- /**
- * Starts observation of property with |key| of the context attached to
- * current screen. In contrast with "wug.Context.addObserver" this method
- * can automatically detect if observer is method of |this| and make
- * all needed actions to make it work correctly. So there is no need in
- * binding method to |this| before adding it. For example, if |this| has
- * a method |onKeyChanged_|, you can do:
- *
- * this.addContextObserver('key', this.onKeyChanged_);
- * ...
- * this.removeContextObserver('key', this.onKeyChanged_);
- *
- * instead of:
- *
- * this.keyObserver_ = this.onKeyChanged_.bind(this);
- * this.addContextObserver('key', this.keyObserver_);
- * ...
- * this.removeContextObserver('key', this.keyObserver_);
- *
- * @private
- */
- addContextObserver: function(key, observer) {
- var realObserver = observer;
- var propertyName = this.getPropertyNameOf_(observer);
- if (propertyName) {
- if (!this.contextObservers_.hasOwnProperty(propertyName))
- this.contextObservers_[propertyName] = observer.bind(this);
- realObserver = this.contextObservers_[propertyName];
- }
- this.context.addObserver(key, realObserver);
- },
-
- /**
- * Removes |observer| from the list of context observers. Observer could be
- * a method of |this| (see comment to |addContextObserver|).
- * @private
- */
- removeContextObserver: function(observer) {
- var realObserver = observer;
- var propertyName = this.getPropertyNameOf_(observer);
- if (propertyName) {
- if (!this.contextObservers_.hasOwnProperty(propertyName))
- return;
- realObserver = this.contextObservers_[propertyName];
- delete this.contextObservers_[propertyName];
- }
- this.context.removeObserver(realObserver);
- },
-
- /**
- * Sends recent context changes to C++ handler.
- * @private
- */
- commitContextChanges: function() {
- if (!this.context.hasChanges())
- return;
- this.send(CALLBACK_CONTEXT_CHANGED, this.context.getChangesAndReset());
- },
-
- /**
- * Called when context changed on C++ side.
- */
- onContextChanged_: function(diff) {
- var changedKeys = this.context.applyChanges(diff);
- this.contextChanged(changedKeys);
- },
-
- /**
- * If |value| is the value of some property of |this| returns property's
- * name. Otherwise returns empty string.
- * @private
- */
- getPropertyNameOf_: function(value) {
- for (var key in this)
- if (this[key] === value)
- return key;
- return '';
- }
- };
-})());
-
diff --git a/components/webui_generator/view.cc b/components/webui_generator/view.cc
deleted file mode 100644
index a335ef5..0000000
--- a/components/webui_generator/view.cc
+++ /dev/null
@@ -1,102 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/webui_generator/view.h"
-
-#include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
-#include "components/webui_generator/view_model.h"
-
-namespace webui_generator {
-
-View::View(const std::string& id)
- : parent_(NULL),
- id_(id),
- ready_children_(0),
- view_model_ready_(false),
- ready_(false),
- weak_factory_(this) {
-}
-
-View::~View() {
-}
-
-void View::Init() {
- CreateAndAddChildren();
-
- if (!IsRootView())
- path_ = parent_->path() + "$";
-
- path_ += id_;
- view_model_.reset(CreateViewModel());
- view_model_->SetView(this);
-
- for (auto& id_child : children_)
- id_child.second->Init();
-
- if (children_.empty())
- OnChildrenReady();
-}
-
-bool View::IsRootView() const {
- return !parent_;
-}
-
-ViewModel* View::GetViewModel() const {
- return view_model_.get();
-}
-
-void View::OnViewModelReady() {
- view_model_ready_ = true;
- if (ready_children_ == static_cast<int>(children_.size()))
- OnReady();
-}
-
-View* View::GetChild(const std::string& id) const {
- auto it = children_.find(id);
- if (it == children_.end())
- return nullptr;
-
- return it->second;
-}
-
-void View::OnReady() {
- if (ready_)
- return;
-
- ready_ = true;
- if (!IsRootView())
- parent_->OnChildReady(this);
-}
-
-void View::UpdateContext(const base::DictionaryValue& diff) {
- DCHECK(ready_);
- view_model_->UpdateContext(diff);
-}
-
-void View::HandleEvent(const std::string& event) {
- DCHECK(ready_);
- view_model_->OnEvent(event);
-}
-
-void View::AddChild(View* child) {
- DCHECK(children_.find(child->id()) == children_.end());
- DCHECK(!child->id().empty());
- children_.set(child->id(), make_scoped_ptr(child));
- child->set_parent(this);
-}
-
-void View::OnChildReady(View* child) {
- ++ready_children_;
- if (ready_children_ == static_cast<int>(children_.size()))
- OnChildrenReady();
-}
-
-void View::OnChildrenReady() {
- view_model_->OnChildrenReady();
- if (view_model_ready_)
- OnReady();
-}
-
-} // namespace webui_generator
diff --git a/components/webui_generator/view.h b/components/webui_generator/view.h
deleted file mode 100644
index 934fa3d..0000000
--- a/components/webui_generator/view.h
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_UI_WEBUI_WUG_VIEW_H_
-#define CHROME_BROWSER_UI_WEBUI_WUG_VIEW_H_
-
-#include "base/containers/scoped_ptr_hash_map.h"
-#include "base/macros.h"
-#include "base/memory/weak_ptr.h"
-#include "components/webui_generator/export.h"
-
-namespace base {
-class DictionaryValue;
-}
-
-namespace webui_generator {
-
-class ViewModel;
-
-/**
- * Base block of Web UI (in terms of Web UI Generator). Every View instance is
- * associated with single ViewModel instance which provides a context for the
- * view. Views are hierarchical. Every child of view has an unique id.
- */
-class WUG_EXPORT View {
- public:
- explicit View(const std::string& id);
- virtual ~View();
-
- // Should be called before using the view. This method creates children (using
- // CreateAndAddChildren() method) and a view-model (using CreateViewModel()
- // method). Then it recursively calls Init() for the children. When
- // all the children and the view-model are ready, OnReady() method is called.
- // Overridden methods should call the base implementation.
- virtual void Init();
-
- // Root view is a view without parent.
- // Root view should have id equal to "WUG_ROOT".
- bool IsRootView() const;
-
- ViewModel* GetViewModel() const;
-
- // Called by view-model when it is ready.
- void OnViewModelReady();
-
- const std::string& id() const { return id_; }
-
- // Every view has an unique path in a view hierarchy which is:
- // a) |id| for the root view;
- // b) concatenation of parent's path, $-sign and |id| for not-root views.
- const std::string& path() const { return path_; }
-
- // Returns a child with a given |id|. Returns |nullptr| if such child doesn't
- // exist.
- View* GetChild(const std::string& id) const;
-
- // Called by view-model when it changes the context.
- virtual void OnContextChanged(const base::DictionaryValue& diff) = 0;
-
- protected:
- // Called when view is ready, which means view-model and all children are
- // ready. Overridden methods should call the base implementation.
- virtual void OnReady();
-
- // Forwards context changes stored in |diff| to view-model.
- void UpdateContext(const base::DictionaryValue& diff);
-
- // Forwards |event| to view-model.
- void HandleEvent(const std::string& event);
-
- bool ready() const { return ready_; }
-
- base::ScopedPtrHashMap<std::string, scoped_ptr<View>>& children() {
- return children_;
- }
-
- // Adds |child| to the list of children of |this|. Can be called only from
- // CreateAndAddChildren() override.
- void AddChild(View* child);
-
- virtual std::string GetType() = 0;
-
- // Implementation should create an instance of view-model for this view.
- virtual ViewModel* CreateViewModel() = 0;
-
- // Implementation should create and add children to |this| view. This method
- // is an only place where it is allowed to add children.
- virtual void CreateAndAddChildren() = 0;
-
- private:
- // Called by |child| view, when it is ready.
- void OnChildReady(View* child);
-
- // Called when all the children created by CreatedAndAddChildren() are ready.
- void OnChildrenReady();
-
- void set_parent(View* parent) { parent_ = parent; }
-
- View* parent_;
- std::string id_;
- std::string path_;
-
- // Number of child views that are ready.
- int ready_children_;
-
- bool view_model_ready_;
- bool ready_;
- base::ScopedPtrHashMap<std::string, scoped_ptr<View>> children_;
- scoped_ptr<ViewModel> view_model_;
- base::WeakPtrFactory<View> weak_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(View);
-};
-
-} // namespace webui_generator
-
-#endif // CHROME_BROWSER_UI_WEBUI_WUG_VIEW_H_
diff --git a/components/webui_generator/view_model.cc b/components/webui_generator/view_model.cc
deleted file mode 100644
index d81ce98..0000000
--- a/components/webui_generator/view_model.cc
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/webui_generator/view_model.h"
-
-#include "components/webui_generator/view.h"
-
-namespace webui_generator {
-
-ViewModel::ContextEditor::ContextEditor(ViewModel& view_model)
- : view_model_(view_model), context_(view_model_.context()) {
-}
-
-ViewModel::ContextEditor::~ContextEditor() {
- view_model_.CommitContextChanges();
-}
-
-const ViewModel::ContextEditor& ViewModel::ContextEditor::SetBoolean(
- const KeyType& key,
- bool value) const {
- context_.SetBoolean(key, value);
- return *this;
-}
-
-const ViewModel::ContextEditor& ViewModel::ContextEditor::SetInteger(
- const KeyType& key,
- int value) const {
- context_.SetInteger(key, value);
- return *this;
-}
-
-const ViewModel::ContextEditor& ViewModel::ContextEditor::SetDouble(
- const KeyType& key,
- double value) const {
- context_.SetDouble(key, value);
- return *this;
-}
-
-const ViewModel::ContextEditor& ViewModel::ContextEditor::SetString(
- const KeyType& key,
- const std::string& value) const {
- context_.SetString(key, value);
- return *this;
-}
-
-const ViewModel::ContextEditor& ViewModel::ContextEditor::SetString(
- const KeyType& key,
- const base::string16& value) const {
- context_.SetString(key, value);
- return *this;
-}
-
-const ViewModel::ContextEditor& ViewModel::ContextEditor::SetStringList(
- const KeyType& key,
- const StringList& value) const {
- context_.SetStringList(key, value);
- return *this;
-}
-
-const ViewModel::ContextEditor& ViewModel::ContextEditor::SetString16List(
- const KeyType& key,
- const String16List& value) const {
- context_.SetString16List(key, value);
- return *this;
-}
-
-ViewModel::ViewModel() : view_(nullptr) {
-}
-
-ViewModel::~ViewModel() {
-}
-
-void ViewModel::SetView(View* view) {
- view_ = view;
- Initialize();
-}
-
-void ViewModel::OnChildrenReady() {
- OnAfterChildrenReady();
- view_->OnViewModelReady();
-}
-
-void ViewModel::UpdateContext(const base::DictionaryValue& diff) {
- std::vector<std::string> changed_keys;
- context_.ApplyChanges(diff, &changed_keys);
- OnContextChanged(changed_keys);
-}
-
-void ViewModel::OnEvent(const std::string& event) {
-}
-
-ViewModel::ContextEditor ViewModel::GetContextEditor() {
- return ContextEditor(*this);
-}
-
-void ViewModel::CommitContextChanges() {
- if (!context().HasChanges())
- return;
-
- base::DictionaryValue diff;
- context().GetChangesAndReset(&diff);
- view_->OnContextChanged(diff);
-}
-
-} // namespace webui_generator
diff --git a/components/webui_generator/view_model.h b/components/webui_generator/view_model.h
deleted file mode 100644
index a7021e0..0000000
--- a/components/webui_generator/view_model.h
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_UI_WEBUI_WUG_VIEW_MODEL_H_
-#define CHROME_BROWSER_UI_WEBUI_WUG_VIEW_MODEL_H_
-
-#include <vector>
-
-#include "base/macros.h"
-#include "components/login/screens/screen_context.h"
-#include "components/webui_generator/export.h"
-
-namespace base {
-class DictionaryValue;
-}
-
-namespace webui_generator {
-
-using Context = login::ScreenContext;
-class View;
-
-// Base class for view-model. Usually View is responsible for creating and
-// initializing instances of this class.
-class WUG_EXPORT ViewModel {
- public:
- ViewModel();
- virtual ~ViewModel();
-
- void SetView(View* view);
-
- // Called by view to notify that children are ready.
- void OnChildrenReady();
-
- // Called by view when it became bound (meaning that all changes in context
- // will be reflected in view right after they are made).
- virtual void OnViewBound() = 0;
-
- // Notifies view-model about context changes happended on view side.
- // View-model corrects its copy of context according to changes in |diff|.
- void UpdateContext(const base::DictionaryValue& diff);
-
- // Notifies view-model about |event| sent from view.
- virtual void OnEvent(const std::string& event);
-
- protected:
- // Scoped context editor, which automatically commits all pending
- // context changes on destruction.
- class ContextEditor {
- public:
- using KeyType = ::login::ScreenContext::KeyType;
- using String16List = ::login::String16List;
- using StringList = ::login::StringList;
-
- explicit ContextEditor(ViewModel& screen);
- ~ContextEditor();
-
- const ContextEditor& SetBoolean(const KeyType& key, bool value) const;
- const ContextEditor& SetInteger(const KeyType& key, int value) const;
- const ContextEditor& SetDouble(const KeyType& key, double value) const;
- const ContextEditor& SetString(const KeyType& key,
- const std::string& value) const;
- const ContextEditor& SetString(const KeyType& key,
- const base::string16& value) const;
- const ContextEditor& SetStringList(const KeyType& key,
- const StringList& value) const;
- const ContextEditor& SetString16List(const KeyType& key,
- const String16List& value) const;
-
- private:
- ViewModel& view_model_;
- Context& context_;
- };
-
- // This method is called in a time appropriate for initialization. At this
- // point it is allowed to make changes in the context, but it is not allowed
- // to access child view-models.
- virtual void Initialize() = 0;
-
- // This method is called when all children are ready.
- virtual void OnAfterChildrenReady() = 0;
-
- // This method is called after context was changed on view side.
- // |chanaged_keys| contains a list of keys of changed fields.
- virtual void OnContextChanged(const std::vector<std::string>& changed_keys) {}
-
- Context& context() { return context_; }
- const Context& context() const { return context_; }
-
- View* view() const { return view_; }
-
- // Returns scoped context editor. The editor or it's copies should not outlive
- // current BaseScreen instance.
- ContextEditor GetContextEditor();
-
- // Notifies view about changes made in context.
- void CommitContextChanges();
-
- private:
- Context context_;
- View* view_;
-
- DISALLOW_COPY_AND_ASSIGN(ViewModel);
-};
-
-} // namespace webui_generator
-
-#endif // CHROME_BROWSER_UI_WEBUI_WUG_VIEW_MODEL_H_
diff --git a/components/webui_generator/web_ui_view.cc b/components/webui_generator/web_ui_view.cc
deleted file mode 100644
index 54b8668..0000000
--- a/components/webui_generator/web_ui_view.cc
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "components/webui_generator/web_ui_view.h"
-
-#include "base/bind_helpers.h"
-#include "base/memory/scoped_ptr.h"
-#include "components/login/localized_values_builder.h"
-#include "components/webui_generator/data_source_util.h"
-#include "components/webui_generator/view_model.h"
-
-namespace {
-
-const char kEventCallback[] = "eventFired";
-const char kContextChangedCallback[] = "contextChanged";
-const char kReadyCallback[] = "ready";
-
-const char kMethodContextChanged[] = "contextChanged";
-
-} // namespace
-
-namespace webui_generator {
-
-WebUIView::WebUIView(content::WebUI* web_ui, const std::string& id)
- : View(id), web_ui_(web_ui), html_ready_(false), view_bound_(false) {
-}
-
-WebUIView::~WebUIView() {
-}
-
-void WebUIView::Init() {
- View::Init();
- AddCallback(path() + "$" + kEventCallback, &WebUIView::HandleEvent);
- AddCallback(path() + "$" + kContextChangedCallback,
- &WebUIView::HandleContextChanged);
- AddCallback(path() + "$" + kReadyCallback, &WebUIView::HandleHTMLReady);
-}
-
-void WebUIView::SetUpDataSource(content::WebUIDataSource* data_source) {
- DCHECK(IsRootView());
- webui_generator::SetUpDataSource(data_source);
- ResourcesMap* resources_map = new ResourcesMap();
- SetUpDataSourceInternal(data_source, resources_map);
- data_source->SetRequestFilter(base::Bind(&WebUIView::HandleDataRequest,
- base::Unretained(this),
- base::Owned(resources_map)));
-}
-
-void WebUIView::OnReady() {
- View::OnReady();
- if (html_ready_)
- Bind();
-}
-
-void WebUIView::OnContextChanged(const base::DictionaryValue& diff) {
- if (view_bound_)
- web_ui_->CallJavascriptFunction(path() + "$" + kMethodContextChanged, diff);
-
- if (!pending_context_changes_)
- pending_context_changes_.reset(new Context());
-
- pending_context_changes_->ApplyChanges(diff, nullptr);
-}
-
-void WebUIView::SetUpDataSourceInternal(content::WebUIDataSource* data_source,
- ResourcesMap* resources_map) {
- base::DictionaryValue strings;
- auto builder = make_scoped_ptr(
- new ::login::LocalizedValuesBuilder(GetType() + "$", &strings));
- AddLocalizedValues(builder.get());
- data_source->AddLocalizedStrings(strings);
- AddResources(resources_map);
- for (auto& id_child : children()) {
- static_cast<WebUIView*>(id_child.second)
- ->SetUpDataSourceInternal(data_source, resources_map);
- }
-}
-
-bool WebUIView::HandleDataRequest(
- const ResourcesMap* resources,
- const std::string& path,
- const content::WebUIDataSource::GotDataCallback& got_data_callback) {
- auto it = resources->find(path);
-
- if (it == resources->end())
- return false;
-
- got_data_callback.Run(it->second.get());
- return true;
-}
-
-void WebUIView::HandleHTMLReady() {
- html_ready_ = true;
- if (ready())
- Bind();
-}
-
-void WebUIView::HandleContextChanged(const base::DictionaryValue* diff) {
- UpdateContext(*diff);
-}
-
-void WebUIView::Bind() {
- view_bound_ = true;
- if (pending_context_changes_)
- OnContextChanged(pending_context_changes_->storage());
-
- GetViewModel()->OnViewBound();
-}
-
-} // namespace webui_generator
diff --git a/components/webui_generator/web_ui_view.h b/components/webui_generator/web_ui_view.h
deleted file mode 100644
index bfb8c9f..0000000
--- a/components/webui_generator/web_ui_view.h
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_UI_WEBUI_WUG_WEB_UI_VIEW_H_
-#define CHROME_BROWSER_UI_WEBUI_WUG_WEB_UI_VIEW_H_
-
-#include <string>
-
-#include "base/bind.h"
-#include "base/containers/hash_tables.h"
-#include "base/macros.h"
-#include "base/memory/ref_counted_memory.h"
-#include "base/memory/scoped_ptr.h"
-#include "components/login/base_screen_handler_utils.h"
-#include "components/login/screens/screen_context.h"
-#include "components/webui_generator/export.h"
-#include "components/webui_generator/view.h"
-#include "content/public/browser/web_ui.h"
-#include "content/public/browser/web_ui_data_source.h"
-
-namespace base {
-class DictionaryValue;
-}
-
-namespace content {
-class WebUI;
-}
-
-namespace login {
-class LocalizedValuesBuilder;
-}
-
-namespace webui_generator {
-
-using Context = login::ScreenContext;
-
-/**
- * View implementation for the WebUI. Represents a single HTML element derieved
- * from <web-ui-view>.
- */
-class WUG_EXPORT WebUIView : public View {
- public:
- WebUIView(content::WebUI* web_ui, const std::string& id);
- ~WebUIView() override;
-
- // Should be called for |data_source|, where this views will be used.
- // Sets up |data_source| for children of |this| as well, that is why this
- // method only shouldn't be called for non-root views.
- void SetUpDataSource(content::WebUIDataSource* data_source);
-
- // Overridden from View:
- void Init() override;
-
- protected:
- using ResourcesMap =
- base::hash_map<std::string, scoped_refptr<base::RefCountedMemory>>;
-
- content::WebUI* web_ui() { return web_ui_; }
-
- template <typename T, typename... Args>
- void AddCallback(const std::string& name, void (T::*method)(Args...)) {
- base::Callback<void(Args...)> callback =
- base::Bind(method, base::Unretained(static_cast<T*>(this)));
- web_ui_->RegisterMessageCallback(
- name, base::Bind(&::login::CallbackWrapper<Args...>, callback));
- }
-
- // Overridden from View:
- void OnReady() override;
- void OnContextChanged(const base::DictionaryValue& diff) override;
-
- virtual void AddLocalizedValues(::login::LocalizedValuesBuilder* builder) = 0;
- virtual void AddResources(ResourcesMap* resources_map) = 0;
-
- private:
- // Internal implementation of SetUpDataSource.
- void SetUpDataSourceInternal(content::WebUIDataSource* data_source,
- ResourcesMap* resources_map);
-
- // Called when corresponding <web-ui-view> is ready.
- void HandleHTMLReady();
-
- // Called when context is changed on JS side.
- void HandleContextChanged(const base::DictionaryValue* diff);
-
- // Called when both |this| and corresponding <web-ui-view> are ready.
- void Bind();
-
- // Request filter for data source. Filter is needed to answer with a generated
- // HTML and JS code which is not kept in resources.
- bool HandleDataRequest(
- const ResourcesMap* resources,
- const std::string& path,
- const content::WebUIDataSource::GotDataCallback& got_data_callback);
-
- private:
- content::WebUI* web_ui_;
- bool html_ready_;
- bool view_bound_;
- scoped_ptr<Context> pending_context_changes_;
-
- DISALLOW_COPY_AND_ASSIGN(WebUIView);
-};
-
-} // namespace webui_generator
-
-#endif // CHROME_BROWSER_UI_WEBUI_WUG_WEB_UI_VIEW_H_
diff --git a/components/webui_generator_strings.grdp b/components/webui_generator_strings.grdp
deleted file mode 100644
index d29818e..0000000
--- a/components/webui_generator_strings.grdp
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- This strings are used in WebUI views created by WUG framework. Resource id is
- deduced from string id and view's type. For example, if view's type is
- 'foo_bar' and string id is 'some_string', resource id should be
- 'IDS_WUG_FOO_BAR_SOME_STRING'.
--->
-<grit-part>
-</grit-part>