[chromium-dev] Looking for a chrome developer with skia-fu

2009-12-21 Thread James Hawkins
Hey guys,

I'm trying to triage bug 9589, which is a UMR in skia.  Who would be
good to help triage a skia bug?

Thanks,
James Hawkins

-- 
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev


Re: [chromium-dev] Thoughts on // NOLINT?

2009-12-09 Thread James Hawkins
Agreed.  There are certain situations where conforming to lint
expectations leads to messier code.  I just checked in a CL that
contains a section of lines longer than 80 cols.  Trying to wrap these
lines would make the definitions unreadable.  It's one thing to have
lint report zero errors; it's another to muddy the source to achieve
that goal.  grep'ing through the code, I found hundreds of NOLINTs
though, so maybe we're in the minority.

On Wed, Dec 9, 2009 at 3:48 PM, John Abd-El-Malek j...@chromium.org wrote:
 Lately I've been seeing more and more // NOLINT added to the code.  It's
 great that people are running lint to make sure that they're following the
 guidelines, but I personally find adding comments or gibberish to our code
 for tools that are supposed to make the code quality better happy/more
 consistent a bit ironic.  I also find it distracting when reading the code.
  Am I the only one?

 --
 Chromium Developers mailing list: chromium-dev@googlegroups.com
 View archives, change email options, or unsubscribe:
 http://groups.google.com/group/chromium-dev

-- 
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev


Re: [chromium-dev] buildbot cycle time dashboard?

2009-12-08 Thread James Hawkins
Thanks for the link Eric!  Can someone explain what the Percentage of
failures graph is representing?

Thanks,
James Hawkins

On Tue, Dec 8, 2009 at 2:56 PM, Eric Seidel esei...@chromium.org wrote:
 http://build.chromium.org/buildbot/waterfall/stats

 On Tue, Dec 8, 2009 at 2:51 PM, Dan Kegel d...@kegel.com wrote:
 Hey folks,
 I seem to recall we have a dashboard somewhere showing
 the cycle time of each of our build/test bots, but I can't
 find it.  Can somebody point me to it?

 If it doesn't exist, maybe I'll scrape one together.

 Thanks...

 --
 Chromium Developers mailing list: chromium-dev@googlegroups.com
 View archives, change email options, or unsubscribe:
    http://groups.google.com/group/chromium-dev


 --
 Chromium Developers mailing list: chromium-dev@googlegroups.com
 View archives, change email options, or unsubscribe:
    http://groups.google.com/group/chromium-dev


-- 
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev


[chromium-dev] Request for a reviewer

2009-11-23 Thread James Hawkins
Hi,

Any kind soul willing to review a simple regexp parser?  211 lines.

http://codereview.chromium.org/439008

Thanks,
James Hawkins

-- 
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev


[chromium-dev] RFC: AutoFill++ Design Document

2009-10-20 Thread James Hawkins
Hi, please read the inlined proposed design for AutoFill++.  Any feedback
and comments are appreciated.

Thanks,
James Hawkins



*AutoFill++*
 *Status:* *Draft* (as of 2009-10-16)
*James Hawkins** jhawk...@chromium.org
Modified: Fri Oct 16 2009
*
Objective The purpose of this document is to describe a significant
improvement in the current form autofill feature of Google Chrome.  The
current implementation is less of a form autofill and more of a form
history.  This approach has some limitations:


   - Values are saved per-site, so a Name value saved on penguin.com will
   not be suggested for the Name field on turtle.com.
   - The form must be filled out field-by-field.


I am proposing a new approach to form filling based on the client/server
statistic-based model implemented by Google Toolbar.  This feature provides
the following benefits:


   - Forms are completely auto-filled.
   - Values are saved in user profiles, so the Name field can be auto-filled
   for a form on a site one has never visited.

Background The main problem with the current autofill feature is that
the user must move from field to field to fill out a form, even when each
field can be auto-filled.  The history is site-specific, so the user must
enter form data for each site before autofill can be useful.
 Overview

To use the AutoFill++ feature in Google Chrome, the user must enter personal
information (name, address, email, etc.) into a form on any site and submit
this form.  An infobar will ask the user if he wants to enable autofill, and
if so, AutoFill++ will parse the form data and query the autofill server for
the field types.  If the server knows the field types for the form on this
particular site, AutoFill++ will match the data with the fields; otherwise,
a heuristic based on the names of the fields and how they are layed out on
the form is used to make this match.  The map of (field, data) will then be
saved in the user form data database.  When the user starts entering
information into any other form, a list of saved profiles will be presented
to the user in a selection drop-down.  After picking a profile, AutoFill++
will autofill all fields that it knows about and has information in the
database for.


The user will be able to enter additional profile information at any time
through the AutoFill++ dialog.  This dialog will be shown after the user
first enters form information, and will also be available through the
options dialog.


Note that no personal information will be sent to the autofill server, just
the field types determined by the heuristics.
Detailed Design The first step in implementing AutoFill++ is to rename the
current AutofillForm data structures to better match their behavior:
FormFieldHistory.

