Skip to content

Commit

Permalink
Merge pull request #298 from brave/multi_channel_install_on_mac
Browse files Browse the repository at this point in the history
Make different channel apps run simultaneously on MacOS
  • Loading branch information
bbondy authored Aug 8, 2018
2 parents c3d0cb0 + 061c53b commit 1b5fd09
Show file tree
Hide file tree
Showing 17 changed files with 357 additions and 151 deletions.
3 changes: 2 additions & 1 deletion app/theme/brave/BRANDING
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
COMPANY_FULLNAME=Brave Software, Inc.
COMPANY_SHORTNAME=Brave Software
PRODUCT_FULLNAME=Brave
PRODUCT_FULLNAME=Brave-Browser
PRODUCT_SHORTNAME=Brave
PRODUCT_INSTALLER_FULLNAME=Brave Installer
PRODUCT_INSTALLER_SHORTNAME=Brave Installer
COPYRIGHT=Copyright 2016 The Brave Authors. All rights reserved.
MAC_BUNDLE_ID=org.brave.Brave
MAC_CREATOR_CODE=Cr24
MAC_TEAM_ID=
10 changes: 10 additions & 0 deletions app/theme/brave/BRANDING.beta
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
COMPANY_FULLNAME=Brave Software, Inc.
COMPANY_SHORTNAME=Brave Software
PRODUCT_FULLNAME=Brave-Browser-Beta
PRODUCT_SHORTNAME=Brave
PRODUCT_INSTALLER_FULLNAME=Brave Installer
PRODUCT_INSTALLER_SHORTNAME=Brave Installer
COPYRIGHT=Copyright 2016 The Brave Authors. All rights reserved.
MAC_BUNDLE_ID=org.brave.Brave.beta
MAC_CREATOR_CODE=Cr24
MAC_TEAM_ID=
10 changes: 10 additions & 0 deletions app/theme/brave/BRANDING.dev
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
COMPANY_FULLNAME=Brave Software, Inc.
COMPANY_SHORTNAME=Brave Software
PRODUCT_FULLNAME=Brave-Browser-Dev
PRODUCT_SHORTNAME=Brave
PRODUCT_INSTALLER_FULLNAME=Brave Installer
PRODUCT_INSTALLER_SHORTNAME=Brave Installer
COPYRIGHT=Copyright 2016 The Brave Authors. All rights reserved.
MAC_BUNDLE_ID=org.brave.Brave.dev
MAC_CREATOR_CODE=Cr24
MAC_TEAM_ID=
10 changes: 10 additions & 0 deletions app/theme/brave/BRANDING.development
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
COMPANY_FULLNAME=Brave Software, Inc.
COMPANY_SHORTNAME=Brave Software
PRODUCT_FULLNAME=Brave-Browser-Development
PRODUCT_SHORTNAME=Brave
PRODUCT_INSTALLER_FULLNAME=Brave Installer
PRODUCT_INSTALLER_SHORTNAME=Brave Installer
COPYRIGHT=Copyright 2016 The Brave Authors. All rights reserved.
MAC_BUNDLE_ID=org.brave.Brave.development
MAC_CREATOR_CODE=Cr24
MAC_TEAM_ID=
10 changes: 10 additions & 0 deletions app/theme/brave/BRANDING.nightly
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
COMPANY_FULLNAME=Brave Software, Inc.
COMPANY_SHORTNAME=Brave Software
PRODUCT_FULLNAME=Brave-Browser-Nightly
PRODUCT_SHORTNAME=Brave
PRODUCT_INSTALLER_FULLNAME=Brave Installer
PRODUCT_INSTALLER_SHORTNAME=Brave Installer
COPYRIGHT=Copyright 2016 The Brave Authors. All rights reserved.
MAC_BUNDLE_ID=org.brave.Brave.nightly
MAC_CREATOR_CODE=Cr24
MAC_TEAM_ID=
30 changes: 2 additions & 28 deletions build/config.gni
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ if (_update_channel == "") {
}
brave_feed_url = "$base_sparkle_update_url/$_update_channel/appcast.xml"


brave_version = "$brave_version_major.$brave_version_minor.$brave_version_build"

