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

Side by Side Diff: chrome/test/automation/automation_handle_tracker.cc

Issue 223163003: Remove the remaining automation-based tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 6 years, 8 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/test/automation/automation_handle_tracker.h"
6
7 #include "chrome/common/automation_messages.h"
8 #include "chrome/test/automation/automation_proxy.h"
9
10 AutomationResourceProxy::AutomationResourceProxy(
11 AutomationHandleTracker* tracker, AutomationMessageSender* sender,
12 AutomationHandle handle)
13 : handle_(handle),
14 tracker_(tracker),
15 sender_(sender),
16 is_valid_(true) {
17 tracker_->Add(this);
18 }
19
20 AutomationResourceProxy::~AutomationResourceProxy() {
21 if (tracker_)
22 tracker_->Remove(this);
23 }
24
25 AutomationHandleTracker::AutomationHandleTracker() : channel_(NULL) {}
26
27 AutomationHandleTracker::~AutomationHandleTracker() {
28 // Tell any live objects that the tracker is going away so they don't try to
29 // call us when they are being destroyed.
30 for (HandleToObjectMap::iterator iter = handle_to_object_.begin();
31 iter != handle_to_object_.end(); ++iter) {
32 iter->second->Invalidate();
33 }
34 }
35
36 void AutomationHandleTracker::Add(AutomationResourceProxy* proxy) {
37 base::AutoLock lock(map_lock_);
38 handle_to_object_.insert(MapEntry(proxy->handle(), proxy));
39 }
40
41 void AutomationHandleTracker::Remove(AutomationResourceProxy* proxy) {
42 base::AutoLock lock(map_lock_);
43 HandleToObjectMap::iterator iter = handle_to_object_.find(proxy->handle());
44 if (iter != handle_to_object_.end()) {
45 AutomationHandle proxy_handle = proxy->handle();
46 handle_to_object_.erase(iter);
47 if (channel_)
48 channel_->Send(new AutomationMsg_HandleUnused(proxy_handle));
49 }
50 }
51
52 void AutomationHandleTracker::InvalidateHandle(AutomationHandle handle) {
53 // Called in background thread.
54 base::AutoLock lock(map_lock_);
55 HandleToObjectMap::iterator iter = handle_to_object_.find(handle);
56 if (iter != handle_to_object_.end()) {
57 scoped_refptr<AutomationResourceProxy> proxy = iter->second;
58 handle_to_object_.erase(iter);
59 proxy->Invalidate();
60 }
61 }
62
63 AutomationResourceProxy* AutomationHandleTracker::GetResource(
64 AutomationHandle handle) {
65 base::AutoLock lock(map_lock_);
66 HandleToObjectMap::iterator iter = handle_to_object_.find(handle);
67 if (iter == handle_to_object_.end())
68 return NULL;
69
70 iter->second->AddRef();
71 return iter->second.get();
72 }
OLDNEW
« no previous file with comments | « chrome/test/automation/automation_handle_tracker.h ('k') | chrome/test/automation/automation_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698