Just like Toolbar AutoFill++, the client will implement some strategies to
reduce the bandwitdth on the autofill server.  These include:


   - Ignore common search forms by ignoring forms that contain only one
   textfield with an id of q.
   - Ignore forms using the GET method to submit for data.
   - Ignore forms that have the word search in the target url for that
   form.
   - Using a flag in the query response from the server to tell the client
   whether or not it should upload the data if a user submits this form.



*Data Structure*
*Description*
*AutoFillForm*
The container that holds the (field, value) pairs, parsed from HTML.
*RenderViewHostDelegate::AutoFill*
An interface implemented by a class that wants to be notified of AutoFill
events from the RenderView
*AutoFillService*
The main AutoFill++ class.  Coordinates between the RenderView, the autofill
server, and the PersonalDatabaseManager Each TabContents has one, and each
instance is lazily created.
*AutoFillQueryXMLParser
*Builds and parses XML queries that are sent to and received from the
autofill server.
*AutoFillDownloadThread*
Spins off a new thread to download/upload data to the autofill server.
*AutoFillProfileDialog*
The UI for displaying the AutoFill++ profile dialog.
*PersonalDatabaseManager*
The gateway between the AutoFillService and the profile database.
*AutoFillProfile*
Contains all available personal information provided by the user.  This is
written to and read from the database.


The following is a description of the program flow for a typical autofill
session.


   1. User fills out and submits form.
  - RenderView::willSubmitForm - An *AutoFillForm* is created using *
  AutoFillForm::**Create*, which parses the form fields and values from
  a given WebForm.
 - ViewHostMsg_AutoFillFormSubmitted - Sends an IPC to the browser's
 render view host containing a map of the fields and values.
- *RenderViewHostDelegate::AutoFill-AutoFillFormSubmitted*
   - *AutoFillService::HandleSubmit*
  - *AutoFillQueryXMLParser* - Creates the XML
  representation of the form data, in the format
specified by the autofill
  communication

[chromium-dev] Re: RFC: AutoFill++ Design Document

