Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(70)

Side by Side Diff: chrome/browser/android/dev_tools_server.cc

Issue 542953002: Do NULL checks on TabAndroids retrieved from the model (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: style Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "chrome/browser/android/dev_tools_server.h" 5 #include "chrome/browser/android/dev_tools_server.h"
6 6
7 #include <pwd.h> 7 #include <pwd.h>
8 #include <cstring> 8 #include <cstring>
9 9
10 #include "base/android/jni_string.h" 10 #include "base/android/jni_string.h"
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 181
182 virtual scoped_refptr<DevToolsAgentHost> GetAgentHost() const OVERRIDE { 182 virtual scoped_refptr<DevToolsAgentHost> GetAgentHost() const OVERRIDE {
183 TabModel* model; 183 TabModel* model;
184 int index; 184 int index;
185 if (!FindTab(&model, &index)) 185 if (!FindTab(&model, &index))
186 return NULL; 186 return NULL;
187 WebContents* web_contents = model->GetWebContentsAt(index); 187 WebContents* web_contents = model->GetWebContentsAt(index);
188 if (!web_contents) { 188 if (!web_contents) {
189 // The tab has been pushed out of memory, pull it back. 189 // The tab has been pushed out of memory, pull it back.
190 TabAndroid* tab = model->GetTabAt(index); 190 TabAndroid* tab = model->GetTabAt(index);
191 if (!tab)
192 return NULL;
193
191 tab->LoadIfNeeded(); 194 tab->LoadIfNeeded();
192 web_contents = model->GetWebContentsAt(index); 195 web_contents = model->GetWebContentsAt(index);
193 if (!web_contents) 196 if (!web_contents)
194 return NULL; 197 return NULL;
195 } 198 }
196 return DevToolsAgentHost::GetOrCreateFor(web_contents); 199 return DevToolsAgentHost::GetOrCreateFor(web_contents);
197 } 200 }
198 201
199 virtual bool Activate() const OVERRIDE { 202 virtual bool Activate() const OVERRIDE {
200 TabModel* model; 203 TabModel* model;
(...skipping 23 matching lines...) Expand all
224 : TargetBase(base::UTF16ToUTF8(title), url), 227 : TargetBase(base::UTF16ToUTF8(title), url),
225 tab_id_(tab_id) { 228 tab_id_(tab_id) {
226 } 229 }
227 230
228 bool FindTab(TabModel** model_result, int* index_result) const { 231 bool FindTab(TabModel** model_result, int* index_result) const {
229 for (TabModelList::const_iterator iter = TabModelList::begin(); 232 for (TabModelList::const_iterator iter = TabModelList::begin();
230 iter != TabModelList::end(); ++iter) { 233 iter != TabModelList::end(); ++iter) {
231 TabModel* model = *iter; 234 TabModel* model = *iter;
232 for (int i = 0; i < model->GetTabCount(); ++i) { 235 for (int i = 0; i < model->GetTabCount(); ++i) {
233 TabAndroid* tab = model->GetTabAt(i); 236 TabAndroid* tab = model->GetTabAt(i);
234 if (tab->GetAndroidId() == tab_id_) { 237 if (tab && tab->GetAndroidId() == tab_id_) {
235 *model_result = model; 238 *model_result = model;
236 *index_result = i; 239 *index_result = i;
237 return true; 240 return true;
238 } 241 }
239 } 242 }
240 } 243 }
241 return false; 244 return false;
242 } 245 }
243 246
244 const int tab_id_; 247 const int tab_id_;
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 virtual void EnumerateTargets(TargetCallback callback) OVERRIDE { 359 virtual void EnumerateTargets(TargetCallback callback) OVERRIDE {
357 TargetList targets; 360 TargetList targets;
358 361
359 // Enumerate existing tabs, including the ones with no WebContents. 362 // Enumerate existing tabs, including the ones with no WebContents.
360 std::set<WebContents*> tab_web_contents; 363 std::set<WebContents*> tab_web_contents;
361 for (TabModelList::const_iterator iter = TabModelList::begin(); 364 for (TabModelList::const_iterator iter = TabModelList::begin();
362 iter != TabModelList::end(); ++iter) { 365 iter != TabModelList::end(); ++iter) {
363 TabModel* model = *iter; 366 TabModel* model = *iter;
364 for (int i = 0; i < model->GetTabCount(); ++i) { 367 for (int i = 0; i < model->GetTabCount(); ++i) {
365 TabAndroid* tab = model->GetTabAt(i); 368 TabAndroid* tab = model->GetTabAt(i);
369 if (!tab)
370 continue;
371
366 WebContents* web_contents = model->GetWebContentsAt(i); 372 WebContents* web_contents = model->GetWebContentsAt(i);
367 if (web_contents) { 373 if (web_contents) {
368 tab_web_contents.insert(web_contents); 374 tab_web_contents.insert(web_contents);
369 targets.push_back(TabTarget::CreateForWebContents(tab->GetAndroidId(), 375 targets.push_back(TabTarget::CreateForWebContents(tab->GetAndroidId(),
370 web_contents)); 376 web_contents));
371 } else { 377 } else {
372 targets.push_back(TabTarget::CreateForUnloadedTab(tab->GetAndroidId(), 378 targets.push_back(TabTarget::CreateForUnloadedTab(tab->GetAndroidId(),
373 tab->GetTitle(), 379 tab->GetTitle(),
374 tab->GetURL())); 380 tab->GetURL()));
375 } 381 }
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 jlong server, 544 jlong server,
539 jboolean enabled, 545 jboolean enabled,
540 jboolean allow_debug_permission) { 546 jboolean allow_debug_permission) {
541 DevToolsServer* devtools_server = reinterpret_cast<DevToolsServer*>(server); 547 DevToolsServer* devtools_server = reinterpret_cast<DevToolsServer*>(server);
542 if (enabled) { 548 if (enabled) {
543 devtools_server->Start(allow_debug_permission); 549 devtools_server->Start(allow_debug_permission);
544 } else { 550 } else {
545 devtools_server->Stop(); 551 devtools_server->Stop();
546 } 552 }
547 } 553 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698