let win_to_user_window (wr: win_ref) (b: b)
  : user_window =
    let w = win_assoc_valid wr b in
    let u = (page_assoc_valid w.win_page b).page_location in
    let has_url (_, w) =
      (page_assoc_valid w.win_page b).page_location = u
    in
    let windows' = List.filter has_url b.browser_windows in
    let rec find wr ws n =
      begin match ws with
      | (wr', _) :: _ when wr' = wr -> n
      | _ :: ws' -> find wr ws' (succ n)
      | _ -> assert false
      end
    in
    User_window(u, find wr windows' 0)