Changeset 210483 in webkit


Ignore:
Timestamp:
Jan 7, 2017 1:10:21 PM (7 years ago)
Author:
timothy_horton@apple.com
Message:

Add the ability to create empty contentEditable windows in MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=166801

Reviewed by Wenson Hsieh.

  • MiniBrowser/mac/AppDelegate.h:
  • MiniBrowser/mac/AppDelegate.m:

(-[BrowserAppDelegate createBrowserWindowController:]):
(-[BrowserAppDelegate newWindow:]):
(-[BrowserAppDelegate newEditorWindow:]):
(-[BrowserAppDelegate openDocument:]):
(-[BrowserAppDelegate _updateNewWindowKeyEquivalents]):

  • MiniBrowser/mac/BrowserWindowController.h:
  • MiniBrowser/mac/BrowserWindowController.m:

(-[BrowserWindowController loadHTMLString:]):
(-[BrowserWindowController toggleEditable:]):

  • MiniBrowser/mac/MainMenu.xib:
  • MiniBrowser/mac/WK1BrowserWindowController.m:

(-[WK1BrowserWindowController awakeFromNib]):
(-[WK1BrowserWindowController loadHTMLString:]):
(-[WK1BrowserWindowController validateMenuItem:]):
(-[WK1BrowserWindowController setEditable:]):
(-[WK1BrowserWindowController updateTitle:]):

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController awakeFromNib]):
(-[WK2BrowserWindowController validateMenuItem:]):
(-[WK2BrowserWindowController setEditable:]):
(-[WK2BrowserWindowController updateTitle:]):
(-[WK2BrowserWindowController loadHTMLString:]):
Merge more functionality from WebEditingTester.
Add two menu items for creating empty editable WebKit1/2 windows.
Add a menu item to the Edit menu to toggle editability on any window.

