| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|\ |
|
| |
| |
| |
| | |
Change-Id: Ia6f5c55e07c7f60712472c8e850b7c4595c46671
|
|\ \ |
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Around ADT 15 or so we introduced a bunch of optimizations to run AAPT
much less frequently, since with large projects it can take a long
time, and end up blocking the UI if you try to save twice.
Unfortunately, one side effect of this change is that if you edit only
the *value* of an attribute, we will not re-run aapt, which means
that if you set the value to a bogus value, you will get no error
message until the next time AAPT runs (usually when you try to run).
This changeset fixes this. We already have the attribute metadata
which aapt uses, so now, when an XML file is changed and saved, we
process it with an XML pull parser, and validate all the Android
namespace attributes. If any are found to not be correct, then we
request a full AAPT process, which will then display errors as
appropriate.
Change-Id: I374c19648e29c27c6d82616b3ee602cb2343cd3a
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If the user enters an activity title like "Android's Tools" in the new
template wizard, an invalid strings.xml file is generated, since the
apostrophe is not properly escaped.
To fix this, there's a new string conversion method in the template
engine, "escapeXmlString", which will perform all the necessary
conversions.
It also adds two other XML escaping functions: one to escape text to
be suitable for XML attribute values, and one to be suitable for XML
text values.
Finally, when verifying this, I discovered that if I inserted
ampersands in the MasterDetail template, I ended up with errors in
various places there a filename was derived from the input string. To
help make this work better, there's also a new "extractLetters" method
which pulls all the characters out of a string (effectively stripping
whitespace and punctuation).
In addition to the above 4 new string conversion methods, the
templates have been updated to use them, and the template format
documentation updated.
Change-Id: I4d4e854ab78d63bc86b8eb0fb9d92246534615e7
|
|
|
|
| |
Change-Id: I1fd07245e68b39af16a38bcec8a711867e87e5c6
|
|
|
|
| |
Change-Id: I1b39ee439a532f3f6758be35b569948e2e906665
|
|\ |
|
| |
| |
| |
| |
| |
| |
| | |
<application android:backupAgent> needs a class selector
that accepts classes deriving from BackupAgent.
Change-Id: Id2e72e85967bc31a67d1eff2c342bcf7acc2cb3c
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This changeset changes the "reuse" behavior of the layout editor to no
longer reuse the same layout editor when you are switching between
alternate layout files for the same layout resource, such as
layout/foo.xml and layout-land/foo.xml. This lets you more quickly
switch back and forth and inspect differences between the layouts,
etc. There is also an option in the Android > Editors panel to turn on
single editor sharing again.
The biggest part of the changeset, by far, is a cleanup of the
ConfigurationComposite class and associated code. This was necessary
not just to support the above feature (where we need to "back out" UI
changes when you've made a configuration edit which results in a
different file getting opened), but it's also an important preparation
for multi configuration editing, where we need to be able to switch
configuration settings in and out of a single configuration editor,
etc.
The configuration data itself is now in a separate Configuration
class; the UI is in ConfigurationChooser, and the configuration
matching code is in ConfigurationMatcher. There's also a new Locale
class to track language/region pairs instead of using 2-element
ResourceQualifier arrays. The various menu listeners are also in
separate UI classes now. While there are new classes, most of the
configuration matching algorithm is unchanged, just moved to a new
class and the UI syncing and configuration data lookup replaced.
Bitmasks are used to handle configuration changes, such that updating
multiple related attributes (e.g. a rendering target change also
causes a theme change if say Holo isn't available) can now be processed
just once with a single change call.
(Various other cleanup too.)
Change-Id: I04ac969f46824321be3db0c487ef077c03cc6012
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This changeset moves most constants into the SdkConstants
class, and gets rid of AndroidConstants and LintConstants.
It also migrates all non-ADT specific constants from
AdtConstants into SdkConstants. It furthermore moves various
other constants (such as those in XmlUtils and ValuesDescriptors)
into the constants class. It also fixes the modifier order
to be the canonical modifier order (JLS 8.x).
Finally, it removes redundancy and combines various constant
aliases such that we don't have both NAME_ATTR and ATTR_NAME
pointing to "name", etc.
Change-Id: Ifd1755016f62ce2dd80e5c76130d6de4b0e32161
|
|
|
|
|
|
| |
This is to support a template name update in issue 36890.
Change-Id: I47458c094c8dd601e086da0cb1c6fafb7680b58c
|
|
|
|
|
|
|
|
| |
For now, text-oriented widgets declare their default action to
be to set the text attribute. Also hook up the default rename
keybinding to setting the id.
Change-Id: I14e8e06d0842759b1ac05e7e9494deb30b3cc40f
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This changeset fixes the value completion such that you can add custom
values into properties that also have enum fields.
Rather than have separate completion routines for properties based on
whether they contain an enum, a flag, a reference, etc., have a single
completer which considers all the various formats and combines the
results.
In addition to combining results, this now also offers completion on
dimensions, and offers theme attribute values for references as well.
Change-Id: Idbc1799a34b3a3f14ea567654953925bf12afb8f
|
|
|
|
|
|
|
|
|
|
| |
Removed ILogger from ide_common
Removed ISdkLog (and implementations) from sdklib
Moved all existing code to com.android.utils.ILogger
which is located in common.
Change-Id: Icd674d4b8d10f6ae8b60a83acb43cc53c7a52137
|
|
|
|
|
|
|
| |
Move stuff out of sdklib into common and ide_common.
Remove androidprefs and move the one class into common.
Change-Id: I71d126a13cf2ba413692e29616f4968a37d7b33a
|
|
|
|
|
|
|
|
| |
Without this there are runtime class loading failures in the
layout editor since sdklib is in base and it refences layoutlib_api
which in turn references kxml.
Change-Id: I65a76a01266fe3608db9752104d3ae4e2a9d48b7
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This changeset improves the way the RelativeLayout editing support in
the layout editor handles deletions and moves.
First, during a move, if the move is simply within the same layout,
then the layout constraints are left alone such that if you for
example have
A
v
B < C < D
and you move B up to be next to A, you end up with
A < B < C < D
(It will however remove cycles if the move would result in them.)
Second, it now handles deletion better where deleting a view will
cause all references to any deleted views to be replaced by transitive
constraints.
For example, if you hve
A < B < C < D
and you delete B and C, you end up with
A < D
Change-Id: Icb9d3552e60aee20192f7941fe52be71ba52557f
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move resources and com.android.util.Pair into layoutlib_api
where they belong since layoutlib depends on them and we need
to control the API.
Made a copy of Pair to stay in common.jar but moved it to
com.android.utils.Pair (the one in com.android.util.Pair is
marked as deprecated to prevent usage where applicable).
Also moved XmlUtil and PositionXmlParser to com.android.utils
to match Pair.
Change-Id: I21d7057d3f2ce604f86a3bb1fa3c130948c93b89
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
First, this changeset allows the arguments passed to --sources and
--classpath (renamed from --classes) to specify not just a directory,
but to specify a path as well. This might make it easier to invoke
lint from scripts if you have a path variable, so you don't have to
split it into multiple arguments.
Second, it makes the lint task in ant use these, such that any
build.xml customizations to the source paths or class paths are
automatically used rather than relying on lint's default structure
check.
Change-Id: Id8e4caf0010d7fd7245844b3099b5dc0607f0aba
|
|
|
|
|
|
|
|
|
|
| |
Certain attributes in the attrs.xml file are marked as
@hide via a preceding XML comment. These should be
removed from the ElementDescriptors and the
AttributeDescriptors such that they don't show up in
code completion etc.
Change-Id: I3a7428e86afe04795939d7de1a27fd1cbb2c76cb
|
|
|
|
| |
Change-Id: I9121bfda320c6af123709672a0043aeda42590f9
|
|
|
|
| |
Change-Id: Idde24b6b893d1029d48ba32766110a6a3cdf73c6
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When you edit Java files, we automatically mark API errors - calling
an API which requires a higher minSdkVersion than the current one
specified in the manifest.
If you then switch to the maniest editor, change the value to the new
desired API level, save the file and come back, the API errors are
still marked in the Java file.
The reason this happens is that the API checker runs incrementally on
Java files, but it's affected by manifest values. This has been
reported by multiple users.
We can't easily perform incremental analysis in this case, and we
don't want to kick off a global rescan of lint, but to avoid
confusion, we can *clear* all lint markers when the minSdkVersion or
targetSdkVersion change. This will make confusing errors go away, and
incremental warnings will be shown when the user next edits the file.
It has the downside that a user who runs Lint on the whole project,
then edits the SDK version and saves the file will suddenly find all
the lint errors cleared, but they can just re-run lint, which is
hopefully a smaller problem than seeing confusing error messages (at
least two users reasonably did not realize that these were stale
errors and thought there was a remaining problem).
Finally, tweak the ManifestInfo class a bit; add nullness annotations,
fix an incorrect usage from the project wizard, fix bug in version
name computation and add a getter to return the code name of the
version name.
Change-Id: I5872733d2f12a4950264d08e689c7c0c025c586e
|
|
|
|
|
|
|
|
|
|
| |
The visual refactoring for converting a LinearLayout with a <TextView>
and an <ImageView> adjacent into a single <TextView> using a compound
drawable, needed to properly handle spacing between the two
widgets. This changeset updates it to convert margins between the
views into a single drawablePadding attribute.
Change-Id: Idb077e3324c279d41fdc0baa68008fe862d8181a
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This checkin improves the handling of ?attr and ?android:attr theme
references, such that
(1) The API check considers theme references, and for example flags
usage of ?android:attr/dividerHorizontal if your minSdkVersion is
lower than 11
(2) Adds theme reference completion to the XML code completion.
Change-Id: I2049b828e413802ac81579294f515fb0a4faccdf
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This checkin adds a new LocaleManager which provides data related to
locales and regions, such as
(1) The right flag icon to use for a given language and region
combination
(2) The full name of a language code
(3) The full name of a region code
Before this CL, the flag icons were determined by looking at the
Locale instances installed on the machine, and matching up the
language codes with the corresponding country codes. However, that
only works for the locales you have installed -- and on a typical
Linux installation I tried, there were no other locales, and on a Mac
OSX install, many common locales (such as those referenced by standard
Android apps) were not included.
Instead, we now have a static map of bindings from language to region
(though if the language matches the default locale on the system, it
will use the associated country of that locale).
The full names of the languages and regions are also provided. This
allows us to display the corresponding name of a language in the
locale menu, such that users don't for example confuse country codes
and locales; "ca" isn't Canadian but Catalan, and so on.
This checkin also adds all the known language codes into the Language
dropdown for the configuration selector, and displays the
corresponding language name next to the selection. Similarly, it also
sets the relevant flag icon as the page icon for the value XML files.
Change-Id: I2a3a6f037a745a6c56aedb38ecd71ba25324f6fb
|
|
|
|
| |
Change-Id: Id860688785157c7e3921e1a2f4f2260fdd78fd3f
|
|
|
|
|
|
|
|
| |
Attempt to work with ambiguous ProGuard path definitions
(e.g. where : is used both as a path separator and in
paths like D:\foo\bar)
Change-Id: I63c3488b59ebfeb44e92ab84ec302932947ab909
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The persistent metadata storing AdapterView and Fragment bindings
predates the new tools namespace handled by aapt, and uses XML
comments. This changeset updates the code to using tools: attributes
instead.
Note that it doesn't migrate old settings; I could not find a way to
do that performantly (and in some cases the code which reads a setting
has no access to the document containing the metadata, only to parsed
XML nodes, so it cannot mutate it on demand to the new format.)
However, this shouldn't be a big deal; for fragments for example the
fragment message states what needs to be done to set up a binding.
This CL also fixes a couple of bugs around setting up these views
which should make switching views faster (it used to do the work
twice), and avoids a rare concurrent modification exception.
Change-Id: Id6a8a9a1649c1b9f6f5fc6a9fbc3a6e5b0512dd6
|
|
|
|
|
|
|
|
|
|
|
| |
Lots of miscellaneous fixes to the GridLayout support in ADT. The
changes include using the GridLayout state (via reflection) to
populate the model; caching the grid model for performance, and a
bunch of fixes to the code which handles insertions and
removals. There are also some new unit tests. This is not done, but is
an improvement over the current state.
Change-Id: I4851153d3e409630c2d2024c4894d1ad1535fb47
|
|
|
|
| |
Change-Id: I7121b5f0e3714fec705387603f641bc14ed0ab3e
|
|
|
|
|
|
|
|
|
|
|
|
| |
This changeset adds a validator to the assign/edit id dialog used in
the layout editor such that the user gets a warning if picking an id
which is already defined within the same layout.
Also cleans up the Rules API for adding a validator and makes the
generic resource validator handle both the case of requiring a unique
name and requiring an existing name.
Change-Id: Id9642c3bcd326f9734cf98c98f6799b67e11a4ae
|
|
|
|
|
|
|
|
|
|
| |
The XML formatter did not handle <string> definitions where the
content contained nested HTML (where the tags included other tags than
<u>, <i> and <s>). An exmaple of a string which formats poorly is in
the testcase for issue 32619 (which is an issue unrelated to
formatting).
Change-Id: Ie70a0f0097aca99c40953a6e5dd4408f903d19e2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Eclipse 4.2 includes analysis support for @Nullable and @NonNull
annotations. However, it requires these annotations to be *repeated*
on every single method implementing or overriding a superclass or
interface method (!).
This changeset basically applies the quickfixes to inline these
annotations. It also changes the retention of our nullness
annotations from source to class, since without this Eclipse believes
that a @NonNull annotation downstream is a redefinition of a @Nullable
annotation.
Finally, the null analysis revealed a dozen or so places where the
nullness annotation was either wrong, or some null checking on
parameters or return values needed to be done.
Change-Id: I43b4e56e2d025a8a4c92a8873f55c13cdbc4c1cb
|
|
|
|
|
|
| |
Also fix a couple of NPEs.
Change-Id: Iab4544d3538d370dd76d96e3a97d49555b7c6359
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fix the code completion in manifest files such that when completing
the minSdkVersion value, it lists not just the API numbers but the
Android version and code names for all versions. This takes advantage
of the new version name table, where the previous versions only listed
names it could look up from the installed SDKs.
This changeset also uses the same mechanism for completing
targetSdkVersion.
Change-Id: I61f06047ba4bf112da3b980c0e85325e9f9ab7c5
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This changeset fixes code completion in style definitions (which did
not work when the attribute being completed was not a known Android
attribute, but was referencing one).
It also updates the various code completion unit tests, which were no
longer passing because the golden files contained the attribute types
in a different order (it now deliberately lists references after other
types, like colors). It also changes the default editors used in
completion unit tests from the legacy editor types to the new common
editor type, and closes the editors after each completion, to avoid
out-of-memory scenarios.
Change-Id: I5f947c9175524f12cb4d0a5590b0bab23a4a07dc
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This changeset adds several new templates, to create a new project, a
new activity, a new custom view, etc.
More importantly, it contains support for these wizards (and the
corresponding code generation) to be driven by templates.
A wizard contains metadata which provides a name, description and icon
for the template, as well as a list of parameters, along with type and
constraint metadata for those parameters. When a wizard is created for
this template, it automatically adds UI elements to input the
parameters and to validate the input. Parameters can also specify
their default values as templated expressions using the other
variables on the page, so in the New Blank Activity wizard for
example, editing the activity name automatically updates the suggested
layout name, by repeatedly evaluating a template expression to compute
a layout name from an activity name.
There's a recipe file for each template which states what actions to
take to create the template. In addition to obviously copying
resources (such as icons and jar files) and instantiating templates
(to rewrite text using variables and FreeMarker logic), it can also
merge XML contents (to for example insert activity registration
metadata into the manifest file, or add string definitions to the
strings.xml file), and it can cause files to be opened when the
template is created.
Tne new wizards also use JFace's decorator support to provide help and
to mark text fields that contain errors, when one or more of the page
fields do not validate, as well as to show tip text along the bottom
of the page. One example of this is that it explains what a "package
name" is when the package field has focus.
This changeset also contains a "Template Development Wizard" which
lets you point to a local directory containing a template definition,
and run a test wizard from there. This is useful for developing,
debugging and testing templates.
Change-Id: I08e7d2464a1ef00d09517f0154c42681249a7ff6
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The ManifestMerger library needs to look up the prefix to use for the
Android namespace, and the Document.lookupPrefix method is not
implemented by the Eclipse DOM implementation (which throws an
exception). However, we have an implementation of this in the ADT
plugin.
This changeset creates a new XmlUtils class in the common/ library
(which is accessible by both ADT and the manifest merger, and the
anttasks where the manifest merger is used), and moves the namespace
prefix lookup code in there. It also moves the XML escape methods
into that class. It also adds a new method to the ManifestMerger for
merging directly from documents (rather than files), and makes sure
that all the merging code goes via the prefix utility method rather
than calling the document.lookupPrefix method.
Finally, it moves the various string constants associated with XML
namespaces into the single XmlUtils class, since these were spread
across several different classes before (and many of them are needed
in the XmlUtils class).
The vast majority of the diffs in this changeset are related to simple
import statement changes to reflect the new locations of these
constants.
Change-Id: Ib8f3d0e5c89e47e61ea509a23925af7b6580abee
|
|/
|
|
|
|
|
|
|
|
| |
This fixes issue 31414:
Extract style from XML layout doesn't allow . (dot) in the name
The root issue is that in value files, you can use "." as part of the
resource name; it gets remapped to _ in the R file.
Change-Id: I59bf9d7ceb36be832dde64f557d023dd6d1d29e0
|
|
|
|
| |
Change-Id: Ia6682382a445ca770691771f620a10b7d408c152
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This changeset replaces the configuration chooser with a new UI.
First, the two lines of comboboxes have been replaced by a toolbar,
which will wrap to two lines if it cannot fit on a single
line. However, it tries hard to avoid this scenario by using icons and
brief labels. For example, the rendering target is displayed as an
Android icon along with just "4.0" instead of "Android
4.0". Similarly, the "Other" locale is just shown as a globe icon, and
for example in the Device list "4.65in 720p (Galaxy Nexus)" is display
as just "Galaxy Nexus".
Second, the "current configuration" label is now a dropdown instead.
The text of the label displays the current configuration as before
(though using the brief name, e.g. "layout-land" instead of "Landscape
Configuration". In addition, it's a dropdown, and opening the menu
will display all other available configurations for this file. Thus,
if you have a special landscape version and a special tablet version
of a particular layout, the menu will contain default, landscape and
tablet (where the menu items display the full configuration names such
as "Landscape Orientation"). In addition, the configuration menu also
contains "Create New...", which is the new location for the Create
button which used to be in the toolbar itself.
Third, there is a new "Activity" dropdown. This displays the current
activity associated with this layout, next to an Eclipse "class" icon.
It is initially populated with our best guess of what the activity
is. The chosen activity determines which theme is initially assigned
to a layout (for example when there is a Manifest registration of a
theme to an activity). In the future we will use this facility to
drive other features as well, such as preview rendering the action bar
(where we need to know the associated activity) or assisting with
creating click handlers. The Activity dropdown menu also contains a
"Open <Activity class>..." action for jumping to the associated Java
code. The chosen activity is persisted as an XML attribute in the
layout so it should be preserved across IDE sessions and shared among
developers.
Fourth, all the dropdown menus are now native SWT menus rather than
dropdown menus, which means we can use icons, proper separators, and
nesting. The locale menu now shows flag icons next to each region (and
when a locale is chosen the corresponding icon is shown in the
configuration toolbar). In the Theme menu we no longer need to use
"-------" ASCII separators, we can use proper native menu separators
instead. And the Theme menu is now nested; rather than a really long
list of options, the menu is grouped into related sections:
* Currently selected theme
* Project Themes >
* Manifest Themes >
* Holo Themes >
* Holo.Light Themes >
* DeviceDefault Themes >
...
* All >
* Open "<current theme>" Declaration...
Fifth, the device configuration combobox has been replaced by three
inline icon radiobuttons, showing portrait, landscape and (if enabled)
square. This makes it easy to switch orientation through a single
click.
Sixth, the UI mode (Normal/Car/Dock) and Night mode (Day/Night) are no
longer directly shown in the configuration chooser since they are not
used frequently enough to warrant persistent space in the always
visible toolbar. Instead, there is an "Edit Configuration" icon on the
left you can click which brings up a full editor dialog where all the
previous combo boxes appear, along with the generic configuration
qualifier selection dialog. Here you can make more specific edits to
the current configuration state.
There are various fixes as well. For example the whole toolbar is
hidden during platform data loading and made visible at the end. When
creating a new configuration file, that new configuration file is
opened after creation. We now track whether the current theme (stored
in the IDE persistent property) is a project theme or a framework theme.
Change-Id: Ic8d9817c7bc4dbcae4535b6b9222393fb49cfde9
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This changeset improves the custom view handling such that XML code
completion offers any custom attributes (along with documentation
tooltips and type information). This is done by finding any
declare-styleable attributes defined in the project defining the
custom view. In particular, this will also work for the GridLayout
library project shipped as part of the android.support package.
The fix is not tied to completion; it's improving the metadata
descriptors computed for custom views, so this fix for example also
makes these custom attributes show up in the property sheet in the
layout editor.
Finally, this changeset fixes a couple of bugs in this area:
- One initialization path was not looking up custom views for unknown
descriptors, this might be the fix for
http://code.google.com/p/android/issues/detail?id=23020
- There was a bug in the code which looks up the namespace prefix to
use for a given namespace URI: it would return the default Android
prefix for some non-Android URIs.
- Small performance tweak to avoid regexp construction in a loop where
it's not needed
Change-Id: I55dfcea6e6ea9d7c38e18a47b757678176facbd2
|
|
|
|
| |
Change-Id: I9b8ca8e0384f1cb2343d13e8e43b268c63ed4dcb
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix 29277: Strings XML formatter: unwanted whitespaces
inserted when using CDATA section
http://code.google.com/p/android/issues/detail?id=29277
This changes the XML formatter to keep CDATA sections
not containing newlines to keep the CDATA on the same
line without indentation or newlines, and multi-line
CDATA sections to be separated on their own line and
flushed left.
Change-Id: I8576cff87e2880b0264479cc24c54cecc7841340
|
|
|
|
| |
Change-Id: I3877a7418da193cbe3759f25daafa3309bb8c05a
|
|
|
|
|
|
| |
This reverts commit 27dac06bfc4297dc9a018edc534f44ecf96cd724.
Change-Id: I6708bd4091f0cb677484669479357d479b9db5fa
|