2009-10-20 Thread James Hawkins
For the mac case, we can probably query this service to populate the
autofill database before the first form is filled out.  The major question I
have is, what happens when the user edits our copy of the personal
information (or the other after we've copied it)?  Should we make these
copies read-only?  Having the profiles out of sync is not desirable.

On Tue, Oct 20, 2009 at 10:25 AM, Mike Pinkerton pinker...@chromium.orgwrote:

 Mac browsers (Safari and Camino, at least) allow the user to auto-fill
 from their me card in the OS X Address Book application, containing
 name, address, and phone number. This would be a nice feature to
 provide to users who have grown accustomed to the functionality.

 Is there any mechanism to allow us to recognize and provide this info
 to the form instead of requiring the user to fill out the form
 completely?

 On Tue, Oct 20, 2009 at 1:13 PM, James Hawkins jhawk...@chromium.org
 wrote:
 
  Hi, please read the inlined proposed design for AutoFill++.  Any feedback
 and comments are appreciated.

 --
 Mike Pinkerton
 Mac Weenie
 pinker...@google.com


--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Re: RFC: AutoFill++ Design Document

2009-10-20 Thread James Hawkins
Sorry, the text isn't very clear about that.  For lack of a better name
(yet), it's a new database that contains the autofill profiles.

On Tue, Oct 20, 2009 at 10:56 AM, Scott Violet s...@chromium.org wrote:

 What is the 'profile database' ? The webdb?

   -Scott


--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Re: RFC: AutoFill++ Design Document

2009-10-20 Thread James Hawkins
I've been looking at this since you brought it up, and I agree that these
values should go into the web db.

On Tue, Oct 20, 2009 at 12:09 PM, Scott Violet s...@chromium.org wrote:

 Do we really want another database file and associated thread?
 Shouldn't we put this in the web db?

  -Scott

 On Tue, Oct 20, 2009 at 10:58 AM, James Hawkins jhawk...@chromium.org
 wrote:
  Sorry, the text isn't very clear about that.  For lack of a better name
  (yet), it's a new database that contains the autofill profiles.
 
  On Tue, Oct 20, 2009 at 10:56 AM, Scott Violet s...@chromium.org wrote:
 
  What is the 'profile database' ? The webdb?
 
-Scott
 
 


--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Re: RFC: AutoFill++ Design Document

2009-10-20 Thread James Hawkins
The current design keys off autofill after the user enters a value in the
name field.  A drop down menu is shown allowing the user to select which
profile to autofill.  If the user does not select a profile, the form will
not be autofilled (using AutoFill++).  I'll try to clarify this in the doc.
Thanks,
James

On Tue, Oct 20, 2009 at 12:43 PM, Darin Fisher da...@chromium.org wrote:

 One security concern:
 Autofill should not give users information to the page until the user makes
 some gesture to accept the autofill choices.

 For the existing autofill, this is done by having the user choose from the
 drop down menu.

 The page can read the value of an INPUT field once it is set, so you have
 to be careful.  I wonder if a solution already exists to support Safari's
 autofill.

 -Darin


 On Tue, Oct 20, 2009 at 10:13 AM, James Hawkins jhawk...@chromium.orgwrote:

 Hi, please read the inlined proposed design for AutoFill++.  Any feedback
 and comments are appreciated.

 Thanks,
 James Hawkins



 *AutoFill++*
  *Status:* *Draft* (as of 2009-10-16)
 *James Hawkins** jhawk...@chromium.org
 Modified: Fri Oct 16 2009
 *
 Objective The purpose of this document is to describe a significant
 improvement in the current form autofill feature of Google Chrome.  The
 current implementation is less of a form autofill and more of a form
 history.  This approach has some limitations:


- Values are saved per-site, so a Name value saved on penguin.com will
not be suggested for the Name field on turtle.com.
- The form must be filled out field-by-field.


 I am proposing a new approach to form filling based on the client/server
 statistic-based model implemented by Google Toolbar.  This feature provides
 the following benefits:


- Forms are completely auto-filled.
- Values are saved in user profiles, so the Name field can be
auto-filled for a form on a site one has never visited.

 Background The main problem with the current autofill feature is that
 the user must move from field to field to fill out a form, even when each
 field can be auto-filled.  The history is site-specific, so the user must
 enter form data for each site before autofill can be useful.
  Overview

 To use the AutoFill++ feature in Google Chrome, the user must enter
 personal information (name, address, email, etc.) into a form on any site
 and submit this form.  An infobar will ask the user if he wants to enable
 autofill, and if so, AutoFill++ will parse the form data and query the
 autofill server for the field types.  If the server knows the field types
 for the form on this particular site, AutoFill++ will match the data with
 the fields; otherwise, a heuristic based on the names of the fields and how
 they are layed out on the form is used to make this match.  The map of
 (field, data) will then be saved in the user form data database.  When the
 user starts entering information into any other form, a list of saved
 profiles will be presented to the user in a selection drop-down.  After
 picking a profile, AutoFill++ will autofill all fields that it knows about
 and has information in the database for.


 The user will be able to enter additional profile information at any time
 through the AutoFill++ dialog.  This dialog will be shown after the user
 first enters form information, and will also be available through the
 options dialog.


 Note that no personal information will be sent to the autofill server,
 just the field types determined by the heuristics.
 Detailed Design The first step in implementing AutoFill++ is to rename
 the current AutofillForm data structures to better match their behavior:
 FormFieldHistory.

 Just like Toolbar AutoFill++, the client will implement some strategies to
 reduce the bandwitdth on the autofill server.  These include:


- Ignore common search forms by ignoring forms that contain only one
textfield with an id of q.
- Ignore forms using the GET method to submit for data.
- Ignore forms that have the word search in the target url for that
form.
- Using a flag in the query response from the server to tell the
client whether or not it should upload the data if a user submits this 
 form.



 *Data Structure*
 *Description*
 *AutoFillForm*
 The container that holds the (field, value) pairs, parsed from HTML.
 *RenderViewHostDelegate::AutoFill*
 An interface implemented by a class that wants to be notified of AutoFill
 events from the RenderView
 *AutoFillService*
 The main AutoFill++ class.  Coordinates between the RenderView, the
 autofill server, and the PersonalDatabaseManager Each TabContents has one,
 and each instance is lazily created.
 *AutoFillQueryXMLParser
 *Builds and parses XML queries that are sent to and received from the
 autofill server.
 *AutoFillDownloadThread*
 Spins off a new thread to download/upload data to the autofill server.
 *AutoFillProfileDialog*
 The UI for displaying the AutoFill++ profile dialog

[chromium-dev] Re: [chromium-checkins] r25367 - in trunk/src: chrome/browser chrome/browser/chromeos chrome/browser/gtk chrome/browser/views chrome/browser/views/extensions chrome/browser/views/fram

2009-09-03 Thread James Hawkins

On Thu, Sep 3, 2009 at 1:58 PM, fin...@chromium.org wrote:

 Author: fin...@chromium.org
 Date: Thu Sep  3 13:58:01 2009
 New Revision: 25367

 Log:
 Fix 9867: Activating the previous/next buttons with the keyboard in the find 
 bar should not change the focus.

 Add param const Event event to ButtonPressed, so that recipients can find 
 out more about the event that generated the ButtonPress message.


 Modified: trunk/src/views/controls/button/native_button.cc
 ==
 --- trunk/src/views/controls/button/native_button.cc    (original)
 +++ trunk/src/views/controls/button/native_button.cc    Thu Sep  3 13:58:01 
 2009
 @@ -4,8 +4,14 @@

  #include views/controls/button/native_button.h

 +#if defined(OS_WIN)
 +#include atlbase.h
 +#include atlapp.h  // for GET_X/Y_LPARAM
 +#endif
 +

Please don't add more dependencies to ATL.  We're in the process of
removing said dependencies.  GET_X/Y_LPARAM can be replaced by
MAKEPOINTS which doesn't require ATL.

--
James Hawkins

--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Re: Omnibox highlighting and PRIMARY selection concerns

2009-08-20 Thread James Hawkins

On Thu, Aug 20, 2009 at 2:41 PM, Peter Kastingpkast...@chromium.org wrote:
 On Thu, Aug 20, 2009 at 2:02 PM, JT Olds jto...@xnet5.com wrote:

 None of the below Linux browsers select the entire URL on the first click:
 Firefox
 Epiphany
 Seamonkey
 Galeon
 Midori
 Konqueror
 Dillo

 In fact, I can't find a single browser that does what you claim on Linux.

 I am on record
 ( http://groups.google.com/group/chromium-reviews/browse_thread/thread/878579dd61c53a00/213560d76d537337 )
 as saying It would be better to just not select the text at all (a la
 Firefox) than to appear to select the text but not update the X primary
 selection.  If the current behavior becomes intolerable, that is the route
 I'd go.
 Intolerable is more than just not how the native controls normally work
 -- it's dramatically interferes with user behavior.  That may well be true
 on Linux.  In that thread, though, we discussed a lot of other alternate
 methods of pasting in a URL, such as paste-and-go, middle-clicking blank
 sections of the tabstrip, etc.  I'd want some Linux UI folks to be able to
 say concretely, we've lived with this for several weeks, and it's clearly
 not enough; we need to change.
 PK


Will you accept opinions of the opposite?  I love our current behavior
and can't stand having to triple-click in Firefox.

Consider the following cases.

a) The user is trying to completely change the contents of the omnibox.
 - Current behavior: 1 click
 - Suggested behavior: 3 clicks

b) The user is trying to modify the contents of the omnibox.
 - Current behavior: 2 clicks
 - Suggested behavior: 1 click

