@@ -66,47 +66,79 @@ const util = {
66
66
const braveBrowserDir = path . join ( config . projects [ 'brave-core' ] . dir , 'browser' )
67
67
const braveAppVectorIconsDir = path . join ( config . projects [ 'brave-core' ] . dir , 'vector_icons' , 'chrome' , 'app' )
68
68
69
- // The following 3 entries we map to the same name, not the chromium equivalent name for copying back
70
- autoGeneratedBraveToChromiumMapping [ path . join ( braveAppDir , 'brave_strings.grd' ) ] = path . join ( chromeAppDir , 'brave_strings.grd' )
71
- autoGeneratedBraveToChromiumMapping [ path . join ( braveAppDir , 'settings_brave_strings.grdp' ) ] = path . join ( chromeAppDir , 'settings_brave_strings.grdp' )
72
- autoGeneratedBraveToChromiumMapping [ path . join ( braveAppDir , 'components_brave_strings.grd' ) ] = path . join ( config . srcDir , 'components' , 'components_brave_strings.grd' )
69
+ let fileMap = { }
70
+ fileMap [ path . join ( braveAppDir , 'brave_strings.grd' ) ] = path . join ( chromeAppDir , 'brave_strings.grd' )
71
+ fileMap [ path . join ( braveAppDir , 'settings_brave_strings.grdp' ) ] = path . join ( chromeAppDir , 'settings_brave_strings.grdp' )
72
+ fileMap [ path . join ( braveAppDir , 'components_brave_strings.grd' ) ] = path . join ( config . srcDir , 'components' , 'components_brave_strings.grd' )
73
73
74
- // Copy each grd back to Chromium src dir
75
- Object . entries ( autoGeneratedBraveToChromiumMapping ) . forEach ( ( [ bravePath , chromiumPath ] ) =>
76
- fs . copySync ( bravePath , chromiumPath ) )
77
74
78
75
// Copy xtb files for:
79
76
// brave/app/resources/chromium_strings*.xtb
80
77
// brave/app/strings/components_chromium_strings*.xtb
81
78
// brave/app/resources/generated_resoruces*.xtb
82
- fs . copySync ( path . join ( braveAppDir , 'resources' ) , path . join ( chromeAppDir , 'resources' ) )
83
- fs . copySync ( path . join ( braveAppDir , 'strings' ) , path . join ( chromeComponentsDir , 'strings' ) )
79
+ fileMap [ path . join ( braveAppDir , 'resources' ) ] = path . join ( chromeAppDir , 'resources' )
80
+ fileMap [ path . join ( braveAppDir , 'strings' ) ] = path . join ( chromeComponentsDir , 'strings' )
84
81
85
- fs . copySync ( path . join ( braveAppDir , 'theme' , 'brave' ) , path . join ( chromeAppDir , 'theme' , 'brave' ) )
86
- fs . copySync ( path . join ( braveAppDir , 'theme' , 'default_100_percent' , 'brave' ) , path . join ( chromeAppDir , 'theme' , 'default_100_percent' , 'brave' ) )
87
- fs . copySync ( path . join ( braveAppDir , 'theme' , 'default_200_percent' , 'brave' ) , path . join ( chromeAppDir , 'theme' , 'default_200_percent' , 'brave' ) )
82
+ fileMap [ path . join ( braveAppDir , 'theme' , 'brave' ) ] = path . join ( chromeAppDir , 'theme' , 'brave' )
83
+ fileMap [ path . join ( braveAppDir , 'theme' , 'default_100_percent' , 'brave' ) ] = path . join ( chromeAppDir , 'theme' , 'default_100_percent' , 'brave' )
84
+ fileMap [ path . join ( braveAppDir , 'theme' , 'default_200_percent' , 'brave' ) ] = path . join ( chromeAppDir , 'theme' , 'default_200_percent' , 'brave' )
88
85
// By overwriting, we don't need to modify some grd files.
89
- fs . copySync ( path . join ( braveAppDir , 'theme' , 'brave' ) , path . join ( chromeAppDir , 'theme' , 'chromium' ) )
90
- fs . copySync ( path . join ( braveAppDir , 'theme' , 'default_100_percent' , 'brave' ) , path . join ( chromeAppDir , 'theme' , 'default_100_percent' , 'chromium' ) )
91
- fs . copySync ( path . join ( braveAppDir , 'theme' , 'default_200_percent' , 'brave' ) , path . join ( chromeAppDir , 'theme' , 'default_200_percent' , 'chromium' ) )
92
- fs . copySync ( path . join ( braveComponentsDir , 'resources' , 'default_100_percent' , 'brave' ) , path . join ( chromeComponentsDir , 'resources' , 'default_100_percent' , 'chromium' ) )
93
- fs . copySync ( path . join ( braveComponentsDir , 'resources' , 'default_200_percent' , 'brave' ) , path . join ( chromeComponentsDir , 'resources' , 'default_200_percent' , 'chromium' ) )
94
- fs . copySync ( path . join ( braveAppVectorIconsDir , 'vector_icons' , 'brave' ) , path . join ( chromeAppDir , 'vector_icons' , 'brave' ) )
95
- fs . copySync ( path . join ( braveResourcesDir , 'settings' , 'brave_page_visibility.js' ) , path . join ( chromeResourcesDir , 'settings' , 'brave_page_visibility.js' ) )
96
- fs . copySync ( path . join ( braveResourcesDir , 'settings' , 'brave_appearance_page' ) , path . join ( chromeResourcesDir , 'settings' , 'brave_appearance_page' ) )
86
+ fileMap [ path . join ( braveAppDir , 'theme' , 'brave' ) ] = path . join ( chromeAppDir , 'theme' , 'chromium' )
87
+ fileMap [ path . join ( braveAppDir , 'theme' , 'default_100_percent' , 'brave' ) ] = path . join ( chromeAppDir , 'theme' , 'default_100_percent' , 'chromium' )
88
+ fileMap [ path . join ( braveAppDir , 'theme' , 'default_200_percent' , 'brave' ) ] = path . join ( chromeAppDir , 'theme' , 'default_200_percent' , 'chromium' )
89
+ fileMap [ path . join ( braveComponentsDir , 'resources' , 'default_100_percent' , 'brave' ) ] = path . join ( chromeComponentsDir , 'resources' , 'default_100_percent' , 'chromium' )
90
+ fileMap [ path . join ( braveComponentsDir , 'resources' , 'default_200_percent' , 'brave' ) ] = path . join ( chromeComponentsDir , 'resources' , 'default_200_percent' , 'chromium' )
91
+ fileMap [ path . join ( braveAppVectorIconsDir , 'vector_icons' , 'brave' ) ] = path . join ( chromeAppDir , 'vector_icons' , 'brave' )
92
+ fileMap [ path . join ( braveResourcesDir , 'settings' , 'brave_page_visibility.js' ) ] = path . join ( chromeResourcesDir , 'settings' , 'brave_page_visibility.js' )
93
+ fileMap [ path . join ( braveResourcesDir , 'settings' , 'brave_appearance_page' ) ] = path . join ( chromeResourcesDir , 'settings' , 'brave_appearance_page' )
97
94
98
95
if ( process . platform === 'darwin' ) {
99
96
// Copy proper mac app icon for channel to chrome/app/theme/mac/app.icns.
100
97
// Each channel's app icons are stored in brave/app/theme/$channel/app.icns.
101
98
// With this copying, we don't need to modify chrome/BUILD.gn for this.
102
- fs . copySync ( path . join ( braveAppDir , 'theme' , 'brave' , 'mac' , config . channel , 'app.icns' ) ,
103
- path . join ( chromeAppDir , 'theme' , 'brave' , 'mac' , 'app.icns' ) )
99
+ fileMap [ path . join ( braveAppDir , 'theme' , 'brave' , 'mac' , config . channel , 'app.icns' ) ] =
100
+ path . join ( chromeAppDir , 'theme' , 'brave' , 'mac' , 'app.icns' )
104
101
105
102
// Copy branding file
106
103
let branding_file_name = 'BRANDING'
107
104
if ( config . channel )
108
105
branding_file_name = branding_file_name + '.' + config . channel
109
- fs . copySync ( path . join ( braveAppDir , 'theme' , 'brave' , branding_file_name ) , path . join ( chromeAppDir , 'theme' , 'brave' , 'BRANDING' ) )
106
+ fileMap [ path . join ( braveAppDir , 'theme' , 'brave' , branding_file_name ) ] =
107
+ path . join ( chromeAppDir , 'theme' , 'brave' , 'BRANDING' )
108
+ }
109
+
110
+ for ( source in fileMap ) {
111
+ let sourceFiles = [ ]
112
+ const output = fileMap [ source ]
113
+
114
+ // get all the files if source if a directory
115
+ if ( fs . statSync ( source ) . isDirectory ( ) ) {
116
+ sourceFiles = util . walkSync ( source )
117
+ } else {
118
+ sourceFiles = [ source ]
119
+ }
120
+
121
+ for ( var i in sourceFiles ) {
122
+ const sourceFile = sourceFiles [ i ]
123
+ let destinationFile = output
124
+ if ( fs . statSync ( destinationFile ) . isDirectory ( ) ) {
125
+ destinationFile = path . join ( destinationFile , path . basename ( sourceFile ) )
126
+ }
127
+
128
+ // The destination file might be newer when updating chromium so
129
+ // we check for an exact match on the timestamp. We use seconds instead
130
+ // of ms because utimesSync doesn't set the times with ms precision
131
+ if ( ! fs . existsSync ( destinationFile ) ||
132
+ Math . floor ( new Date ( fs . statSync ( sourceFile ) . mtimeMs ) . getTime ( ) / 1000 ) !=
133
+ Math . floor ( new Date ( fs . statSync ( destinationFile ) . mtimeMs ) . getTime ( ) / 1000 ) ) {
134
+ fs . copySync ( sourceFile , destinationFile )
135
+ // can't set the date in the past so update the source file
136
+ // to match the newly copied destionation file
137
+ const date = fs . statSync ( destinationFile ) . mtime
138
+ fs . utimesSync ( sourceFile , date , date )
139
+ console . log ( sourceFile + ' copied to ' + destinationFile )
140
+ }
141
+ }
110
142
}
111
143
} ,
112
144
@@ -179,6 +211,17 @@ const util = {
179
211
args += arg + '=' + val + ' '
180
212
}
181
213
return args . replace ( / " / g, '\\"' )
214
+ } ,
215
+
216
+ walkSync : ( dir , filter = null , filelist = [ ] ) => {
217
+ fs . readdirSync ( dir ) . forEach ( file => {
218
+ if ( fs . statSync ( path . join ( dir , file ) ) . isDirectory ( ) ) {
219
+ filelist = util . walkSync ( path . join ( dir , file ) , filter , filelist )
220
+ } else if ( ! filter || filter . call ( null , file ) ) {
221
+ filelist = filelist . concat ( path . join ( dir , file ) )
222
+ }
223
+ } )
224
+ return filelist
182
225
}
183
226
}
184
227
0 commit comments