Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/shell/shell.h" | 5 #include "content/shell/shell.h" |
| 6 | 6 |
| 7 #include "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
| 10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 22 #include "content/shell/shell_switches.h" | 22 #include "content/shell/shell_switches.h" |
| 23 #include "ui/gfx/size.h" | 23 #include "ui/gfx/size.h" |
| 24 | 24 |
| 25 // Content area size for newly created windows. | 25 // Content area size for newly created windows. |
| 26 static const int kTestWindowWidth = 800; | 26 static const int kTestWindowWidth = 800; |
| 27 static const int kTestWindowHeight = 600; | 27 static const int kTestWindowHeight = 600; |
| 28 | 28 |
| 29 namespace content { | 29 namespace content { |
| 30 | 30 |
| 31 std::vector<Shell*> Shell::windows_; | 31 std::vector<Shell*> Shell::windows_; |
| 32 base::Callback<void(Shell*)> Shell::shell_created_callback_; | |
| 32 | 33 |
| 33 bool Shell::quit_message_loop_ = true; | 34 bool Shell::quit_message_loop_ = true; |
| 34 | 35 |
| 35 Shell::Shell(WebContents* web_contents) | 36 Shell::Shell(WebContents* web_contents) |
| 36 : window_(NULL), | 37 : window_(NULL), |
| 37 url_edit_view_(NULL) | 38 url_edit_view_(NULL) |
| 38 #if defined(OS_WIN) && !defined(USE_AURA) | 39 #if defined(OS_WIN) && !defined(USE_AURA) |
| 39 , default_edit_wnd_proc_(0) | 40 , default_edit_wnd_proc_(0) |
| 40 #endif | 41 #endif |
| 41 { | 42 { |
|
Charlie Reis
2012/07/30 16:40:01
This macro makes for an odd indent situation. I'm
jam
2012/07/30 17:03:50
I'm not sure what's recommended in this case. when
| |
| 42 registrar_.Add(this, NOTIFICATION_WEB_CONTENTS_TITLE_UPDATED, | 43 registrar_.Add(this, NOTIFICATION_WEB_CONTENTS_TITLE_UPDATED, |
| 43 Source<WebContents>(web_contents)); | 44 Source<WebContents>(web_contents)); |
| 44 windows_.push_back(this); | 45 windows_.push_back(this); |
| 46 | |
| 47 if (!shell_created_callback_.is_null()) { | |
| 48 shell_created_callback_.Run(this); | |
| 49 shell_created_callback_.Reset(); | |
| 50 } | |
| 45 } | 51 } |
| 46 | 52 |
| 47 Shell::~Shell() { | 53 Shell::~Shell() { |
| 48 PlatformCleanUp(); | 54 PlatformCleanUp(); |
| 49 | 55 |
| 50 for (size_t i = 0; i < windows_.size(); ++i) { | 56 for (size_t i = 0; i < windows_.size(); ++i) { |
| 51 if (windows_[i] == this) { | 57 if (windows_[i] == this) { |
| 52 windows_.erase(windows_.begin() + i); | 58 windows_.erase(windows_.begin() + i); |
| 53 break; | 59 break; |
| 54 } | 60 } |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 72 } | 78 } |
| 73 | 79 |
| 74 void Shell::CloseAllWindows() { | 80 void Shell::CloseAllWindows() { |
| 75 AutoReset<bool> auto_reset(&quit_message_loop_, false); | 81 AutoReset<bool> auto_reset(&quit_message_loop_, false); |
| 76 std::vector<Shell*> open_windows(windows_); | 82 std::vector<Shell*> open_windows(windows_); |
| 77 for (size_t i = 0; i < open_windows.size(); ++i) | 83 for (size_t i = 0; i < open_windows.size(); ++i) |
| 78 open_windows[i]->Close(); | 84 open_windows[i]->Close(); |
| 79 MessageLoop::current()->RunAllPending(); | 85 MessageLoop::current()->RunAllPending(); |
| 80 } | 86 } |
| 81 | 87 |
| 88 void Shell::SetShellCreatedCallback( | |
| 89 base::Callback<void(Shell*)> shell_created_callback) { | |
| 90 DCHECK(shell_created_callback_.is_null()); | |
| 91 shell_created_callback_ = shell_created_callback; | |
| 92 } | |
| 93 | |
| 82 Shell* Shell::FromRenderViewHost(RenderViewHost* rvh) { | 94 Shell* Shell::FromRenderViewHost(RenderViewHost* rvh) { |
| 83 for (size_t i = 0; i < windows_.size(); ++i) { | 95 for (size_t i = 0; i < windows_.size(); ++i) { |
| 84 if (windows_[i]->web_contents() && | 96 if (windows_[i]->web_contents() && |
| 85 windows_[i]->web_contents()->GetRenderViewHost() == rvh) { | 97 windows_[i]->web_contents()->GetRenderViewHost() == rvh) { |
| 86 return windows_[i]; | 98 return windows_[i]; |
| 87 } | 99 } |
| 88 } | 100 } |
| 89 return NULL; | 101 return NULL; |
| 90 } | 102 } |
| 91 | 103 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 138 PlatformEnableUIControl(FORWARD_BUTTON, current_index < max_index); | 150 PlatformEnableUIControl(FORWARD_BUTTON, current_index < max_index); |
| 139 PlatformEnableUIControl(STOP_BUTTON, web_contents_->IsLoading()); | 151 PlatformEnableUIControl(STOP_BUTTON, web_contents_->IsLoading()); |
| 140 } | 152 } |
| 141 | 153 |
| 142 gfx::NativeView Shell::GetContentView() { | 154 gfx::NativeView Shell::GetContentView() { |
| 143 if (!web_contents_.get()) | 155 if (!web_contents_.get()) |
| 144 return NULL; | 156 return NULL; |
| 145 return web_contents_->GetNativeView(); | 157 return web_contents_->GetNativeView(); |
| 146 } | 158 } |
| 147 | 159 |
| 160 WebContents* Shell::OpenURLFromTab(WebContents* source, | |
| 161 const OpenURLParams& params) { | |
| 162 // The only one we implement for now. | |
| 163 DCHECK(params.disposition == CURRENT_TAB); | |
| 164 source->GetController().LoadURL( | |
| 165 params.url, params.referrer, params.transition, std::string()); | |
| 166 return source; | |
| 167 } | |
| 168 | |
| 148 void Shell::LoadingStateChanged(WebContents* source) { | 169 void Shell::LoadingStateChanged(WebContents* source) { |
| 149 UpdateNavigationControls(); | 170 UpdateNavigationControls(); |
| 150 PlatformSetIsLoading(source->IsLoading()); | 171 PlatformSetIsLoading(source->IsLoading()); |
| 151 } | 172 } |
| 152 | 173 |
| 174 void Shell::CloseContents(WebContents* source) { | |
| 175 Close(); | |
| 176 } | |
| 177 | |
| 153 void Shell::WebContentsCreated(WebContents* source_contents, | 178 void Shell::WebContentsCreated(WebContents* source_contents, |
| 154 int64 source_frame_id, | 179 int64 source_frame_id, |
| 155 const GURL& target_url, | 180 const GURL& target_url, |
| 156 WebContents* new_contents) { | 181 WebContents* new_contents) { |
| 157 CreateShell(new_contents); | 182 CreateShell(new_contents); |
| 158 } | 183 } |
| 159 | 184 |
| 160 void Shell::DidNavigateMainFramePostCommit(WebContents* web_contents) { | 185 void Shell::DidNavigateMainFramePostCommit(WebContents* web_contents) { |
| 161 PlatformSetAddressBarURL(web_contents->GetURL()); | 186 PlatformSetAddressBarURL(web_contents->GetURL()); |
| 162 } | 187 } |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 190 Details<std::pair<NavigationEntry*, bool> >(details).ptr(); | 215 Details<std::pair<NavigationEntry*, bool> >(details).ptr(); |
| 191 | 216 |
| 192 if (title->first) { | 217 if (title->first) { |
| 193 string16 text = title->first->GetTitle(); | 218 string16 text = title->first->GetTitle(); |
| 194 PlatformSetTitle(text); | 219 PlatformSetTitle(text); |
| 195 } | 220 } |
| 196 } | 221 } |
| 197 } | 222 } |
| 198 | 223 |
| 199 } // namespace content | 224 } // namespace content |
| OLD | NEW |