I have no facts to back up this claim, but I'd say that 70% of
operations are of the former (a), with the caveat that this is a
conservative estimate based on my personal experience.

100 operations -
Current behavior: 70*1 + 30*2 = 130 clicks
Suggested behavior: 70*3 + 30*1 = 240 clicks

This analysis only pertains to number of clicks and ignores the issue
of nuking the PRIMARY selection, which I've personally never had a
problem with.

Linux UI devel,
James Hawkins

--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Re: Omnibox highlighting and PRIMARY selection concerns

2009-08-20 Thread James Hawkins

On Thu, Aug 20, 2009 at 3:14 PM, Peter Kastingpkast...@chromium.org wrote:
 On Thu, Aug 20, 2009 at 2:57 PM, James Hawkins jhawk...@chromium.org
 wrote:

 Will you accept opinions of the opposite?  I love our current behavior
 and can't stand having to triple-click in Firefox.

 Consider the following cases.

 a) The user is trying to completely change the contents of the omnibox.
  - Current behavior: 1 click
  - Suggested behavior: 3 clicks

 b) The user is trying to modify the contents of the omnibox.
  - Current behavior: 2 clicks
  - Suggested behavior: 1 click

 I have no facts to back up this claim, but I'd say that 70% of
 operations are of the former (a), with the caveat that this is a
 conservative estimate based on my personal experience.

 I chatted with several people just now about the Mac behavior, since unlike
 Linux, there aren't blowing away my clipboard concerns and it seemed to me
 that the argument above was compelling.  According to pinkerton, the
 behavior in Chrome Mac is not just to match Safari, Camino, or platform
 conventions, but ultimately for the same reason that Camino decided to
 place-cursor-on-click instead of selecting all: editing was thought to be
 common enough that selecting all becomes frustrating.
 To me something is wrong when we argue opposite (non-platform-dependent)
 conclusions on different platforms, so I filed http://crbug.com/19879 about
 collecting some real-world data to inform this debate.  If we found that 99%
 of user navigations followed replacing all the text, for example, I would
 plead strongly with the Mac people to change their decision; if we found
 that 50% of navigations involved editing, I would probably argue we should
 reverse the Windows and Linux behaviors both.  Of course, if we do get this
 data, the numbers are unlikely to be so clear-cut.  But we won't know until
 then.
 If anyone wants to contribute a patch to do this, it would be welcome...
 PK

I absolutely agree.  My 70% guesstimate was purely based on my own
behavior, and I have no idea how it's used for the majority of users.
Most of our UI decisions in the past have been based on user data, and
this is another experiment we should set up.  I'm willing to look into
what's required to run this experiment.

-- 
James Hawkins

--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] running reliability tests

2009-08-18 Thread James Hawkins

Hi,

How can I run the reliability tests, specifically the automated UI
tests, locally?

Thanks,
James Hawkins

--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Re: valgrind updated

2009-07-22 Thread James Hawkins

I believe Pawel is referring to build-valgrind-for-chromium.sh, as in
why use this script to build valgrind instead of the system-supplied
valgrind.  There are a few bugs that aren't in upstream releases that
we patch to workaround.

