|
[Mac] Inform reference counted objects that hold a weak Browser* when the Browser is being destroyed.
In 10.10, when ToolbarController's NSView is loaded, NSNib creates a
dictionary that retains ToolbarController. This dictionary is later
autoreleased. This causes ToolbarController to briefly outlive Browser
when the BrowserWindow closes. Objects whose lifetime is tied to
ToolbarController may hold a weak Browser* and attempt to access it
during destruction resulting in a use-after-free. This can also happen
with other similar reference-counted objects like WrenchMenuController.
This CL adds -browserWillBeDestroyed to many of these objects so they
can invalidate their Browser* and pass the notification onto other
similar objects. Any use-after-free becomes a null pointer dereference
which we can detect and fix.
BUG= 506745, 505710
Committed: https://crrev.com/0e97f8a8934f34fb6f5aba7214eb8470862c52b6
Cr-Commit-Position: refs/heads/master@{#338198}
Total comments: 20
Total comments: 14
Total comments: 4
Total comments: 10
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+235 lines, -106 lines) |
Patch |
 |
M |
chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h
|
View
|
1
2
3
4
5
6
7
8
9
10
11
|
2 chunks |
+8 lines, -6 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm
|
View
|
1
2
3
4
5
6
7
8
9
10
|
2 chunks |
+6 lines, -1 line |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/browser_window_controller.mm
|
View
|
1
2
3
4
5
6
7
8
9
10
11
|
4 chunks |
+18 lines, -6 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/download/download_shelf_controller.h
|
View
|
1
2
3
4
5
6
7
8
9
10
11
|
3 chunks |
+3 lines, -5 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/download/download_shelf_controller.mm
|
View
|
1
2
3
4
5
6
7
8
9
10
11
|
2 chunks |
+17 lines, -17 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/download/download_shelf_controller_unittest.mm
|
View
|
1
2
3
4
5
6
7
8
9
10
11
|
2 chunks |
+1 line, -2 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/extensions/browser_actions_controller.h
|
View
|
1
2
3
4
5
6
7
8
9
10
11
|
2 chunks |
+3 lines, -1 line |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm
|
View
|
1
2
3
4
5
6
7
8
9
10
11
|
1 chunk |
+11 lines, -3 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/find_bar/find_bar_cocoa_controller.h
|
View
|
1
2
3
4
5
6
7
8
9
10
11
|
2 chunks |
+2 lines, -1 line |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/find_bar/find_bar_cocoa_controller.mm
|
View
|
1
2
3
4
5
6
7
8
9
10
11
|
1 chunk |
+6 lines, -1 line |
0 comments
|
Download
|
 |
A |
chrome/browser/ui/cocoa/has_weak_browser_pointer.h
|
View
|
1
2
3
4
5
6
7
8
9
10
11
|
1 chunk |
+22 lines, -0 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/profiles/avatar_base_controller.h
|
View
|
1
2
3
4
5
6
7
8
9
10
11
12
|
2 chunks |
+2 lines, -1 line |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/profiles/avatar_base_controller.mm
|
View
|
1
2
3
4
5
6
7
8
9
10
11
|
1 chunk |
+6 lines, -1 line |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/tab_contents/overlayable_contents_controller.h
|
View
|
1
2
3
4
5
|
2 chunks |
+0 lines, -10 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/tab_contents/overlayable_contents_controller.mm
|
View
|
|
1 chunk |
+1 line, -3 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/tabs/tab_strip_controller.h
|
View
|
1
2
3
4
5
6
7
8
9
10
11
|
2 chunks |
+4 lines, -3 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/tabs/tab_strip_controller.mm
|
View
|
1
2
3
4
5
6
7
8
9
10
11
|
2 chunks |
+7 lines, -1 line |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/toolbar/back_forward_menu_controller.h
|
View
|
1
2
3
4
5
6
7
8
9
10
11
|
2 chunks |
+5 lines, -2 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/toolbar/back_forward_menu_controller.mm
|
View
|
1
2
3
4
5
6
7
8
|
1 chunk |
+7 lines, -0 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/toolbar/toolbar_controller.h
|
View
|
1
2
3
4
5
6
7
8
9
10
11
|
5 chunks |
+4 lines, -5 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/toolbar/toolbar_controller.mm
|
View
|
1
2
3
4
5
6
7
8
9
10
11
12
|
5 chunks |
+45 lines, -29 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/toolbar/toolbar_controller_unittest.mm
|
View
|
1
2
3
4
5
6
7
8
|
4 chunks |
+5 lines, -7 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller.h
|
View
|
1
2
3
4
5
6
7
8
9
10
11
|
2 chunks |
+3 lines, -1 line |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller.mm
|
View
|
1
2
3
4
5
6
7
8
9
10
11
|
2 chunks |
+19 lines, -0 lines |
0 comments
|
Download
|
 |
M |
chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller_unittest.mm
|
View
|
1
2
3
|
2 chunks |
+29 lines, -0 lines |
0 comments
|
Download
|
 |
M |
chrome/chrome_browser_ui.gypi
|
View
|
1
2
3
4
5
6
7
8
9
10
11
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
Total messages: 23 (5 generated)
|