def PrintRFHM(rfhm, prefix): parent = rfhm['frame_tree_node_']['parent_'] parent_addr = "NULL" if parent != 0: parent_addr = parent['render_manager_'].address print prefix + "RFHM[" + str(rfhm.address) + "]: child of [" + str(parent_addr) + "]" rfh = chromium.scoped_ptr(rfhm['render_frame_host_']).get() current_si = GetSiteInstance(rfh['render_view_host_']['instance_']['ptr_']) print prefix + " current_rfh: " + str(rfhm['render_frame_host_']) + " site: " + str(current_si['site_']['spec_']) pending_rfh = chromium.scoped_ptr(rfhm['pending_render_frame_host_']).get() if pending_rfh != 0: pending_si = GetSiteInstance(pending_rfh['render_view_host_']['instance_']['ptr_']) print prefix + " pending_rfh: " + str(rfhm['pending_render_frame_host_']) + " site: " + str(pending_si['site_']['spec_']) else: print prefix + " pending_rfh: " + str(rfhm['pending_render_frame_host_']) PrintProxies(rfhm, prefix)
def invoke(self, arg, from_tty): arg_list = gdb.string_to_argv(arg) tree = gdb.parse_and_eval(arg_list[0]) root = tree['root_'] ptr = chromium.scoped_ptr(root).get() q = deque() ftn = ptr while ftn is not None: VisitNode(ftn) v = stl.vector(ftn['children_']['v_']) for i in range(0, v.size): q.append(v.at(i)) try: ftn = q.pop() except IndexError: ftn = None; break;