https://bugs.kde.org/show_bug.cgi?id=162848
https://bugs.kde.org/show_bug.cgi?id=186796

James

On Wed, Jul 22, 2009 at 2:23 PM, Evan Stadeest...@chromium.org wrote:

 it's just a helpful wrapper, doing stuff like --malloc-fill=41 and
 pointing at the suppression file.

 -- Evan Stade



 On Wed, Jul 22, 2009 at 8:53 PM, Paweł Hajdan
 Jr.phajdan...@chromium.org wrote:
 Seems like a good news, but why should I use this script instead of
 regular valgrind? I don't know the difference.

 On Wed, Jul 22, 2009 at 20:39, Dan Kegel d...@kegel.com wrote:

 If you don't run valgrind, you can probably ignore this.

 tools/valgrind/build-valgrind-for-chromium.sh has been updated.

 Used to be, if you had gold as your system linker, it would
 generate a valgrind that couldn't even valgrind /bin/true.
 It's now a bit smarter, and won't build or install a broken valgrind.

 It also adds a patch to properly terminate log files on exec
 (which gets rid of an annoying delay when running
 tools/valgrind/chrome_tests.sh on some tests).

 Separately, http://wiki.corp.google.com/Main/ChromeBuildbotLinux
 was also updated, and a new valgrind and gold were pushed to
 the main valgrind bots, codf15[678].
 They were missing the long suppressions patch before,
 so the update should prevent recurrence of one
 of the intermittent valgrind warnings seen today.
 (It already had a suppression, but because the suppresson
 had a line longer than 200 chars, it was ignored.)




 


 


--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] automation provider assistance

2009-07-16 Thread James Hawkins

Hi,

Will someone please inform me who I should talk to concerning the
automation provider (chrome/browser/automation)?  svn log in that
directory is all over the place, so that wasn't much help.  I'm
looking at porting automation provider to linux and have a few
questions.

Thanks,
James Hawkins

--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Re: [linux] green flashes in page content

2009-05-20 Thread James Hawkins

On Tue, May 19, 2009 at 11:20 PM, William Chan (陈智昌)
willc...@chromium.org wrote:
 On Tue, May 19, 2009 at 5:12 PM, James Hawkins jhawk...@chromium.org wrote:

 On Tue, May 19, 2009 at 5:07 PM, Evan Stade est...@chromium.org wrote:
 Are we sure we need this functionality?  I understand the intention of
 seeing when we're not drawing fast enough, but I'm seeing the green
 background all the time (on a fast machine), which leads me to believe
 that the debugging aid is a red herring.

 Yea, you should see it all the time. We'll never be able to fix that.
 But how much of it you see is a good measure of jank.

 If enough people hate it, we can remove it (and only enable when we
 care to look at jank).


 We should leave page load/rendering time to measurements from the
 tests.  This should be something that a developer working on jankiness
 could enable himself.  It's rather distracting to the developers who
 don't need to look into jankiness, but do need to run debug builds
 regularly.

 I personally like seeing the green background, since I do like seeing
 how much jank there is.  It doesn't bother me at all.  That said, I
 can see how it'd annoy some people.  If most people dislike it, then I
 think we should just make it the same as the release behavior (use a
 white background), but I think it'd be nice to have a command line
 flag or a preference or something so I can run with a green or
 whatever background to aid in debugging jankiness.


Sure, I think a flag or pref would be ideal.

--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Re: [linux] green flashes in page content

2009-05-19 Thread James Hawkins

Are we sure we need this functionality?  I understand the intention of
seeing when we're not drawing fast enough, but I'm seeing the green
background all the time (on a fast machine), which leads me to believe
that the debugging aid is a red herring.

On Tue, May 19, 2009 at 4:59 PM, Evan Martin e...@chromium.org wrote:

 If you're seeing green flashes when you resize, don't worry -- that's
 just the window background showing through in debug builds.

 estade checked it in as a debugging aid to see when we're not drawing
 fast enough.  It's white on release builds.

 


--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Re: [linux] green flashes in page content

2009-05-19 Thread James Hawkins

On Tue, May 19, 2009 at 5:07 PM, Evan Stade est...@chromium.org wrote:
 Are we sure we need this functionality?  I understand the intention of
 seeing when we're not drawing fast enough, but I'm seeing the green
 background all the time (on a fast machine), which leads me to believe
 that the debugging aid is a red herring.

 Yea, you should see it all the time. We'll never be able to fix that.
 But how much of it you see is a good measure of jank.

 If enough people hate it, we can remove it (and only enable when we
 care to look at jank).


We should leave page load/rendering time to measurements from the
tests.  This should be something that a developer working on jankiness
could enable himself.  It's rather distracting to the developers who
don't need to look into jankiness, but do need to run debug builds
regularly.

-- 
James Hawkins

--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Linux TabStrip design doc 3-3-09

2009-03-03 Thread James Hawkins

Hi,

