[webkit-reviews] review granted: [Bug 129344] [iOS WebKit2] Form controls handling : [Attachment 225579] Patch3

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Sat Mar 1 20:49:05 PST 2014


Simon Fraser (smfr) <simon.fraser at apple.com> has granted Enrica Casucci
<enrica at apple.com>'s request for review:
Bug 129344: [iOS WebKit2] Form controls handling
https://bugs.webkit.org/show_bug.cgi?id=129344

Attachment 225579: Patch3
https://bugs.webkit.org/attachment.cgi?id=225579&action=review

------- Additional Comments from Simon Fraser (smfr) <simon.fraser at apple.com>
View in context: https://bugs.webkit.org/attachment.cgi?id=225579&action=review


> Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h:120
> +- (Vector<WebKit::WKOptionItem>&) assistedNodeSelectOptions;

Why not make this a readonly property?

If you want it as a method, please move it lower down.

> Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1812
> +- (Vector<WKOptionItem>&) assistedNodeSelectOptions

No space after the )
Should this return a non-const reference?

> Source/WebKit2/UIProcess/ios/forms/WKFormSelectControl.h:40
> +- (id)initWithView:(WKContentView *)view hasGroups:(BOOL)hasGroups;

Return instancetype?

> Source/WebKit2/UIProcess/ios/forms/WKFormSelectControl.h:45
> +- (id)initWithView:(WKContentView *)view;

instancetype?

> Source/WebKit2/UIProcess/ios/forms/WKFormSelectControl.mm:73
> ++ (WKFormSelectControl *)createPeripheralWithView:(WKContentView *)view

It would be more idiomatic to call this +peripheralWithView and have it return
an autoreleased object (don't forget to fix the callers).

> Source/WebKit2/UIProcess/ios/forms/WKFormSelectPicker.mm:49
> +    WKOptionItem* _optionToSelectWhenDone;

I don't really like holding a pointer to an object in an array that's held by
some other class. Can we store its index instead?

> Source/WebKit2/UIProcess/ios/forms/WKFormSelectPicker.mm:60
> +    self.dataSource = self;

Is the dataSource retained? Is this creating a retain cycle?

> Source/WebKit2/UIProcess/ios/forms/WKFormSelectPicker.mm:68
> +    for (size_t i = 0; i <
_view.assistedNodeInformation.selectOptions.size(); ++i) {
> +	   WKOptionItem* item = &[_view assistedNodeSelectOptions][i];

Really confusing that the first line uses
_view.assistedNodeInformation.selectOptions and the second [_view
assistedNodeSelectOptions] which I think are the same?

Use const WKOptionItem&

> Source/WebKit2/UIProcess/ios/forms/WKFormSelectPicker.mm:144
> +	   return [string substringWithRange: r];

No space after :

> Source/WebKit2/UIProcess/ios/forms/WKFormSelectPicker.mm:149
> +- (NSInteger)pickerView:(UIPickerView *)aPickerView
numberOfRowsInComponent:(NSInteger)aColumnIndex

aPickerView -> pickerView, aColumnIndex -> columnIndex

> Source/WebKit2/UIProcess/ios/forms/WKFormSelectPicker.mm:156
> +    const WKOptionItem& option = [_view assistedNodeSelectOptions][row];

I think you should check that 'row' is in bounds here.

> Source/WebKit2/UIProcess/ios/forms/WKFormSelectPicker.mm:168
> +    const WKOptionItem& newSelectedOption = [_view
assistedNodeSelectOptions][row];

Ditto.

> Source/WebKit2/UIProcess/ios/forms/WKFormSelectPicker.mm:200
> +    _optionToSelectWhenDone = &[_view assistedNodeSelectOptions][row];

Nasty.

> Source/WebKit2/UIProcess/ios/forms/WKFormSelectPopover.mm:50
> +static NSString *WKPopoverTableViewCellReuseIdentifier  =
@"WKPopoverTableViewCellReuseIdentifier";

static NSString* const Foo

> Source/WebKit2/UIProcess/ios/forms/WKFormSelectPopover.mm:77
> +    unichar directionalFormattingCharacter = (writingDirection ==
UITextWritingDirectionLeftToRight) ? (override ? leftToRightOverride :
leftToRightEmbedding)
> +    : (override ? rightToLeftOverride : rightToLeftEmbedding);

Hard to understand.

> Source/WebKit2/UIProcess/ios/forms/WKFormSelectPopover.mm:112
> +    WKSelectPopover *_popover;

What's the ownership model?

> Source/WebKit2/UIProcess/ios/forms/WKFormSelectPopover.mm:260
> +	   cell = [[[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:WKPopoverTableViewCellReuseIdentifier] autorelease];

This is leaked.

> Source/WebKit2/UIProcess/ios/forms/WKFormSelectPopover.mm:407
> +    CGFloat titleHeight = 0.0;

= 0

> Source/WebKit2/UIProcess/ios/forms/WKFormSelectPopover.mm:439
> +    _tableViewController.get().popover = nil;

[_tableViewController.get setPopover:nil] etc

> Source/WebKit2/UIProcess/ios/forms/WKFormSelectPopover.mm:443
> +    _tableViewController = nil;

No point doing this.


More information about the webkit-reviews mailing list