Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "extensions/browser/guest_view/guest_view_base.h" | 5 #include "extensions/browser/guest_view/guest_view_base.h" |
| 6 | 6 |
| 7 #include "base/lazy_instance.h" | 7 #include "base/lazy_instance.h" |
| 8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
| 9 #include "content/public/browser/render_frame_host.h" | 9 #include "content/public/browser/render_frame_host.h" |
| 10 #include "content/public/browser/render_process_host.h" | 10 #include "content/public/browser/render_process_host.h" |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 101 } | 101 } |
| 102 | 102 |
| 103 void GuestViewBase::Init(const std::string& embedder_extension_id, | 103 void GuestViewBase::Init(const std::string& embedder_extension_id, |
| 104 content::WebContents* embedder_web_contents, | 104 content::WebContents* embedder_web_contents, |
| 105 const base::DictionaryValue& create_params, | 105 const base::DictionaryValue& create_params, |
| 106 const WebContentsCreatedCallback& callback) { | 106 const WebContentsCreatedCallback& callback) { |
| 107 if (initialized_) | 107 if (initialized_) |
| 108 return; | 108 return; |
| 109 initialized_ = true; | 109 initialized_ = true; |
| 110 | 110 |
| 111 extensions::Feature* feature = | 111 Feature* feature = |
| 112 extensions::FeatureProvider::GetAPIFeatures()->GetFeature( | 112 FeatureProvider::GetAPIFeatures()->GetFeature( |
|
Fady Samuel
2014/08/12 21:25:30
Move to previous line?
Xi Han
2014/08/12 21:53:48
Done.
| |
| 113 GetAPINamespace()); | 113 GetAPINamespace()); |
| 114 CHECK(feature); | 114 CHECK(feature); |
| 115 | 115 |
| 116 extensions::ProcessMap* process_map = | 116 ProcessMap* process_map = ProcessMap::Get(browser_context()); |
| 117 extensions::ProcessMap::Get(browser_context()); | |
| 118 CHECK(process_map); | 117 CHECK(process_map); |
| 119 | 118 |
| 120 const extensions::Extension* embedder_extension = | 119 const Extension* embedder_extension = |
| 121 extensions::ExtensionRegistry::Get(browser_context_) | 120 ExtensionRegistry::Get(browser_context_) |
|
Fady Samuel
2014/08/12 21:25:30
Move to previous line?
Xi Han
2014/08/12 21:53:49
Done.
| |
| 122 ->enabled_extensions() | 121 ->enabled_extensions() |
| 123 .GetByID(embedder_extension_id); | 122 .GetByID(embedder_extension_id); |
| 124 int embedder_process_id = | 123 int embedder_process_id = |
| 125 embedder_web_contents->GetRenderProcessHost()->GetID(); | 124 embedder_web_contents->GetRenderProcessHost()->GetID(); |
| 126 | 125 |
| 127 extensions::Feature::Availability availability = | 126 Feature::Availability availability = |
| 128 feature->IsAvailableToContext( | 127 feature->IsAvailableToContext( |
| 129 embedder_extension, | 128 embedder_extension, |
| 130 process_map->GetMostLikelyContextType(embedder_extension, | 129 process_map->GetMostLikelyContextType(embedder_extension, |
| 131 embedder_process_id), | 130 embedder_process_id), |
| 132 embedder_web_contents->GetLastCommittedURL()); | 131 embedder_web_contents->GetLastCommittedURL()); |
| 133 if (!availability.is_available()) { | 132 if (!availability.is_available()) { |
| 134 callback.Run(NULL); | 133 callback.Run(NULL); |
| 135 return; | 134 return; |
| 136 } | 135 } |
| 137 | 136 |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 397 if (!in_extension()) { | 396 if (!in_extension()) { |
| 398 NOTREACHED(); | 397 NOTREACHED(); |
| 399 return; | 398 return; |
| 400 } | 399 } |
| 401 | 400 |
| 402 if (!attached()) { | 401 if (!attached()) { |
| 403 pending_events_.push_back(linked_ptr<Event>(event_ptr.release())); | 402 pending_events_.push_back(linked_ptr<Event>(event_ptr.release())); |
| 404 return; | 403 return; |
| 405 } | 404 } |
| 406 | 405 |
| 407 extensions::EventFilteringInfo info; | 406 EventFilteringInfo info; |
| 408 info.SetInstanceID(view_instance_id_); | 407 info.SetInstanceID(view_instance_id_); |
| 409 scoped_ptr<base::ListValue> args(new base::ListValue()); | 408 scoped_ptr<base::ListValue> args(new base::ListValue()); |
| 410 args->Append(event->GetArguments().release()); | 409 args->Append(event->GetArguments().release()); |
| 411 | 410 |
| 412 extensions::EventRouter::DispatchEvent( | 411 EventRouter::DispatchEvent( |
| 413 embedder_web_contents_, | 412 embedder_web_contents_, |
| 414 browser_context_, | 413 browser_context_, |
| 415 embedder_extension_id_, | 414 embedder_extension_id_, |
| 416 event->name(), | 415 event->name(), |
| 417 args.Pass(), | 416 args.Pass(), |
| 418 extensions::EventRouter::USER_GESTURE_UNKNOWN, | 417 EventRouter::USER_GESTURE_UNKNOWN, |
| 419 info); | 418 info); |
| 420 } | 419 } |
| 421 | 420 |
| 422 void GuestViewBase::SendQueuedEvents() { | 421 void GuestViewBase::SendQueuedEvents() { |
| 423 if (!attached()) | 422 if (!attached()) |
| 424 return; | 423 return; |
| 425 while (!pending_events_.empty()) { | 424 while (!pending_events_.empty()) { |
| 426 linked_ptr<Event> event_ptr = pending_events_.front(); | 425 linked_ptr<Event> event_ptr = pending_events_.front(); |
| 427 pending_events_.pop_front(); | 426 pending_events_.pop_front(); |
| 428 DispatchEventToEmbedder(event_ptr.release()); | 427 DispatchEventToEmbedder(event_ptr.release()); |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 441 return; | 440 return; |
| 442 } | 441 } |
| 443 InitWithWebContents(embedder_extension_id, | 442 InitWithWebContents(embedder_extension_id, |
| 444 embedder_render_process_id, | 443 embedder_render_process_id, |
| 445 guest_web_contents); | 444 guest_web_contents); |
| 446 callback.Run(guest_web_contents); | 445 callback.Run(guest_web_contents); |
| 447 } | 446 } |
| 448 | 447 |
| 449 // static | 448 // static |
| 450 void GuestViewBase::RegisterGuestViewTypes() { | 449 void GuestViewBase::RegisterGuestViewTypes() { |
| 451 extensions::ExtensionsAPIClient::Get()->RegisterGuestViewTypes(); | 450 ExtensionsAPIClient::Get()->RegisterGuestViewTypes(); |
| 452 } | 451 } |
| 453 | 452 |
| 454 } // namespace extensions | 453 } // namespace extensions |
| OLD | NEW |