We on the Linux team have settled on a TabStrip design that will allow
us to share as much code as possible without having to reimplement
Views, which would take a considerable amount of time and effort.  The
TabStrip interfaces will be refactored to have cross-platform
super-classes and platform-specific subclasses.  This split often
occurs where Views classes are pulled into the TabStrip interface.
This allows sharing of common code, such as tab animation.  The
platform-specific code, for the most part, will be the implementation
of the UI for the tab strip.  For example, the TabStrip class is
currently defined as:

class TabStrip : public views::View,
 public TabStripModelObserver,
 public Tab::TabDelegate,
 public views::Button::ButtonListener,
 public MessageLoopForUI::Observer {

The new super-class will be:

class TabStrip : public TabStripModelObserver,
 public Tab::TabDelegate,

and the win subclass:

class TabStripWin : public views::View,
 public views::Button::ButtonListener,
 public MessageLoopForUI::Observer,
 public TabStrip {

We are using the C interface for gtk, so the gtk variant TabStripGtk
will simply inherit from TabStrip.  All of the UI needed by TabStrip
will be overridden and implemented using gtk.

On a higher level, the Linux tab strip will be implemented using a
gdkpixmap in a container, which allows fast blitting of the skbitmap
used by TabRenderer.

-- 
James Hawkins

--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Re: Linux TabStrip design doc 3-3-09

2009-03-03 Thread James Hawkins

On Tue, Mar 3, 2009 at 11:36 AM, Ben Goodger (Google) b...@chromium.org wrote:
 Can you give a more detailed breakdown of the code/methods that'll be
 moved to the shared base?


To be shared:
* All of the TabAnimation classes.
* The following methods:
  - GetPreferredHeight
  - CanProcessInputEvents
  - PointIsWithinWindowCaption, though we don't have a custom frame on linux yet
  - IsCompatibleWith
  - IsAnimating
  - model
  - IsDragSessionActive
  - AbortActiveDragSession
  - DestroyDragController
  - DestroyDraggedSourceTab
  - GetIdealBounds
  - UpdateLoadingAnimations
  - TabStripModelObserver implemenation
  - Tab::Delegate implemenation
  - GetTabAt
  - GetTabAtAdjustForAnimation
  - GetTabCount
  - GetCurrentTabWidths
  - GetDesiredTabWidths
  - ResizeLayoutTabs
  - all of the methods under the Animations section

It's probably easier to look at it from the other side though, i.e.
how much are we taking out of TabStrip?
* The following inherited super-classes:
  - views::View
  - views::Button::ButtonListener
  - MessageLoopForUI::Observer
* Any platform-specific code, usually Views overrides.

-- 
James Hawkins

--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Re: Linux TabStrip design doc 3-3-09

2009-03-03 Thread James Hawkins

Yes that is the case.

On Tue, Mar 3, 2009 at 1:57 PM, Ben Goodger (Google) b...@chromium.org wrote:

 Because you're reusing display methods that retrieve metrics, I assume
 your tabstrip will have exactly the same bounds for itself and its
 contents as the windows one?

 -Ben

 On Tue, Mar 3, 2009 at 11:49 AM, James Hawkins jhawk...@chromium.org wrote:
  On Tue, Mar 3, 2009 at 11:36 AM, Ben Goodger (Google) b...@chromium.org 
  wrote:
  Can you give a more detailed breakdown of the code/methods that'll be
  moved to the shared base?
 
 
  To be shared:
  * All of the TabAnimation classes.
  * The following methods:
   - GetPreferredHeight
   - CanProcessInputEvents
   - PointIsWithinWindowCaption, though we don't have a custom frame on linux 
  yet
   - IsCompatibleWith
   - IsAnimating
   - model
   - IsDragSessionActive
   - AbortActiveDragSession
   - DestroyDragController
   - DestroyDraggedSourceTab
   - GetIdealBounds
   - UpdateLoadingAnimations
   - TabStripModelObserver implemenation
   - Tab::Delegate implemenation
   - GetTabAt
   - GetTabAtAdjustForAnimation
   - GetTabCount
   - GetCurrentTabWidths
   - GetDesiredTabWidths
   - ResizeLayoutTabs
   - all of the methods under the Animations section
 
  It's probably easier to look at it from the other side though, i.e.
  how much are we taking out of TabStrip?
  * The following inherited super-classes:
   - views::View
   - views::Button::ButtonListener
   - MessageLoopForUI::Observer
  * Any platform-specific code, usually Views overrides.
 
  --
  James Hawkins
 



--
James Hawkins

--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Re: g++ bug reduced to a test case

2009-02-11 Thread James Hawkins

On Wed, Feb 11, 2009 at 4:00 AM, Dean McNamee de...@chromium.org wrote:
 Hey Jay,

 When you inherit from a templated base, and explicitly call the
 constructor, you must instantiate the template, otherwise it's
 ambiguous.


 The line:

 explicit InternalGetCommandsRequest(CallbackType* callback) :
 CancelableRequest(callback) {

 Should be:

 explicit InternalGetCommandsRequest(CallbackType* callback) :
 CancelableRequestInternalGetCommandsCallback(callback) {

 That compiles fine for me here.


Success!  Thanks Dean.  How could I have ever doubted gcc? :-)

-- 
James Hawkins

--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



Fwd: [chromium-dev] Linux TabStrip design doc

2009-02-10 Thread James Hawkins

On Tue, Feb 10, 2009 at 11:36 AM, Evan Martin e...@chromium.org wrote:
 On Tue, Feb 10, 2009 at 11:22 AM, James Hawkins jhawk...@chromium.org wrote:
 2) Redesigned TabStrip using one GtkDrawArea, handling drawing and
 input to the tabs ourselves.

 Evan M. proposed that we use one GtkDrawArea for the entire TabStrip
 area of the window (a GtkDrawArea is just a container in which you can
 draw in.)  We would have to handle placement and drawing of the tabs.
 We would also have to handle input for the tabs, i.e. calculating if a
 mouse click is within the bounds of a particular tab.

 Part of my argument is that the placement/drawing/mouse-clicking are
 parts of the code we should share.


TabStripModel = good, will use in any design.  TabStrip depends on
views::View and views::Button, so we'd need to implement that much
of Views unless I'm mistaken.

 automatic input handling.  Tab depth is controlled by ordering the
 drawing of the buttons.  Since we're using a GtkFixed container, we
 can overlap the buttons/tabs to achieve the Chrome look.

 pros: Input handling is automatic, animation is simpler.

 It's not clear to me how animation plays into this.  Could you elaborate?


In the case where each tab is a widget, the animation is achieved
solely by moving the widget within the container.  The difference is
subtle, but to me it's simpler because the re-drawing is done for us
and our custom drawing is abstracted away from the animation.

--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Re: Linux TabStrip design doc

2009-02-10 Thread James Hawkins

On Tue, Feb 10, 2009 at 12:30 PM, Dean McNamee de...@chromium.org wrote:
 Evan just explained the xshape stuff to me today.  I'm curious how
 well it will work.  You don't get alpha, etc.  I could see it not
 working out that well, but I guess it's up to how you divide it.

 I honestly don't think hit testing a 20 pixel high rectangular area is
 going to be too tricky.  Also, even with the button approach, even if
 the window has areas that are see through, I'm not sure how the works
 with events.  I wouldn't be surprised if we'll have to do more
 calculations when the button is pressed, to make sure it's not in the
 space in between, etc.


We'd use gdk_window_input_shape_combine_region, set up to match the
exact (very close) region of the tab, which is not rectangular.  If
you do treat it as a rectangle, then you have to deal with clicking in
the small space between the tabs.

 I guess that means I support 2, along with reusing the animation classes, etc.


If majority opinion wants this, I will certainly go along with.  I'd
really like to hear some pros for 2 though.  I don't see the
advantages over 3.

--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Re: Linux TabStrip design doc

2009-02-10 Thread James Hawkins

On Tue, Feb 10, 2009 at 12:47 PM, Ben Goodger (Google) b...@chromium.org 
wrote:
 BTW - Are GtkDrawAreas native widgets underneath? Can they be
 transparently rendered over others?


GtkDrawingAreas (sorry, typo in my first email) are widgets, and they
can be rendered over other widgets in certain situations (say using a
GtkFixed container).  By transparent, do you mean that whatever is
beneath the GtkDrawingArea will show through parts of the area that we
haven't drawn on yet?  I'm not sure about that effect with
GtkDrawingArea API, but from what I've read elsewhere it seems
possible.

--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Re: Linux TabStrip design doc

2009-02-10 Thread James Hawkins

On Tue, Feb 10, 2009 at 1:28 PM, Ben Goodger (Google) b...@chromium.org wrote:
 So what you probably want then is a views/NSView-like system for your
 toolbar stack then? Does Gtk provide abstractions for this?


In Gtk parlance a widget is what win calls a view and mac calls
NSView.  I'm not sure what abstraction you're specifically asking
about here though.

--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Re: [chromium-checkins] Re: r8862 - in trunk/src/webkit: build/WebCore tools/test_shell

2009-02-02 Thread James Hawkins

 On Thu, Jan 29, 2009 at 7:44 AM, Dean McNamee de...@chromium.org wrote:

 The files seem quite different

  1 file changed, 336 insertions(+), 835 deletions(-)

 Anyone interested in taking a look at this today?


Hey Adam,

I worked on the gtk2drawing unforking to see why it caused so many
test failures.  The first problem is that
platform/chromium/gtkdrawing.h wasn't unforked as well, so that header
was being used instead of the appropriate platform/gtk/gtkdrawing.h.
This caused a problem because a new type was added to the
GtkThemeWidgetType enum, so when MOZ_GTK_DROPDOWN was requested, we
got MOZ_GTK_ENTRY_CARET drawn. Unforking gtkdrawin.h would fix that
problem.  That fixes about 40 layout tests.  The remaining ~100
failures are because of differences in the way the two gtk2drawing.c's
render certain widgets.  I think chromium's gtk2drawing widgets look a
lot better, but another solution is to rebaseline those tests.

-- 
James Hawkins

--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] [chromium-checkins] Re: r8862 - in trunk/src/webkit: build/WebCore tools/test_shell

2009-01-29 Thread James Hawkins

I'll take a look.

--
James

On Thu, Jan 29, 2009 at 7:44 AM, Dean McNamee de...@chromium.org wrote:

 The files seem quite different

  1 file changed, 336 insertions(+), 835 deletions(-)

 Anyone interested in taking a look at this today?

 On Thu, Jan 29, 2009 at 4:19 PM, Adam Langley a...@chromium.org wrote:
 On Thu, Jan 29, 2009 at 5:31 AM, Dean McNamee de...@chromium.org wrote:
 This made a ton of layout tests start failing, most likely we are
 drawing differently now?

 I should have checked that, but I didn't. (After all, the render-theme
 says where to draw and GTK says what to draw - what's left?). But I've
 reverted this change for now. Will look more closely next week. Thanks
 for spotting it.


 AGL


 


--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] Re: seeking a scons expert

