widget/cocoa/nsTouchBar.mm
author harry <htwyford@mozilla.com>
Mon, 22 Jul 2019 18:23:34 +0000
changeset 483744 6bad91b2f1989e35f5dbcaa2a850102a0bcb3078
parent 482915 69020d38197b8d56f4386bc193fdbfc15758cd05
child 483793 fd712790ec030ddc0e8c0555428779132e919a60
permissions -rw-r--r--
Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl Differential Revision: https://phabricator.services.mozilla.com/D34926
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
     1
/* This Source Code Form is subject to the terms of the Mozilla Public
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
     2
 * License, v. 2.0. If a copy of the MPL was not distributed with this
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
     3
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
     4
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
     5
#include "nsTouchBar.h"
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
     6
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
     7
#include "mozilla/MacStringHelpers.h"
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
     8
#include "mozilla/Telemetry.h"
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
     9
#include "nsArrayUtils.h"
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    10
#include "nsDirectoryServiceDefs.h"
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    11
#include "nsIArray.h"
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    12
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    13
@implementation nsTouchBar
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    14
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
    15
static NSTouchBarItemIdentifier CustomButtonIdentifier = @"com.mozilla.firefox.touchbar.button";
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    16
static NSTouchBarItemIdentifier CustomMainButtonIdentifier =
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    17
    @"com.mozilla.firefox.touchbar.mainbutton";
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
    18
static NSTouchBarItemIdentifier ScrubberIdentifier = @"com.mozilla.firefox.touchbar.scrubber";
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    19
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    20
// Non-JS scrubber implemention for the Share Scrubber,
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    21
// since it is defined by an Apple API.
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    22
static NSTouchBarItemIdentifier ShareScrubberIdentifier =
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
    23
    [ScrubberIdentifier stringByAppendingPathExtension:@"share"];
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    24
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    25
// Used to tie action strings to buttons.
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    26
static char sIdentifierAssociationKey;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    27
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    28
// The system default width for Touch Bar inputs is 128px. This is double.
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    29
#define MAIN_BUTTON_WIDTH 256
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    30
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    31
#pragma mark - NSTouchBarDelegate
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    32
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
    33
- (instancetype)init {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    34
  if ((self = [super init])) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    35
    mTouchBarHelper = do_GetService(NS_TOUCHBARHELPER_CID);
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    36
    if (!mTouchBarHelper) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    37
      return nil;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    38
    }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    39
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    40
    self.delegate = self;
481548
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    41
    // This customization identifier is how users' custom layouts are saved by macOS.
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    42
    // If this changes, all users' layouts would be reset to the default layout.
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    43
    self.customizationIdentifier = @"com.mozilla.firefox.touchbar.defaultbar";
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    44
    self.mappedLayoutItems = [NSMutableDictionary dictionary];
481548
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    45
    nsCOMPtr<nsIArray> allItems;
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    46
481548
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    47
    nsresult rv = mTouchBarHelper->GetAllItems(getter_AddRefs(allItems));
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    48
    if (NS_FAILED(rv) || !allItems) {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    49
      return nil;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    50
    }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    51
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    52
    uint32_t itemCount = 0;
481548
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    53
    allItems->GetLength(&itemCount);
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    54
    // This is copied to self.customizationAllowedItemIdentifiers. Required since
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    55
    // [self.mappedItems allKeys] does not preserve order.
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    56
    // One slot is added for the spacer item.
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    57
    NSMutableArray* orderedIdentifiers = [NSMutableArray arrayWithCapacity:itemCount + 1];
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    58
    for (uint32_t i = 0; i < itemCount; ++i) {
481548
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    59
      nsCOMPtr<nsITouchBarInput> input = do_QueryElementAt(allItems, i);
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    60
      if (!input) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    61
        continue;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    62
      }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    63
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
    64
      TouchBarInput* convertedInput = [[TouchBarInput alloc] initWithXPCOM:input];
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    65
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    66
      // Add new input to dictionary for lookup of properties in delegate.
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    67
      self.mappedLayoutItems[[convertedInput nativeIdentifier]] = convertedInput;
481548
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    68
      orderedIdentifiers[i] = [convertedInput nativeIdentifier];
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    69
    }
481548
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    70
    [orderedIdentifiers addObject:@"NSTouchBarItemIdentifierFlexibleSpace"];
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    71
481548
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    72
    NSArray* defaultItemIdentifiers = @[
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    73
      [CustomButtonIdentifier stringByAppendingPathExtension:@"back"],
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    74
      [CustomButtonIdentifier stringByAppendingPathExtension:@"forward"],
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    75
      [CustomButtonIdentifier stringByAppendingPathExtension:@"reload"],
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    76
      [CustomMainButtonIdentifier stringByAppendingPathExtension:@"open-location"],
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    77
      [CustomButtonIdentifier stringByAppendingPathExtension:@"new-tab"], ShareScrubberIdentifier
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    78
    ];
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    79
    self.defaultItemIdentifiers = [defaultItemIdentifiers copy];
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    80
    self.customizationAllowedItemIdentifiers = [orderedIdentifiers copy];
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    81
  }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    82
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    83
  return self;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    84
}
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    85
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
    86
- (void)dealloc {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    87
  for (NSTouchBarItemIdentifier identifier in self.mappedLayoutItems) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    88
    NSTouchBarItem* item = [self itemForIdentifier:identifier];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    89
    [item release];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    90
  }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    91
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    92
  [self.defaultItemIdentifiers release];
481548
fbab0ad2a7837a630ab3a315d2d5abec7faaa597 Bug 1522012 - Implement Touch Bar's native customization window and remove ui.touchbar.layout preference. r=spohl,mikedeboer,fluent-reviewers,Pike
harry <htwyford@mozilla.com>
parents: 481248
diff changeset
    93
  [self.customizationAllowedItemIdentifiers release];
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    94
  [self.mappedLayoutItems removeAllObjects];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    95
  [self.mappedLayoutItems release];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    96
  [super dealloc];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    97
}
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    98
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
    99
- (NSTouchBarItem*)touchBar:(NSTouchBar*)aTouchBar
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   100
      makeItemForIdentifier:(NSTouchBarItemIdentifier)aIdentifier {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   101
  if ([aIdentifier hasPrefix:ScrubberIdentifier]) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   102
    if (![aIdentifier isEqualToString:ShareScrubberIdentifier]) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   103
      // We're only supporting the Share scrubber for now.
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   104
      return nil;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   105
    }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   106
    return [self makeShareScrubberForIdentifier:aIdentifier];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   107
  }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   108
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   109
  // The cases of a button or main button require the same setup.
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   110
  NSButton* button = [NSButton buttonWithTitle:@"" target:self action:@selector(touchBarAction:)];
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   111
  NSCustomTouchBarItem* item = [[NSCustomTouchBarItem alloc] initWithIdentifier:aIdentifier];
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   112
  item.view = button;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   113
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   114
  TouchBarInput* input = self.mappedLayoutItems[aIdentifier];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   115
  if ([aIdentifier hasPrefix:CustomButtonIdentifier]) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   116
    return [self updateButton:item input:input];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   117
  } else if ([aIdentifier hasPrefix:CustomMainButtonIdentifier]) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   118
    return [self updateMainButton:item input:input];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   119
  }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   120
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   121
  return nil;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   122
}
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   123
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   124
- (void)updateItem:(TouchBarInput*)aInput {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   125
  NSTouchBarItem* item = [self itemForIdentifier:[aInput nativeIdentifier]];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   126
  if (!item) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   127
    return;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   128
  }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   129
  if ([[aInput nativeIdentifier] hasPrefix:CustomButtonIdentifier]) {
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   130
    [self updateButton:(NSCustomTouchBarItem*)item input:aInput];
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   131
  } else if ([[aInput nativeIdentifier] hasPrefix:CustomMainButtonIdentifier]) {
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   132
    [self updateMainButton:(NSCustomTouchBarItem*)item input:aInput];
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   133
  }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   134
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   135
  [self.mappedLayoutItems[[aInput nativeIdentifier]] release];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   136
  self.mappedLayoutItems[[aInput nativeIdentifier]] = aInput;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   137
}
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   138
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   139
- (NSTouchBarItem*)updateButton:(NSCustomTouchBarItem*)aButton input:(TouchBarInput*)aInput {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   140
  NSButton* button = (NSButton*)aButton.view;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   141
  if (!button) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   142
    return nil;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   143
  }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   144
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   145
  button.title = [aInput title];
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   146
  if (![aInput isIconPositionSet]) {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   147
    [button setImagePosition:NSImageOnly];
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   148
    [aInput setIconPositionSet:true];
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   149
  }
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   150
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   151
  if ([aInput imageURI]) {
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   152
    RefPtr<nsTouchBarInputIcon> icon = [aInput icon];
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   153
    if (!icon) {
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   154
      icon = new nsTouchBarInputIcon([aInput document], button);
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   155
      [aInput setIcon:icon];
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   156
    }
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   157
    icon->SetupIcon([aInput imageURI]);
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   158
  }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   159
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   160
  [button setEnabled:![aInput isDisabled]];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   161
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   162
  if ([aInput color]) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   163
    button.bezelColor = [aInput color];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   164
  }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   165
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   166
  objc_setAssociatedObject(button, &sIdentifierAssociationKey, [aInput nativeIdentifier],
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   167
                           OBJC_ASSOCIATION_RETAIN);
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   168
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   169
  aButton.customizationLabel = [aInput title];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   170
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   171
  return aButton;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   172
}
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   173
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   174
- (NSTouchBarItem*)updateMainButton:(NSCustomTouchBarItem*)aMainButton
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   175
                              input:(TouchBarInput*)aInput {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   176
  NSButton* button = (NSButton*)aMainButton.view;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   177
  // If empty, string is still being localized. Display a blank input instead.
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   178
  if ([[aInput title] isEqualToString:@""]) {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   179
    [button setImagePosition:NSNoImage];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   180
  } else {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   181
    [button setImagePosition:NSImageLeft];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   182
  }
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   183
  button.imageHugsTitle = YES;
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   184
  [aInput setIconPositionSet:true];
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   185
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   186
  aMainButton = (NSCustomTouchBarItem*)[self updateButton:aMainButton input:aInput];
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   187
  [button.widthAnchor constraintGreaterThanOrEqualToConstant:MAIN_BUTTON_WIDTH].active = YES;
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   188
  [button setContentHuggingPriority:1.0 forOrientation:NSLayoutConstraintOrientationHorizontal];
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   189
  return aMainButton;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   190
}
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   191
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   192
- (NSTouchBarItem*)makeShareScrubberForIdentifier:(NSTouchBarItemIdentifier)aIdentifier {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   193
  TouchBarInput* input = self.mappedLayoutItems[aIdentifier];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   194
  // System-default share menu
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   195
  NSSharingServicePickerTouchBarItem* servicesItem =
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   196
      [[NSSharingServicePickerTouchBarItem alloc] initWithIdentifier:aIdentifier];
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   197
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   198
  // buttonImage needs to be set to nil while we wait for our icon to load.
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   199
  // Otherwise, the default Apple share icon is automatically loaded.
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   200
  servicesItem.buttonImage = nil;
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   201
  if ([input imageURI]) {
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   202
    RefPtr<nsTouchBarInputIcon> icon = [input icon];
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   203
    if (!icon) {
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   204
      icon = new nsTouchBarInputIcon([input document], nil, servicesItem);
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   205
      [input setIcon:icon];
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   206
    }
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   207
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   208
    icon->SetupIcon([input imageURI]);
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   209
  }
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   210
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   211
  servicesItem.delegate = self;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   212
  return servicesItem;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   213
}
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   214
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   215
- (void)touchBarAction:(id)aSender {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   216
  NSTouchBarItemIdentifier identifier =
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   217
      objc_getAssociatedObject(aSender, &sIdentifierAssociationKey);
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   218
  if (!identifier || [identifier isEqualToString:@""]) {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   219
    return;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   220
  }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   221
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   222
  TouchBarInput* input = self.mappedLayoutItems[identifier];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   223
  if (!input) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   224
    return;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   225
  }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   226
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   227
  nsCOMPtr<nsITouchBarInputCallback> callback = [input callback];
482915
69020d38197b8d56f4386bc193fdbfc15758cd05 Bug 1566086 - Add error message if touchBarAction crash is encountered. r=spohl
harry <htwyford@mozilla.com>
parents: 481548
diff changeset
   228
  if (!callback) {
69020d38197b8d56f4386bc193fdbfc15758cd05 Bug 1566086 - Add error message if touchBarAction crash is encountered. r=spohl
harry <htwyford@mozilla.com>
parents: 481548
diff changeset
   229
    NSLog(@"Touch Bar action attempted with no valid callback! Identifier: %@",
69020d38197b8d56f4386bc193fdbfc15758cd05 Bug 1566086 - Add error message if touchBarAction crash is encountered. r=spohl
harry <htwyford@mozilla.com>
parents: 481548
diff changeset
   230
          [input nativeIdentifier]);
69020d38197b8d56f4386bc193fdbfc15758cd05 Bug 1566086 - Add error message if touchBarAction crash is encountered. r=spohl
harry <htwyford@mozilla.com>
parents: 481548
diff changeset
   231
    return;
69020d38197b8d56f4386bc193fdbfc15758cd05 Bug 1566086 - Add error message if touchBarAction crash is encountered. r=spohl
harry <htwyford@mozilla.com>
parents: 481548
diff changeset
   232
  }
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   233
  callback->OnCommand();
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   234
}
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   235
458976
69e057ca6ad85a14aa07f388a5b6d44d3fc9f32d Bug 1523944: Fix shutdown leak related to macOS TouchBar support. r=mstange
Stephen A Pohl <spohl.mozilla.bugs@gmail.com>
parents: 455225
diff changeset
   236
- (void)releaseJSObjects {
69e057ca6ad85a14aa07f388a5b6d44d3fc9f32d Bug 1523944: Fix shutdown leak related to macOS TouchBar support. r=mstange
Stephen A Pohl <spohl.mozilla.bugs@gmail.com>
parents: 455225
diff changeset
   237
  mTouchBarHelper = nil;
468599
83e7324dc00b7cfcf4e3f05ebe9523bbbac6d6eb Bug 1542944 - Release nsITouchBarInputCallback earlier so it doesn't leak. r=spohl
Andrew McCreight <continuation@gmail.com>
parents: 458976
diff changeset
   238
83e7324dc00b7cfcf4e3f05ebe9523bbbac6d6eb Bug 1542944 - Release nsITouchBarInputCallback earlier so it doesn't leak. r=spohl
Andrew McCreight <continuation@gmail.com>
parents: 458976
diff changeset
   239
  for (NSTouchBarItemIdentifier identifier in self.mappedLayoutItems) {
83e7324dc00b7cfcf4e3f05ebe9523bbbac6d6eb Bug 1542944 - Release nsITouchBarInputCallback earlier so it doesn't leak. r=spohl
Andrew McCreight <continuation@gmail.com>
parents: 458976
diff changeset
   240
    TouchBarInput* input = self.mappedLayoutItems[identifier];
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   241
    RefPtr<nsTouchBarInputIcon> icon = [input icon];
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   242
    if (icon) {
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   243
      icon->ReleaseJSObjects();
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   244
    }
468599
83e7324dc00b7cfcf4e3f05ebe9523bbbac6d6eb Bug 1542944 - Release nsITouchBarInputCallback earlier so it doesn't leak. r=spohl
Andrew McCreight <continuation@gmail.com>
parents: 458976
diff changeset
   245
    [input setCallback:nil];
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   246
    [input setDocument:nil];
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   247
    [input setImageURI:nil];
468599
83e7324dc00b7cfcf4e3f05ebe9523bbbac6d6eb Bug 1542944 - Release nsITouchBarInputCallback earlier so it doesn't leak. r=spohl
Andrew McCreight <continuation@gmail.com>
parents: 458976
diff changeset
   248
  }
458976
69e057ca6ad85a14aa07f388a5b6d44d3fc9f32d Bug 1523944: Fix shutdown leak related to macOS TouchBar support. r=mstange
Stephen A Pohl <spohl.mozilla.bugs@gmail.com>
parents: 455225
diff changeset
   249
}
69e057ca6ad85a14aa07f388a5b6d44d3fc9f32d Bug 1523944: Fix shutdown leak related to macOS TouchBar support. r=mstange
Stephen A Pohl <spohl.mozilla.bugs@gmail.com>
parents: 455225
diff changeset
   250
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   251
#pragma mark - NSSharingServicePickerTouchBarItemDelegate
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   252
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   253
- (NSArray*)itemsForSharingServicePickerTouchBarItem:
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   254
    (NSSharingServicePickerTouchBarItem*)aPickerTouchBarItem {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   255
  NSURL* urlToShare = nil;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   256
  NSString* titleToShare = @"";
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   257
  nsAutoString url;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   258
  nsAutoString title;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   259
  if (mTouchBarHelper) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   260
    nsresult rv = mTouchBarHelper->GetActiveUrl(url);
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   261
    if (!NS_FAILED(rv)) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   262
      urlToShare = [NSURL URLWithString:nsCocoaUtils::ToNSString(url)];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   263
      // NSURL URLWithString returns nil if the URL is invalid. At this point,
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   264
      // it is too late to simply shut down the share menu, so we default to
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   265
      // about:blank if the share button is clicked when the URL is invalid.
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   266
      if (urlToShare == nil) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   267
        urlToShare = [NSURL URLWithString:@"about:blank"];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   268
      }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   269
    }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   270
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   271
    rv = mTouchBarHelper->GetActiveTitle(title);
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   272
    if (!NS_FAILED(rv)) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   273
      titleToShare = nsCocoaUtils::ToNSString(title);
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   274
    }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   275
  }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   276
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   277
  // If the user has gotten this far, they have clicked the share button so it
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   278
  // is logged.
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   279
  Telemetry::AccumulateCategorical(Telemetry::LABELS_TOUCHBAR_BUTTON_PRESSES::Share);
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   280
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   281
  return @[ urlToShare, titleToShare ];
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   282
}
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   283
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   284
- (NSArray<NSSharingService*>*)sharingServicePicker:(NSSharingServicePicker*)aSharingServicePicker
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   285
                            sharingServicesForItems:(NSArray*)aItems
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   286
                            proposedSharingServices:(NSArray<NSSharingService*>*)aProposedServices {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   287
  // redundant services
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   288
  NSArray* excludedServices = @[
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   289
    @"com.apple.share.System.add-to-safari-reading-list",
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   290
  ];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   291
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   292
  NSArray* sharingServices = [aProposedServices
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   293
      filteredArrayUsingPredicate:[NSPredicate
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   294
                                      predicateWithFormat:@"NOT (name IN %@)", excludedServices]];
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   295
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   296
  return sharingServices;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   297
}
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   298
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   299
@end
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   300
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   301
@implementation TouchBarInput
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   302
- (NSString*)key {
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   303
  return mKey;
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   304
}
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   305
- (NSString*)title {
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   306
  return mTitle;
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   307
}
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   308
- (nsCOMPtr<nsIURI>)imageURI {
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   309
  return mImageURI;
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   310
}
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   311
- (RefPtr<nsTouchBarInputIcon>)icon {
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   312
  return mIcon;
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   313
}
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   314
- (NSString*)type {
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   315
  return mType;
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   316
}
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   317
- (NSColor*)color {
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   318
  return mColor;
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   319
}
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   320
- (BOOL)isDisabled {
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   321
  return mDisabled;
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   322
}
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   323
- (NSTouchBarItemIdentifier)nativeIdentifier {
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   324
  return mNativeIdentifier;
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   325
}
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   326
- (nsCOMPtr<nsITouchBarInputCallback>)callback {
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   327
  return mCallback;
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   328
}
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   329
- (RefPtr<Document>)document {
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   330
  return mDocument;
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   331
}
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   332
- (BOOL)isIconPositionSet {
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   333
  return mIsIconPositionSet;
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   334
}
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   335
- (void)setKey:(NSString*)aKey {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   336
  [aKey retain];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   337
  [mKey release];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   338
  mKey = aKey;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   339
}
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   340
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   341
- (void)setTitle:(NSString*)aTitle {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   342
  [aTitle retain];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   343
  [mTitle release];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   344
  mTitle = aTitle;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   345
}
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   346
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   347
- (void)setImageURI:(nsCOMPtr<nsIURI>)aImageURI {
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   348
  mImageURI = aImageURI;
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   349
}
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   350
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   351
- (void)setIcon:(RefPtr<nsTouchBarInputIcon>)aIcon {
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   352
  mIcon = aIcon;
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   353
}
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   354
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   355
- (void)setType:(NSString*)aType {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   356
  [aType retain];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   357
  [mType release];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   358
  mType = aType;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   359
}
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   360
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   361
- (void)setColor:(NSColor*)aColor {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   362
  [aColor retain];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   363
  [mColor release];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   364
  mColor = aColor;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   365
}
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   366
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   367
- (void)setDisabled:(BOOL)aDisabled {
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   368
  mDisabled = aDisabled;
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   369
}
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   370
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   371
- (void)setNativeIdentifier:(NSTouchBarItemIdentifier)aNativeIdentifier {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   372
  [aNativeIdentifier retain];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   373
  [mNativeIdentifier release];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   374
  mNativeIdentifier = aNativeIdentifier;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   375
}
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   376
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   377
- (void)setCallback:(nsCOMPtr<nsITouchBarInputCallback>)aCallback {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   378
  mCallback = aCallback;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   379
}
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   380
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   381
- (void)setDocument:(RefPtr<Document>)aDocument {
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   382
  if (mIcon) {
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   383
    mIcon->Destroy();
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   384
    mIcon = nil;
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   385
  }
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   386
  mDocument = aDocument;
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   387
}
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   388
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   389
- (void)setIconPositionSet:(BOOL)aIsIconPositionSet {
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   390
  mIsIconPositionSet = aIsIconPositionSet;
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   391
}
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   392
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   393
- (id)initWithKey:(NSString*)aKey
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   394
            title:(NSString*)aTitle
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   395
         imageURI:(nsCOMPtr<nsIURI>)aImageURI
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   396
             type:(NSString*)aType
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   397
         callback:(nsCOMPtr<nsITouchBarInputCallback>)aCallback
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   398
            color:(uint32_t)aColor
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   399
         disabled:(BOOL)aDisabled
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   400
         document:(RefPtr<Document>)aDocument {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   401
  if (self = [super init]) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   402
    [self setKey:aKey];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   403
    [self setTitle:aTitle];
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   404
    [self setImageURI:aImageURI];
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   405
    [self setType:aType];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   406
    [self setCallback:aCallback];
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   407
    [self setDocument:aDocument];
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   408
    [self setIconPositionSet:false];
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   409
    if (aColor) {
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   410
      [self setColor:[NSColor colorWithDisplayP3Red:((aColor >> 16) & 0xFF) / 255.0
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   411
                                              green:((aColor >> 8) & 0xFF) / 255.0
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   412
                                               blue:((aColor)&0xFF) / 255.0
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   413
                                              alpha:1.0]];
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   414
    }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   415
    [self setDisabled:aDisabled];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   416
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   417
    NSTouchBarItemIdentifier TypeIdentifier = @"";
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   418
    if ([aType isEqualToString:@"scrubber"]) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   419
      TypeIdentifier = ScrubberIdentifier;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   420
    } else if ([aType isEqualToString:@"mainButton"]) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   421
      TypeIdentifier = CustomMainButtonIdentifier;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   422
    } else {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   423
      TypeIdentifier = CustomButtonIdentifier;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   424
    }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   425
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   426
    if (!aKey) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   427
      [self setNativeIdentifier:TypeIdentifier];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   428
    } else if ([aKey isEqualToString:@"share"]) {
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   429
      [self setNativeIdentifier:[TypeIdentifier stringByAppendingPathExtension:aKey]];
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   430
    } else {
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   431
      [self setNativeIdentifier:[TypeIdentifier stringByAppendingPathExtension:aKey]];
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   432
    }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   433
  }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   434
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   435
  return self;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   436
}
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   437
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   438
- (TouchBarInput*)initWithXPCOM:(nsCOMPtr<nsITouchBarInput>)aInput {
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   439
  nsAutoString keyStr;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   440
  nsresult rv = aInput->GetKey(keyStr);
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   441
  if (NS_FAILED(rv)) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   442
    return nil;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   443
  }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   444
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   445
  nsAutoString titleStr;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   446
  rv = aInput->GetTitle(titleStr);
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   447
  if (NS_FAILED(rv)) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   448
    return nil;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   449
  }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   450
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   451
  nsCOMPtr<nsIURI> imageURI;
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   452
  rv = aInput->GetImage(getter_AddRefs(imageURI));
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   453
  if (NS_FAILED(rv)) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   454
    return nil;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   455
  }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   456
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   457
  nsAutoString typeStr;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   458
  rv = aInput->GetType(typeStr);
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   459
  if (NS_FAILED(rv)) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   460
    return nil;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   461
  }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   462
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   463
  nsCOMPtr<nsITouchBarInputCallback> callback;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   464
  rv = aInput->GetCallback(getter_AddRefs(callback));
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   465
  if (NS_FAILED(rv)) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   466
    return nil;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   467
  }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   468
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   469
  uint32_t colorInt;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   470
  rv = aInput->GetColor(&colorInt);
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   471
  if (NS_FAILED(rv)) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   472
    return nil;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   473
  }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   474
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   475
  bool disabled = false;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   476
  rv = aInput->GetDisabled(&disabled);
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   477
  if (NS_FAILED(rv)) {
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   478
    return nil;
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   479
  }
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   480
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   481
  RefPtr<Document> document;
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   482
  rv = aInput->GetDocument(getter_AddRefs(document));
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   483
  if (NS_FAILED(rv)) {
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   484
    return nil;
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   485
  }
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   486
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   487
  return [self initWithKey:nsCocoaUtils::ToNSString(keyStr)
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   488
                     title:nsCocoaUtils::ToNSString(titleStr)
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   489
                  imageURI:imageURI
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   490
                      type:nsCocoaUtils::ToNSString(typeStr)
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   491
                  callback:callback
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   492
                     color:colorInt
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   493
                  disabled:(BOOL)disabled
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   494
                  document:document];
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   495
}
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   496
455225
08b686c04a013ca91738d80f6f34b92a86c130eb Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
Sylvestre Ledru <sledru@mozilla.com>
parents: 454830
diff changeset
   497
- (void)dealloc {
483744
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   498
  if (mIcon) {
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   499
    mIcon->Destroy();
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   500
    mIcon = nil;
6bad91b2f1989e35f5dbcaa2a850102a0bcb3078 Bug 1521893 - Part 2 - Support loading SVG icons on the Touch Bar through a new nsTouchBarInputIcon service class r=spohl
harry <htwyford@mozilla.com>
parents: 482915
diff changeset
   501
  }
454830
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   502
  [mKey release];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   503
  [mTitle release];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   504
  [mType release];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   505
  [mColor release];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   506
  [mNativeIdentifier release];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   507
  [super dealloc];
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   508
}
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   509
099f631b90046b102aa1868455f03b7f9942eaba Bug 1313429 - Add Touch Bar functionality to Firefox r=spohl,mikedeboer,flod
Harry Twyford <harry.a.twyford@gmail.com>
parents:
diff changeset
   510
@end