if (brave_exe == "") {
Expand All @@ -44,11 +43,8 @@ if (is_win) {
brave_exe = "$brave_exe.exe"
} else if (is_mac) {
brave_exe = "$chrome_product_full_name.app"
}

brave_icon_dir = "nightly"
if (is_component_build) {
brave_icon_dir = "dev"
brave_dmg = "$chrome_product_full_name.dmg"
brave_product_dir_name = "BraveSoftware/$chrome_product_full_name"
}

brave_platform = "darwin"
Expand All @@ -57,25 +53,3 @@ if (is_win) {
} else if (is_linux) {
brave_platform = "linux"
}

brave_product_dir_name_suffix = ""

if (is_official_build) {
if (brave_channel == "beta") {
brave_product_dir_name_suffix = "-Beta"
} else if (brave_channel == "dev") {
brave_product_dir_name_suffix = "-Dev"
} else if (brave_channel == "nightly") {
brave_product_dir_name_suffix = "-Nightly"
} else {
assert(brave_channel == "", "Unknown channel name")
}
} else {
brave_product_dir_name_suffix = "-Development"
}

brave_product_dir_name = "BraveSoftware/Brave-Browser$brave_product_dir_name_suffix"

if (is_mac) {
brave_target_app_name = "Brave-Browser$brave_product_dir_name_suffix"
}
22 changes: 11 additions & 11 deletions build/mac/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@ declare_args() {
mac_signing_keychain = "login"
}

_packaging_dir = "$root_out_dir/$brave_product_name Packaging"
_packaging_dir = "$root_out_dir/$chrome_product_full_name Packaging"
keychain_db = getenv("HOME") + "/Library/Keychains/login.${mac_signing_keychain}-db"

_target_app_path = "$root_out_dir/signing/$brave_target_app_name.app"
_target_app_path = "$root_out_dir/signing/$brave_exe"

group("brave") {}

action("sign_app") {
brave_app = "$root_build_dir/Brave.app"
brave_app = "$root_build_dir/$brave_exe"

script = "//build/gn_run_binary.py"
shell_script = "//brave/build/mac/sign_app.sh"
Expand Down Expand Up @@ -42,7 +42,7 @@ action("sign_app") {
}

action("create_dmg") {
output = "$root_out_dir/unsigned/$brave_target_app_name.dmg"
output = "$root_out_dir/unsigned/$brave_dmg"
script = "//build/gn_run_binary.py"
shell_script = "//chrome/installer/mac/pkg-dmg"
inputs = [
Expand All @@ -53,10 +53,10 @@ action("create_dmg") {
args = [
rebase_path(shell_script, root_build_dir),
"--source", "/var/empty",
"--target", "unsigned/$brave_target_app_name.dmg",
"--target", "unsigned/$brave_dmg",
"--format", "UDBZ",
"--verbosity", "0",
"--volname", "$brave_target_app_name",
"--volname", "$chrome_product_full_name",
"--copy", rebase_path(_target_app_path, root_build_dir),
"--tempdir", "/tmp",
"--symlink", "/Applications",
Expand All @@ -71,16 +71,16 @@ action("sign_dmg") {
inputs = [
script,
shell_script,
"$root_out_dir/unsigned/$brave_target_app_name.dmg",
"$root_out_dir/unsigned/$brave_dmg",
]
outputs = [ "${root_out_dir}/signing/$brave_target_app_name.dmg" ]
outputs = [ "${root_out_dir}/signing/$brave_dmg" ]
args = [
rebase_path(shell_script, root_build_dir),
rebase_path("$root_out_dir/unsigned/$brave_target_app_name.dmg"),
rebase_path("$root_out_dir/$brave_target_app_name.dmg"),
rebase_path("$root_out_dir/unsigned/$brave_dmg"),
rebase_path("$root_out_dir/$brave_dmg"),
keychain_db,
mac_signing_identifier,
"-r=designated => identifier \"$brave_target_app_name\" and certificate leaf = H\"$mac_signing_identifier\"",
"-r=designated => identifier \"$chrome_product_full_name\" and certificate leaf = H\"$mac_signing_identifier\"",
]

deps = [":create_dmg"]
Expand Down
213 changes: 213 additions & 0 deletions chromium_src/chrome/common/chrome_constants.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/common/chrome_constants.h"

#include "build/build_config.h"
#include "chrome/common/chrome_version.h"

#define FPL FILE_PATH_LITERAL

#if defined(OS_MACOSX)
#define CHROMIUM_PRODUCT_STRING BRAVE_PRODUCT_STRING
#define PRODUCT_STRING BRAVE_PRODUCT_STRING
#endif // defined(OS_MACOSX)

namespace chrome {

const char kChromeVersion[] = CHROME_VERSION_STRING;

// The following should not be used for UI strings; they are meant
// for system strings only. UI changes should be made in the GRD.
//
// There are four constants used to locate the executable name and path:
//
// kBrowserProcessExecutableName
// kHelperProcessExecutableName
// kBrowserProcessExecutablePath
// kHelperProcessExecutablePath
//
// In one condition, our tests will be built using the Chrome branding
// though we want to actually execute a Chromium branded application.
// This happens for the reference build on Mac. To support that case,
// we also include a Chromium version of each of the four constants and
// in the UITest class we support switching to that version when told to
// do so.

#if defined(OS_WIN)
const base::FilePath::CharType kBrowserProcessExecutableNameChromium[] =
FPL("brave.exe");
const base::FilePath::CharType kBrowserProcessExecutableName[] =
FPL("brave.exe");
const base::FilePath::CharType kHelperProcessExecutableNameChromium[] =
FPL("brave.exe");
const base::FilePath::CharType kHelperProcessExecutableName[] =
FPL("brave.exe");
#elif defined(OS_MACOSX)
const base::FilePath::CharType kBrowserProcessExecutableNameChromium[] =
FPL(CHROMIUM_PRODUCT_STRING);
const base::FilePath::CharType kBrowserProcessExecutableName[] =
FPL(PRODUCT_STRING);
const base::FilePath::CharType kHelperProcessExecutableNameChromium[] =
FPL(CHROMIUM_PRODUCT_STRING " Helper");
const base::FilePath::CharType kHelperProcessExecutableName[] =
FPL(PRODUCT_STRING " Helper");
#elif defined(OS_ANDROID)
// NOTE: Keep it synced with the process names defined in AndroidManifest.xml.
const base::FilePath::CharType kBrowserProcessExecutableName[] = FPL("brave");
const base::FilePath::CharType kBrowserProcessExecutableNameChromium[] =
FPL("");
const base::FilePath::CharType kHelperProcessExecutableName[] =
FPL("sandboxed_process");
const base::FilePath::CharType kHelperProcessExecutableNameChromium[] = FPL("");
#elif defined(OS_POSIX)
const base::FilePath::CharType kBrowserProcessExecutableNameChromium[] =
FPL("brave");
const base::FilePath::CharType kBrowserProcessExecutableName[] = FPL("brave");
// Helper processes end up with a name of "exe" due to execing via
// /proc/self/exe. See bug 22703.
const base::FilePath::CharType kHelperProcessExecutableNameChromium[] =
FPL("exe");
const base::FilePath::CharType kHelperProcessExecutableName[] = FPL("exe");
#endif // OS_*

#if defined(OS_WIN)
const base::FilePath::CharType kBrowserProcessExecutablePathChromium[] =
FPL("brave.exe");
const base::FilePath::CharType kBrowserProcessExecutablePath[] =
FPL("brave.exe");
const base::FilePath::CharType kHelperProcessExecutablePathChromium[] =
FPL("brave.exe");
const base::FilePath::CharType kHelperProcessExecutablePath[] =
FPL("brave.exe");
#elif defined(OS_MACOSX)
const base::FilePath::CharType kBrowserProcessExecutablePathChromium[] =
FPL(CHROMIUM_PRODUCT_STRING ".app/Contents/MacOS/" CHROMIUM_PRODUCT_STRING);
const base::FilePath::CharType kBrowserProcessExecutablePath[] =
FPL(PRODUCT_STRING ".app/Contents/MacOS/" PRODUCT_STRING);
const base::FilePath::CharType kHelperProcessExecutablePathChromium[] =
FPL(CHROMIUM_PRODUCT_STRING " Helper.app/Contents/MacOS/"
CHROMIUM_PRODUCT_STRING " Helper");
const base::FilePath::CharType kHelperProcessExecutablePath[] =
FPL(PRODUCT_STRING " Helper.app/Contents/MacOS/" PRODUCT_STRING " Helper");
#elif defined(OS_ANDROID)
const base::FilePath::CharType kBrowserProcessExecutablePath[] = FPL("brave");
const base::FilePath::CharType kHelperProcessExecutablePath[] = FPL("brave");
const base::FilePath::CharType kBrowserProcessExecutablePathChromium[] =
FPL("brave");
const base::FilePath::CharType kHelperProcessExecutablePathChromium[] =
FPL("brave");
#elif defined(OS_POSIX)
const base::FilePath::CharType kBrowserProcessExecutablePathChromium[] =
FPL("brave");
const base::FilePath::CharType kBrowserProcessExecutablePath[] = FPL("brave");
const base::FilePath::CharType kHelperProcessExecutablePathChromium[] =
FPL("brave");
const base::FilePath::CharType kHelperProcessExecutablePath[] = FPL("brave");
#endif // OS_*

#if defined(OS_MACOSX)
const base::FilePath::CharType kFrameworkName[] =
FPL(PRODUCT_STRING " Framework.framework");
const base::FilePath::CharType kFrameworkExecutableName[] =
FPL(PRODUCT_STRING " Framework");
#endif // OS_MACOSX

#if defined(OS_WIN)
const base::FilePath::CharType kBrowserResourcesDll[] = FPL("chrome.dll");
const base::FilePath::CharType kStatusTrayWindowClass[] =
FPL("Chrome_StatusTrayWindow");
#endif // defined(OS_WIN)

const char kInitialProfile[] = "Default";
const char kMultiProfileDirPrefix[] = "Profile ";
const base::FilePath::CharType kGuestProfileDir[] = FPL("Guest Profile");
const base::FilePath::CharType kSystemProfileDir[] = FPL("System Profile");

// filenames
const base::FilePath::CharType kCacheDirname[] = FPL("Cache");
const base::FilePath::CharType kChannelIDFilename[] = FPL("Origin Bound Certs");
const base::FilePath::CharType kCookieFilename[] = FPL("Cookies");
const base::FilePath::CharType kCRLSetFilename[] =
FPL("Certificate Revocation Lists");
const base::FilePath::CharType kCustomDictionaryFileName[] =
FPL("Custom Dictionary.txt");
const base::FilePath::CharType kDownloadServiceStorageDirname[] =
FPL("Download Service");
const base::FilePath::CharType kExtensionActivityLogFilename[] =
FPL("Extension Activity");
const base::FilePath::CharType kExtensionsCookieFilename[] =
FPL("Extension Cookies");
const base::FilePath::CharType kFeatureEngagementTrackerStorageDirname[] =
FPL("Feature Engagement Tracker");
const base::FilePath::CharType kFirstRunSentinel[] = FPL("First Run");
const base::FilePath::CharType kGCMStoreDirname[] = FPL("GCM Store");
const base::FilePath::CharType kLocalStateFilename[] = FPL("Local State");
const base::FilePath::CharType kMediaCacheDirname[] = FPL("Media Cache");
const base::FilePath::CharType kNetworkPersistentStateFilename[] =
FPL("Network Persistent State");
const base::FilePath::CharType kOfflinePageArchivesDirname[] =
FPL("Offline Pages/archives");
const base::FilePath::CharType kOfflinePageMetadataDirname[] =
FPL("Offline Pages/metadata");
const base::FilePath::CharType kOfflinePagePrefetchStoreDirname[] =
FPL("Offline Pages/prefech_store");
const base::FilePath::CharType kOfflinePageRequestQueueDirname[] =
FPL("Offline Pages/request_queue");
const base::FilePath::CharType kPageLoadCappingOptOutDBFilename[] =
FPL("page_load_capping_opt_out.db");
const base::FilePath::CharType kPreferencesFilename[] = FPL("Preferences");
const base::FilePath::CharType kPreviewsOptOutDBFilename[] =
FPL("previews_opt_out.db");
const base::FilePath::CharType kReadmeFilename[] = FPL("README");
const base::FilePath::CharType kSecurePreferencesFilename[] =
FPL("Secure Preferences");
const base::FilePath::CharType kServiceStateFileName[] = FPL("Service State");
const base::FilePath::CharType kSingletonCookieFilename[] =
FPL("SingletonCookie");
const base::FilePath::CharType kSingletonLockFilename[] = FPL("SingletonLock");
const base::FilePath::CharType kSingletonSocketFilename[] =
FPL("SingletonSocket");
const base::FilePath::CharType kSupervisedUserSettingsFilename[] =
FPL("Managed Mode Settings");
const base::FilePath::CharType kThemePackFilename[] = FPL("Cached Theme.pak");
const base::FilePath::CharType kWebAppDirname[] = FPL("Web Applications");

#if defined(OS_WIN)
const base::FilePath::CharType kJumpListIconDirname[] = FPL("JumpListIcons");
#endif

// File name of the Pepper Flash plugin on different platforms.
const base::FilePath::CharType kPepperFlashPluginFilename[] =
#if defined(OS_MACOSX)
FPL("PepperFlashPlayer.plugin");
#elif defined(OS_WIN)
FPL("pepflashplayer.dll");
#else // OS_LINUX, etc.
FPL("libpepflashplayer.so");
#endif

// directory names
#if defined(OS_WIN)
const wchar_t kUserDataDirname[] = L"User Data";
#endif

const float kMaxShareOfExtensionProcesses = 0.30f;

#if defined(OS_LINUX)
const int kLowestRendererOomScore = 300;
const int kHighestRendererOomScore = 1000;
#endif

// This GUID is associated with any 'don't ask me again' settings that the
// user can select for different file types.
// {2676A9A2-D919-4FEE-9187-152100393AB2}
const char kApplicationClientIDStringForAVScanning[] =
"2676A9A2-D919-4FEE-9187-152100393AB2";

const size_t kMaxMetaTagAttributeLength = 2000;

} // namespace chrome

#undef FPL
15 changes: 15 additions & 0 deletions chromium_src/chrome/common/chrome_constants_unittest_mac.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "chrome/common/chrome_constants.h"

#include <string>

#include "testing/gtest/include/gtest/gtest.h"

// Only checks prefix (Brave-Browser) because test build don't update branding.
TEST(ChromeConstantsTest, ProductStringTest) {
EXPECT_EQ(std::string(chrome::kFrameworkName).substr(0, 13),
"Brave-Browser");
}
Loading

0 comments on commit 1b5fd09

Please sign in to comment.