2009-01-29 Thread James Hawkins

Michael was very helpful and pointed out an example of what I'm trying
to do in third_party/icu38/icu38.scons:

need_common_implementation = [
  'source/common/ubidi.c',
  'source/common/ubidiln.c',
  ]

  for n in need_common_implementation:
common_input_files.remove(n)
o = env.ChromeObject(n, CPPDEFINES = env['CPPDEFINES'] +
 ['U_COMMON_IMPLEMENTATION',
  'U_COMBINED_IMPLEMENTATION'])
common_input_files.append(o)

I'm writing up a similar bit of magic in WebCore.scons to the specific
dirs/files I want to set CCFLAGS for.

On Thu, Jan 29, 2009 at 3:42 PM, Dan Kegel d...@kegel.com wrote:
 What I usually do is do a verbose run, turn that into
 a shell script, and then edit the shell script...

 On Thu, Jan 29, 2009 at 3:30 PM, Michael Moss mm...@chromium.org wrote:

 I'll try to help.

 On Thu, Jan 29, 2009 at 2:36 PM, James Hawkins jhawk...@chromium.org wrote:

 Hi,

 I'm tracking down the layout test failures caused by the debug build
 of Linux Webkit.  So far I've narrowed it down to the fact that
 appending -ffloat-store to CCFLAGS for the WebCore build file
 (src/webkit/build/WebCore/SConscript) fixes the failures.  What I need
 to do now is narrow down my search to specific directories in WebCore
 first, then specific files within the offending directory.  That means
 modifying CCFLAGS for those specific dirs/files.  I've read through
 the scons 'manual', but I did not find a solution to this particular
 problem, especially considering the complexity of our build
 configuration.  Anyone know if this is feasible?

 Thanks,
 James Hawkins

 


 



