aboutsummaryrefslogtreecommitdiffstats
path: root/eclipse
Commit message (Collapse)AuthorAgeFilesLines
...
* | | Merge "gltrace: cleanup state transformations"Siva Velusamy2012-01-1710-103/+306
|\ \ \ | |/ /
| * | gltrace: cleanup state transformationsSiva Velusamy2012-01-1710-103/+306
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, gl calls can only modify existing GL state variables. This patch, adds support for GL transformations that can add items to existing list properties. As a result, eglCreateContext can now create a specific context (ES1 or ES2) on demand. A new IStateTransform interface is introduced, and the existing GLStateTransform has been renamed to PropertyChangeTransform that implements this interface. This patch also enables highlighting of state variables that change between different GL Calls. Change-Id: I16fc8286acd6374d66e59e1f7ba76310bdacab5d
* | | Merge "Update changes.txt for ADT 17 and Tools r17"Tor Norbye2012-01-131-0/+44
|\ \ \ | |/ / |/| |
| * | Update changes.txt for ADT 17 and Tools r17Tor Norbye2012-01-131-0/+44
| | | | | | | | | | | | Change-Id: I819431ec82f0de998b1427e101dc6df426f15cbf
* | | rcp: add swt fragments for necessary platformsSiva Velusamy2012-01-121-0/+4
| | | | | | | | | | | | Change-Id: Ied32345259a8f660e44c3d622ec0487ba36cd53d
* | | rcp: update build script to point to prebuilts/eclipseSiva Velusamy2012-01-121-4/+4
|/ / | | | | | | Change-Id: I64bd4569d939cf561364f4073dc88744f64588be
* | gltrace: state view improvementsSiva Velusamy2012-01-1214-279/+362
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The GL State View currently utilizes a single tree and switches the underlying model depending on which editor is active. This causes loss of context when switching between editors. This patch makes the state view behave more like the Eclipse Outline View. State View now inherits from PageBookView, and it allows each editor to supply whatever controls it wants to display in the view. Each editor supplies an instance of StateViewPage based on the state of the trace in the editor. This patch also moves the state information out of the GLTrace object and into the StateViewPage. Change-Id: Ied827ffc53ebba835f1617126068eb3de50f12d4
* | gltrace: associate state transformations with calls.Siva Velusamy2012-01-123-15/+19
| | | | | | | | | | | | | | | | Currently, the top level GLTrace object holds a list of state transformations associated with each GLCall. This patch moves the state transformations into the GLCall itself. Change-Id: I320c4b38d1ba19c230adc12c71d57f911582b55a
* | Add manifest editor methods to add and remove permissionsTor Norbye2012-01-112-2/+114
| | | | | | | | | | | | | | | | | | | | | | | | This changeset adds two new methods to the manifest editor: 1) Add the given list of permissions (if necessary) 2) Remove the given list of permissions (if present) This method will be used by quickfixes for missing and unused permissions detected by lint. Change-Id: I335c869b2301761db8be34ec9ff61fe02d5d42b6
* | gltrace: do not keep the protobuf message in memorySiva Velusamy2012-01-106-88/+100
| | | | | | | | | | | | | | | | | | | | | | | | | | Currently, the original protobuf message is retained in memory as part of a GLCall. It turns out that this takes up a significant amount of memory. This patch extracts the necessary fields out of the protobuf and puts them in GLCall. No references to the protobuf are maintained in memory anymore, although they can be recreated by reading in the file again. Change-Id: I93cb8a41a1d8b274ea14b9ae4cde034f0ce70f83
* | gltrace: map calls to frame after sort by start time.Siva Velusamy2012-01-102-20/+32
| | | | | | | | | | | | | | | | | | | | | | | | If the trace contains multiple contexts, calls from multiple contexts may be out of order. Hence the calls are sorted by start time when the trace is read. Currently, calls are assigned to frames when they are first read in from the trace file. This patch performs this assignment once the calls are sorted. Change-Id: I7a1b51fac18249cb965756b567d4245d783647ee
* | gltrace: create call duration mini mapSiva Velusamy2012-01-103-599/+554
| | | | | | | | | | | | | | | | | | Having a combined frame selector + call duration viewer seemed confusing, so this patch removes the frame selector canvas, and moves the call duration view to the right of the table. The call duration view now looks like a mini map of the calls displayed in the table. Change-Id: I82827642aa462809065d1a7945f8903bd6a99e38
* | Add lint checks: String format, Casts, Security, Imports, /sdcardTor Norbye2012-01-092-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changeset adds several new Java parsetree-based lint detectors: (1) String format checker. This checks several issues related to formatting strings (%1$s), such as - Is the string format valid? - Is the string format consistent between different translations, e.g. if argument #1 is of type "s" in locale A, is it also of type "s" in locale B? - Is the string format being called from Java with arguments of the right type? - Are strings which are not supposed to be formatted (e.g. ends with a %) passed to String.format? (2) View Cast checker. Looks at the views associated with specific id's in layouts, and makes sure that any casts to views returned by findViewById in Java is cast-compatible with the type in the layout. For example, if you have a layout containing a <Button id="foo">, then a cast to an EditText of findViewById(R.id.foo) would be invalid. (3) A security check which flags file creation calls that pass a context of world-writeable. (4) An "import android.R" checker. This looks for "import android.R" in .java files and warns that this is potentially confusing. (5) A hardcoded "/sdcard" string checker which looks for this prefix in string literals and when found warns that the method Environment.getExternalStorageDirectory().getPath() should be used instead. Change-Id: I14a4656f0ff6a58f25cde1b4bb23f6c47c47fdba
* | Lint Java source supportTor Norbye2012-01-096-161/+183
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changeset adds Java AST support to Lint. There are new interfaces for Java parser and specialized Java detectors. Java detectors can either visit a full parse tree, or they can register interest in specific methods, or Android resource references, or specific AST node types -- or a combination of these. They will then be invoked during an AST visit with the relevant info. This changeset also rewrites the existing detectors that were using String-based pattern checking on Java files to using real AST traversal instead (and it removes the custom Eclipse-specific unused resource detector since the plain one now does the same AST-based analysis that the Eclipse one did.) Change-Id: I4d85f8b785bf41a88dbb29e7017b9c0f588880bc
* | Merge "Add search filter to the lint options dialog"Tor Norbye2012-01-091-13/+164
|\ \
| * | Add search filter to the lint options dialogTor Norbye2012-01-061-13/+164
| | | | | | | | | | | | | | | | | | | | | | | | This changeset adds a Search field to the top of the Lint options panel which lets you filter the displayed options (by category prefix, and id and description substrings). Change-Id: Ie8f4a66fefe0ea4afb12b53d57207925099db7bc
* | | Merge "Lint View Improvements"Tor Norbye2012-01-0920-265/+1446
|\ \ \ | |/ /
| * | Lint View ImprovementsTor Norbye2012-01-0620-265/+1446
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changeset makes a bunch of changes to the Lint Window in Eclipse: * First, it changes the view from a flat table into a hierarchical tree. For any given type of error, there is one top level tree node, and its children are the remaining occurrences of the same error. This makes it much easier to quickly skim through the different issues without having to scroll; if you see an error you want to fix, you can expand the node to jump to all the various occurrences. The top level labels also include a count in the form of "(2 items)" after the error message so you can get a sense of how many warnings were found for each type. * Second, it adds a bunch of new actions to the Lint View toolbar: expand, collapse, configure (more on that later), settings, and ignore file and ignore project (ignore global was already there). It also updates the icons for some of the existing actions; the lint toolbar action and window should look a bit better now. * Third, it adds more columns (such as priority and category) to the lint view, and makes the set of visible columns configurable. You can click on the Configure toolbar action to bring up a dialog to show which columns are included, and this selection is persisted across IDE sessions (and it also persists the column sizes). Furthermore, instead of separate file, path and line number columns, there is now a new "Location" column, which is shown by default instead of the separate file, path and line number columns. This column displays combined info for all three: the file name, the line number, the parent folder and the project name. This includes all the relevant information in a more compact format such that there is more room for the error message. * Fourth, the table now supports sorting: you can click on any column header, and the table will be sorted using that column as a key. (This is not alphabetical but a logical sort defined for each column; for line number and priority it's obviously numerical, but for the default column it continues to be a combination of severity, priority, issue type etc.) Change-Id: I42695988780b493ad90aff5aeb5895e0fd8d3998
* | | Merge "Lint Library Support"Tor Norbye2012-01-0914-167/+484
|\ \ \ | |/ /
| * | Lint Library SupportTor Norbye2012-01-0614-167/+484
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changeset adds support for library projects to lint. Lint now checks all the library projects for errors as well, and projects that depend on global analysis (such as the unused resource detector) will properly handle resource declarations and references across projects. This changeset also cleans up the multi-project handling for the Lint window in Eclipse. The "Run Lint" toolbar action, in addition to operating on multiple selection, now has a dropdown menu for choosing which projects to check (and there are also actions for checking all projects, the current file, and clearing markers). Running lint on a project will also automatically include dependent library projects. Finally, some misc UI improvements: The Lint preference dialog includes buttons for quickly enabling and disabling all the checks; the Lint View includes a Project column which is shown when more than one project is checked, and the file and linenumber columns are now blank when the location does not correspond to a specific file. Change-Id: I733f5258102dfb0aebbc2b75cb02b9ba6ef974e8
* | | Merge "Hide the animated-rotate metadata from the drawable descriptors"Tor Norbye2012-01-091-4/+6
|\ \ \
| * | | Hide the animated-rotate metadata from the drawable descriptorsTor Norbye2012-01-041-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changeset removes the metadata for <animated-rotate> drawables. Turns out the underlying class, android.graphics.drawable.AnimatedRotateDrawable, is marked hidden. Therefore, the <animated-rotate> and its associated attributes should not be shown to the user since they cannot be used. This is the subject of issue http://b.android.com/19248 . While looking at this I added some instrumentation to the addElement method (which adds the manually registered style classes and their attributes). This validates that all added attributes are referenced in the public.xml file. The above <animated-rotate> class is the only class that was not public. However, that's only among the manually registered metadata for animators, drawables and color lists. For the overall attributes (on layouts etc), there are many attributes picked up from the attrs.xml file that do not appear in public.xml. In a subsequent CL we need to add filtering to that import phase as well. Change-Id: Ia6fba23ca47b12cc9a13cc7e203b6d5849dfe103
* | | | gltrace: add a graphical way to select framesSiva Velusamy2012-01-0932-51/+967
| |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds a graphical canvas on which the following elements are rendered: - a scale showing the list of frames - when a particular frame[s] is selected, the duration of the GL calls is displayed as a graph. The GL call table view listens to selection events from this canvas and displays the appropriate function calls based on the selection. Change-Id: Icc8b2bc13547a06103d90f3d5c1f3a764511752b
* | | Merge "Fix locale handling of uppercase/lowercase"Tor Norbye2012-01-0612-24/+49
|\ \ \
| * | | Fix locale handling of uppercase/lowercaseTor Norbye2012-01-0612-24/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changeset fixes issue 23747: i and İ character problem in turkish operating Systems... and probably many other bugs in the Turkish locale. Basically, we had a lot of String.toLowerCase() and String.toUpperCase() calls. This performs locale sensitive conversions, which in many cases is NOT what we want; for "machine readable" conversions we should be using Locale.US which performs no special cases. For more, see http://developer.android.com/reference/java/util/Locale.html#default_locale Change-Id: I996b0e70fb377e8dae484c5811deb8bc9afb684c
* | | | Merge "Fix issue 23940: resource formatter can delete the leading char"Tor Norbye2012-01-062-3/+19
|\ \ \ \
| * | | | Fix issue 23940: resource formatter can delete the leading charTor Norbye2012-01-052-3/+19
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This CL fixes 23940: ADT setting Format XML with Android XML Style can corrupt string resources. There was a bug in the code which attempts to delete leading and trailing spaces in text nodes. It could end up deleting the first character in the string. There's a new unit test covering this scenario now. Change-Id: I59b26563391a2020adae51dd2f42e869afbb9f2c
* | | | Extract positional XML parser into common and fix encoding issuesTor Norbye2012-01-052-26/+6
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The XML DOM parser used by the lint CLI driver (which tracks positions) is needed outside of lint, so pull it out of the lint/cli project, and refactor it such that it does not directly reference the lint Position APIs (but can utilize them when subclassed in lint). In addition, handle non-UTF-8 file encodings. XML files can be encoded in other character sets, and can specify this via the encoding attribute in the XML prologue. Until now, the CLI lint runner would just read the XML file contents in using the default encoding and parse this. Now there's a new utility method which takes a byte[] and infers the desired encoding and uses that to convert the byte[] into a string using the correct encoding. (We can't just pass an InputStream and let the SAX parser handle this on its own because the XML parser needs to access the character stream in order to assign correct node offsets.) This code now also handles the byte order mark more cleanly. There are some new unit tests too to check the new encoding, BOM and offset handling. Change-Id: Ib0badbbe72172e3408c6d5af2413be51280a7724
* | | Add "Extra Text" lint detector.Tor Norbye2012-01-041-0/+16
|/ / | | | | | | | | | | | | | | | | | | | | | | This new lint check looks for XML text content in resource files where text is not expected, such as layout files. This is typically the result of a typo. This CL also improves the command line XML parser's position handling such that it can handle positions on text nodes (until now it just supported element and attribute positions), and similarly for Eclipse. Change-Id: I6f69a8dc725a5b5b19f8ad5bb889ae25ee82600a
* | Merge "gltrace: Enable trace options."Siva Velusamy2012-01-038-178/+445
|\ \
| * | gltrace: Enable trace options.Siva Velusamy2012-01-038-178/+445
| | | | | | | | | | | | | | | | | | | | | | | | | | | Provide user options that control how much data is collected. The user can control whether framebuffer data is read on eglSwap() or glDraw*(), and whether texture images submitted via glTexImage() are read. Change-Id: I99b71d31a985295f0793d94887c0efcc25083fc6
* | | Add @NonNull annotation and configure Eclipse settingsTor Norbye2011-12-229-9/+117
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changeset adds a new @NonNull annotation, to match our existing @Nullable annotation, and it adds configuration settings for Eclipse 3.8 / Eclipse 4.2 which configures the new null analysis there to use our own annotations. Note that the annotations only have source retention so there is no extra size or class-loading overhead. (To use findbugs you'll need to temporarily change retention to class-level.) In upcoming CL's I'll use these annotations to clarify the Lint API and other APIs. Change-Id: I99096d8b8a7e25ef002624d592da7700195a5872
* | | Merge "Set android:ems="10" for EditTexts on drop"Tor Norbye2011-12-222-0/+7
|\ \ \
| * | | Set android:ems="10" for EditTexts on dropTor Norbye2011-12-222-0/+7
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Text fields (without a text attribute) has by default only a single character visible. To work around this, we automatically set the layout_width to match_parent instead of wrap_content in LinearLayouts, but in RelativeLayout and GridLayout etc (and in general) we don't have this, so text fields show up with a not particularly usable size. By setting the ems attribute to 10, the wrap_content size of the text field will show 10 characters which seems like a reasonable default (and when editing the XML or properties it's more obvious what you'd want to modify to get a different size, if not match_parent. Change-Id: Ic0460cea7810076b416f6d7d25a683851465ee9b
* | | Merge "Add textfield to resource chooser for @string resources"Tor Norbye2011-12-224-16/+250
|\ \ \
| * | | Add textfield to resource chooser for @string resourcesTor Norbye2011-12-224-16/+250
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changeset adds a new textfield to the bottom of the resource chooser in some scenarios, such as when editing @string resources via Edit Text in the layout editor. This text field updates to show the @string/resourceName value whenever you update the selection in the filter, but it also allows you to edit the text to anything else, such as a literla String (not a resource). This makes it easy to edit simple labels. See the following adt-dev thread for some background on this: http://groups.google.com/group/adt-dev/browse_thread/ thread/d53e71c2970ce369?pli=1 There is also a new label below the text field which shows the "resolved value". For example, if you've chosen "hello" in the filter list, the new value text will show "@string/hello", and the new label will show "Hello World". This will hopefully make it more obvious what it is you're editing. And, similar to the widget render preview for drawable resources, this makes it easier to browse and pick labels, especially when browsing framework resources. This is currently only enabled for @string and @dimen resources, but we could conceivably add it for other resource types too. Longer term, we need inline editing of widgets (where values entered automatically get translated into resources), but this is a stopgap measure which makes it easier to build simple apps quickly, and which still makes it simple to create new strings or select existing ones from the filter list. (And we have both Lint and the Extract String refactoring to help identify and fix hardcoded strings later on.) While working on this I also discovered the root cause for this bug: 20589: The reference chooser is not usable for framework styles Turns out org.eclipse.ui.dialogs.AbstractElementListSelectionDialog has a handleEmptyList() method which calls setEnabled(false) on the filter list when the list is empty. Crucially, there is no corresponding setEnabled(true) call when the list is made non-empty! When the user switches between framework and project resources, the list is temporarily empty, so the list gets disabled, and that's why it's not responding to menu clicks at all. This changeset also fixes that bug. Change-Id: Id441104d617fa4440daba3da2dc63e2c999f48c1
* | | adtprefs: fix copy/paste errorSiva Velusamy2011-12-211-1/+2
| | | | | | | | | | | | | | | | | | | | | As identified by http://code.google.com/p/android/issues/detail?id=23383 Change-Id: I1387ae149e4f86989538b8497b30fe2f65a979d2
* | | java6: add missing overridesSiva Velusamy2011-12-212-0/+6
|/ / | | | | | | | | | | | | Monitor plugin is not built automatically, so this was not caught earlier. Change-Id: Ib115ac5a7bfb7adaad8b44a724611725ad5a72aa
* | Update SDK codebase to JDK 6Tor Norbye2011-12-21318-292/+1987
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changeset makes the SDK codebase compile with source=1.6 (which means it also requires JDK 6). This means that methods implementing an interface requires @Override's. It also means we can start using APIs like the ArrayDeque class and methods like String#isEmpty(). This changeset looks big but the change is trivial: it's basically adding @Override in all the places that need it, along with some other automatic Eclipse cleanup in certain files (such as reordering imports where they were incorrectly ordered (because older versions of Eclipse didn't always handle inner classes right)), as well as cleaning up trailing whitespace and removing some $NON-NLS-1$ markers on lines where there aren't any string literals anymore. This changeset also sets the source and target JDK level to 6 in the Eclipse compiler .settings file, and synchronizes this file to all the other Eclipse SDK projects. Change-Id: I6a9585aa44c3dee9a5c00739ab22fbdbcb9f8275
* | Merge "pdt: copy over ADT's SourceRevealer method implementation."Siva Velusamy2011-12-213-4/+97
|\ \
| * | pdt: copy over ADT's SourceRevealer method implementation.Siva Velusamy2011-12-213-4/+97
| | | | | | | | | | | | Change-Id: I309af1f1a3a72b4ece1acf5130ec34d88f575c7b
* | | rcp: remove unnecessary plugins.Siva Velusamy2011-12-214-26/+5
|/ / | | | | | | | | | | | | DDMS & TraceView do not depend on JDT anymore, so all those dependencies can be removed from the RCP product definition. Change-Id: If09a4d1c4bf8acb69669713a5052a607f9137663
* | PDT implementation for additional sourcerevealer methods.Siva Velusamy2011-12-201-0/+8
| | | | | | | | | | | | Fix build breakage - currently empty implementations. Change-Id: I48c3c0cc4ab0e7ac2819c8a90e91dfe7da363a31
* | Merge "Remove JDT dependency from DDMS & TraceView."Siva Velusamy2011-12-209-397/+273
|\ \
| * | Remove JDT dependency from DDMS & TraceView.Siva Velusamy2011-12-209-397/+273
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, there are three locations that require the ability to open a Java file containing a particular method: DDMS stack trace, logcat and traceview. The logcat and traceview panels use JDT to open up a Java editor on a method. As a result, these plugins have a dependency on JDT. The stack trace panel uses the DDMS plugin's sourceRevealer extension point to achieve the same purpose. ADT plugin provides an implementation of the sourceRevealer plugin. As a result, this introduces a JDT dependency only on the ADT plugin. This patch makes both the logcat & trace view code to use the same sourceRevealer extension point. As a result, all source code involved in revealing the source of a Java method is present in a single place, and DDMS & Traceview plugins don't depend on JDT anymore. Change-Id: I5b840dc4d6ad45e5611a80cff740101c484a99dd
* | | Fix 23215: "Run Android Lint" throws errors to Java Error LogTor Norbye2011-12-191-14/+15
|/ / | | | | | | | | | | | | | | Make sure that an IResource is accessible before attempting to add a marker to it. And if it isn't, just add the markers to the original resource (usually the project) instead. Change-Id: I679a249ed6e4280f46f041f15990ab79091c4f39
* | Merge "Do not initialize DDMS Console from ADT plugin."Siva Velusamy2011-12-192-19/+30
|\ \
| * | Do not initialize DDMS Console from ADT plugin.Siva Velusamy2011-12-192-19/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When ADT plugin starts up, it attempts to set the console to be used for certain parts of DDMS to be the Android console. Doing this however causes the DDMS plugin to be activated, which launches adb server if it is not already there. Removing this enables us to not touch adb unnecessarily. This patch moves the initialization of the DDMS console into the DDMS plugin, and uses the DDMS console as opposed to the Android console for messages from DDMS. Change-Id: I010a7028a2f22ac4da1c55903e001dcdd329d91f
* | | Merge "Don't assign ids to all newly dropped widgets"Tor Norbye2011-12-193-10/+54
|\ \ \
| * | | Don't assign ids to all newly dropped widgetsTor Norbye2011-12-193-10/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changeset makes the layout editor no longer assign default id's to all newly dropped widgets. In particular, it no longer assigns id's to *Layout widgets, such as LinearLayout and RelativeLayout. These id's are typically unused, and in the case where you do want an id to manipulate the widget you probably want to change it to some more logical name than "linearLayout1" anyway. (It also stops assigning id's to <include> tags, <merge> tags and <Space> widgets.) It also changes the label of the "Edit ID..." context menu action to "Assign ID..." for widgets that do not currently have an id. Change-Id: Ibf0ec25a6a687e34d3eebf828251d196cadb9d54