summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_tabs_module.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/extensions/extension_tabs_module.cc')
-rw-r--r--chrome/browser/extensions/extension_tabs_module.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/chrome/browser/extensions/extension_tabs_module.cc b/chrome/browser/extensions/extension_tabs_module.cc
index 36cf400..a006a68 100644
--- a/chrome/browser/extensions/extension_tabs_module.cc
+++ b/chrome/browser/extensions/extension_tabs_module.cc
@@ -19,6 +19,7 @@
#include "chrome/browser/renderer_host/render_view_host_delegate.h"
#include "chrome/browser/tab_contents/navigation_entry.h"
#include "chrome/browser/tab_contents/tab_contents.h"
+#include "chrome/browser/tabs/tab_strip_model.h"
#include "chrome/browser/window_sizer.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/extensions/extension_error_utils.h"
@@ -559,6 +560,12 @@ bool UpdateTabFunction::RunImpl() {
&error_))
return false;
+ if (tab_strip->IsTabPinned(tab_index)) {
+ // Don't allow changing the url of pinned tabs.
+ error_ = keys::kCannotUpdatePinnedTab;
+ return false;
+ }
+
NavigationController& controller = contents->controller();
// TODO(rafaelw): handle setting remaining tab properties:
@@ -707,6 +714,13 @@ bool RemoveTabFunction::RunImpl() {
if (!GetTabById(tab_id, profile(), &browser, NULL, &contents, NULL, &error_))
return false;
+ int tab_index = browser->GetIndexOfController(&contents->controller());
+ if (browser->tabstrip_model()->IsPhantomTab(tab_index)) {
+ // Don't allow closing phantom tabs.
+ error_ = keys::kCannotRemovePhantomTab;
+ return false;
+ }
+
browser->CloseTabContents(contents);
return true;
}
@@ -855,6 +869,13 @@ bool DetectTabLanguageFunction::RunImpl() {
return false;
}
+ if (contents->controller().needs_reload()) {
+ // If the tab hasn't been loaded, such as happens with phantom tabs, don't
+ // wait for the tab to load, instead return.
+ error_ = keys::kCannotDetermineLanguageOfUnloadedTab;
+ return false;
+ }
+
AddRef(); // Balanced in GotLanguage()
NavigationEntry* entry = contents->controller().GetActiveEntry();