--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] linux: tabs on top

2009-01-28 Thread James Hawkins

On Wed, Jan 28, 2009 at 11:56 AM, Evan Martin e...@chromium.org wrote:

 (This is discussion of the UI independent of how it's implemented with
 views or not.)

 On Linux the window frame, if one even exists, is managed and drawn by
 a different process than the application.  Additionally, people use a
 variety of window managers and so there's no guarantees for the way a
 frame will look.  So there's no way to draw into it like we do on
 Windows.

 Two options:
 1) Set the hint that turns off window frame drawing, and render
 something that looks like the Windows one.  This would mean
 implementing window dragging via the title bar, etc. manually.  (Ben's
 magic browzr work was undoing code like this on Windows, because
 it's endless pain.  I think it may be less pain for us but it'd still
 be bad.)  The right-click menu on the frame would be wrong.

 2) Give up, and just make the tabs flush with the top of the window we
 have.  This is probably ugly in the general case (since there will be
 an edge between the title bar and tabs), but will work in all
 situations.


What about rolling out 2) initially, then implement 1) as a 'group 20%
project', the group being the linux team?  That work could be done in
a branch, and if we get it working, merge the branch and start
testing; otherwise, drop it if it ends up being a waste of time.

--
James Hawkins

--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---



[chromium-dev] select option popup menu

2009-01-23 Thread James Hawkins
Hi,

Attached are screen shots of the rendering of
LayoutTests/fast/forms/select-style.html on various browsers and
platforms.  I'm fixing this layout test for Linux, but I need to know
which style to implement.  The Win folks have already added a new
baseline that matches the rendering used by Firefox.  Safari uses the
aqua style on all platforms.  My guess is that we want to implement
the same look as Chrome Win and Firefox.  Any thoughts?

-- 
James Hawkins

--~--~-~--~~~---~--~~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
http://groups.google.com/group/chromium-dev
-~--~~~~--~~--~--~---

inline: firefoxlinux.pnginline: safarimac.pnginline: safariwin.PNGinline: chromelinux.png