Location:
trunk/Tools
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r210482 r210483  
     12017-01-07  Tim Horton  <timothy_horton@apple.com>
     2
     3        Add the ability to create empty contentEditable windows in MiniBrowser
     4        https://bugs.webkit.org/show_bug.cgi?id=166801
     5
     6        Reviewed by Wenson Hsieh.
     7
     8        * MiniBrowser/mac/AppDelegate.h:
     9        * MiniBrowser/mac/AppDelegate.m:
     10        (-[BrowserAppDelegate createBrowserWindowController:]):
     11        (-[BrowserAppDelegate newWindow:]):
     12        (-[BrowserAppDelegate newEditorWindow:]):
     13        (-[BrowserAppDelegate openDocument:]):
     14        (-[BrowserAppDelegate _updateNewWindowKeyEquivalents]):
     15        * MiniBrowser/mac/BrowserWindowController.h:
     16        * MiniBrowser/mac/BrowserWindowController.m:
     17        (-[BrowserWindowController loadHTMLString:]):
     18        (-[BrowserWindowController toggleEditable:]):
     19        * MiniBrowser/mac/MainMenu.xib:
     20        * MiniBrowser/mac/WK1BrowserWindowController.m:
     21        (-[WK1BrowserWindowController awakeFromNib]):
     22        (-[WK1BrowserWindowController loadHTMLString:]):
     23        (-[WK1BrowserWindowController validateMenuItem:]):
     24        (-[WK1BrowserWindowController setEditable:]):
     25        (-[WK1BrowserWindowController updateTitle:]):
     26        * MiniBrowser/mac/WK2BrowserWindowController.m:
     27        (-[WK2BrowserWindowController awakeFromNib]):
     28        (-[WK2BrowserWindowController validateMenuItem:]):
     29        (-[WK2BrowserWindowController setEditable:]):
     30        (-[WK2BrowserWindowController updateTitle:]):
     31        (-[WK2BrowserWindowController loadHTMLString:]):
     32        Merge more functionality from WebEditingTester.
     33        Add two menu items for creating empty editable WebKit1/2 windows.
     34        Add a menu item to the Edit menu to toggle editability on any window.
     35
    1362017-01-07  Tim Horton  <timothy_horton@apple.com>
    237
  • trunk/Tools/MiniBrowser/mac/AppDelegate.h

    r204397 r210483  
    3434    IBOutlet NSMenuItem *_newWebKit1WindowItem;
    3535    IBOutlet NSMenuItem *_newWebKit2WindowItem;
     36    IBOutlet NSMenuItem *_newWebKit1EditorItem;
     37    IBOutlet NSMenuItem *_newWebKit2EditorItem;
    3638}
    3739
  • trunk/Tools/MiniBrowser/mac/AppDelegate.m

    r209717 r210483  
    4545enum {
    4646    WebKit1NewWindowTag = 1,
    47     WebKit2NewWindowTag = 2
     47    WebKit2NewWindowTag = 2,
     48    WebKit1NewEditorTag = 3,
     49    WebKit2NewEditorTag = 4
    4850};
    4951
     
    121123#endif
    122124
    123 
    124 - (IBAction)newWindow:(id)sender
     125- (BrowserWindowController *)createBrowserWindowController:(id)sender
    125126{
    126127    BrowserWindowController *controller = nil;
    127 
    128128    BOOL useWebKit2 = NO;
     129    BOOL makeEditable = NO;
    129130
    130131    if (![sender respondsToSelector:@selector(tag)])
    131132        useWebKit2 = [SettingsController shared].useWebKit2ByDefault;
    132     else
    133         useWebKit2 = [sender tag] == WebKit2NewWindowTag;
    134    
     133    else {
     134        useWebKit2 = [sender tag] == WebKit2NewWindowTag || [sender tag] == WebKit2NewEditorTag;
     135        makeEditable = [sender tag] == WebKit1NewEditorTag || [sender tag] == WebKit2NewEditorTag;
     136    }
     137
    135138    if (!useWebKit2)
    136139        controller = [[WK1BrowserWindowController alloc] initWithWindowNibName:@"BrowserWindow"];
     
    139142        controller = [[WK2BrowserWindowController alloc] initWithConfiguration:defaultConfiguration()];
    140143#endif
     144
     145    if (makeEditable)
     146        controller.editable = YES;
     147
     148    if (!controller)
     149        return nil;
     150
     151    [_browserWindowControllers addObject:controller];
     152
     153    return controller;
     154}
     155
     156- (IBAction)newWindow:(id)sender
     157{
     158    BrowserWindowController *controller = [self createBrowserWindowController:sender];
    141159    if (!controller)
    142160        return;
    143161
    144162    [[controller window] makeKeyAndOrderFront:sender];
    145     [_browserWindowControllers addObject:controller];
    146    
    147163    [controller loadURLString:[SettingsController shared].defaultURL];
    148164}
     
    162178    [controller loadURLString:[SettingsController shared].defaultURL];
    163179#endif
     180}
     181
     182- (IBAction)newEditorWindow:(id)sender
     183{
     184    BrowserWindowController *controller = [self createBrowserWindowController:sender];
     185    if (!controller)
     186        return;
     187
     188    [[controller window] makeKeyAndOrderFront:sender];
     189    [controller loadHTMLString:@"<html><body></body></html>"];
    164190}
    165191
     
    223249            return;
    224250
    225         BrowserWindowController *newBrowserWindowController = [[WK1BrowserWindowController alloc] initWithWindowNibName:@"BrowserWindow"];
    226         [newBrowserWindowController.window makeKeyAndOrderFront:self];
     251        BrowserWindowController *controller = [self createBrowserWindowController:nil];
     252        [controller.window makeKeyAndOrderFront:self];
    227253
    228254        NSURL *url = [openPanel.URLs objectAtIndex:0];
    229         [newBrowserWindowController loadURLString:[url absoluteString]];
     255        [controller loadURLString:[url absoluteString]];
    230256    }];
    231257}
     
    242268- (void)_updateNewWindowKeyEquivalents
    243269{
    244     if ([[SettingsController shared] useWebKit2ByDefault]) {
    245         [_newWebKit1WindowItem setKeyEquivalentModifierMask:NSEventModifierFlagCommand | NSEventModifierFlagOption];
    246         [_newWebKit2WindowItem setKeyEquivalentModifierMask:NSEventModifierFlagCommand];
    247     } else {
    248         [_newWebKit1WindowItem setKeyEquivalentModifierMask:NSEventModifierFlagCommand];
    249         [_newWebKit2WindowItem setKeyEquivalentModifierMask:NSEventModifierFlagCommand | NSEventModifierFlagOption];
    250     }
     270    NSEventModifierFlags webKit1Flags = [SettingsController shared].useWebKit2ByDefault ? NSEventModifierFlagOption : 0;
     271    NSEventModifierFlags webKit2Flags = [SettingsController shared].useWebKit2ByDefault ? 0 : NSEventModifierFlagOption;
     272
     273    _newWebKit1WindowItem.keyEquivalentModifierMask = NSEventModifierFlagCommand | webKit1Flags;
     274    _newWebKit2WindowItem.keyEquivalentModifierMask = NSEventModifierFlagCommand | webKit2Flags;
     275    _newWebKit1EditorItem.keyEquivalentModifierMask = NSEventModifierFlagCommand | webKit1Flags;
     276    _newWebKit2EditorItem.keyEquivalentModifierMask = NSEventModifierFlagCommand | webKit2Flags;
    251277}
    252278
  • trunk/Tools/MiniBrowser/mac/BrowserWindowController.h

    r210482 r210483  
    4141
    4242- (void)loadURLString:(NSString *)urlString;
     43- (void)loadHTMLString:(NSString *)HTMLString;
    4344- (NSString *)addProtocolIfNecessary:(NSString *)address;
    4445
     
    8081- (CGFloat)pageScaleForMenuItemTag:(NSInteger)tag;
    8182
     83@property (nonatomic, assign, getter=isEditable) BOOL editable;
     84- (IBAction)toggleEditable:(id)sender;
     85
    8286@end
    8387
  • trunk/Tools/MiniBrowser/mac/BrowserWindowController.m

    r210482 r210483  
    5959}
    6060
     61- (void)loadHTMLString:(NSString *)HTMLString
     62{
     63}
     64
    6165- (void)applicationTerminating
    6266{
     
    212216}
    213217
     218- (IBAction)toggleEditable:(id)sender
     219{
     220    self.editable = !self.isEditable;
     221}
     222
    214223#pragma mark -
    215224#pragma mark NSSharingServicePickerDelegate
  • trunk/Tools/MiniBrowser/mac/MainMenu.xib

    r210482 r210483  
    8989                                </connections>
    9090                            </menuItem>
     91                            <menuItem title="New WebKit1 Editor" tag="3" keyEquivalent="N" id="jNR-Z3-YWi" userLabel="New WebKit1 Editor">
     92                                <connections>
     93                                    <action selector="newEditorWindow:" target="-1" id="Nv5-c0-KRP"/>
     94                                </connections>
     95                            </menuItem>
     96                            <menuItem title="New WebKit2 Editor" tag="4" keyEquivalent="N" id="IdI-wb-1JD" userLabel="New WebKit2 Editor">
     97                                <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
     98                                <connections>
     99                                    <action selector="newEditorWindow:" target="-1" id="kk6-R4-iec"/>
     100                                </connections>
     101                            </menuItem>
    91102                            <menuItem title="Open…" keyEquivalent="o" id="72">
    92103                                <connections>
     
    159170                                <connections>
    160171                                    <action selector="redo:" target="-1" id="231"/>
     172                                </connections>
     173                            </menuItem>
     174                            <menuItem isSeparatorItem="YES" id="fUL-7k-Dqg">
     175                                <modifierMask key="keyEquivalentModifierMask" command="YES"/>
     176                            </menuItem>
     177                            <menuItem title="Editable" id="kG4-hS-JbX">
     178                                <modifierMask key="keyEquivalentModifierMask"/>
     179                                <connections>
     180                                    <action selector="toggleEditable:" target="-1" id="6my-b2-eff"/>
    161181                                </connections>
    162182                            </menuItem>
     
    567587        <customObject id="494" customClass="BrowserAppDelegate">
    568588            <connections>
     589                <outlet property="_newWebKit1EditorItem" destination="jNR-Z3-YWi" id="6wB-Aa-CK7"/>
    569590                <outlet property="_newWebKit1WindowItem" destination="573" id="ZCj-u2-PU7"/>
     591                <outlet property="_newWebKit2EditorItem" destination="IdI-wb-1JD" id="DIr-pe-XI8"/>
    570592                <outlet property="_newWebKit2WindowItem" destination="571" id="1Gv-mK-aul"/>
    571593            </connections>
  • trunk/Tools/MiniBrowser/mac/WK1BrowserWindowController.m

    r210482 r210483  
    4545    [_webView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
    4646
     47    _webView.editable = self.isEditable;
     48
    4749    [_webView setFrameLoadDelegate:self];
    4850    [_webView setUIDelegate:self];
     
    7880    [urlText setStringValue:urlString];
    7981    [self fetch:nil];
     82}
     83
     84- (void)loadHTMLString:(NSString *)HTMLString
     85{
     86    [_webView.mainFrame loadHTMLString:HTMLString baseURL:nil];
    8087}
    8188
     
    140147    else if (action == @selector(toggleZoomMode:))
    141148        [menuItem setState:_zoomTextOnly ? NSOnState : NSOffState];
     149    else if (action == @selector(toggleEditable:))
     150        [menuItem setState:self.isEditable ? NSOnState : NSOffState];
    142151
    143152    if (action == @selector(setPageScale:))
     
    246255{
    247256    return _webView;
     257}
     258
     259- (void)setEditable:(BOOL)editable
     260{
     261    [super setEditable:editable];
     262    _webView.editable = editable;
    248263}
    249264
     
    318333        title = url.lastPathComponent ?: url._web_userVisibleString;
    319334    }
    320    
    321     [self.window setTitle:[title stringByAppendingString:@" [WK1]"]];
     335
     336    [self.window setTitle:[title stringByAppendingFormat:@" [WK1]%@", _webView.editable ? @" [Editable]" : @""]];
    322337}
    323338
  • trunk/Tools/MiniBrowser/mac/WK2BrowserWindowController.m

    r210482 r210483  
    7070    _webView.allowsMagnification = YES;
    7171    _webView.allowsBackForwardNavigationGestures = YES;
     72    _webView._editable = self.isEditable;
    7273
    7374    [_webView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
     
    202203    else if (action == @selector(toggleZoomMode:))
    203204        [menuItem setState:_zoomTextOnly ? NSOnState : NSOffState];
     205    else if (action == @selector(toggleEditable:))
     206        [menuItem setState:self.isEditable ? NSOnState : NSOffState];
    204207
    205208    if (action == @selector(setPageScale:))
     
    285288}
    286289
     290- (void)setEditable:(BOOL)editable
     291{
     292    [super setEditable:editable];
     293    _webView._editable = editable;
     294}
     295
    287296- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)item
    288297{
     
    416425    }
    417426
    418     self.window.title = [NSString stringWithFormat:@"%@%@ [WK2 %d]", _isPrivateBrowsingWindow ? @"🙈 " : @"", title, _webView._webProcessIdentifier];
     427    self.window.title = [NSString stringWithFormat:@"%@%@ [WK2 %d]%@", _isPrivateBrowsingWindow ? @"🙈 " : @"", title, _webView._webProcessIdentifier, _webView._editable ? @" [Editable]" : @""];
    419428}
    420429
     
    524533    [urlText setStringValue:urlString];
    525534    [self fetch:nil];
     535}
     536
     537- (void)loadHTMLString:(NSString *)HTMLString
     538{
     539    [_webView loadHTMLString:HTMLString baseURL:nil];
    526540}
    527541
Note: See TracChangeset for help on using the changeset viewer.